![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравствуйте! я новичёк в делфи!
есть таблица с 4-ми полями номер, ***название***,кол-во,кабинет при sql.Add('select * from organized where Title like'+help2); выводятся записи с ***названием*** которое вводишь в edit1 но нужно ещё в edit2 поставить цифру , выводятся все поля с номером кабинета(это работает) и вот тут загвоздка, как сделать чтоб при заполнении первoго edit1 показывали записи только с определённым кабинетом? т.е. в edit2 написал 5 и поиск шел только по записям где в поле кабинет указано "5" что-то типа вот этого sql.Add('select * from organized where Title like'+help2 +'and classroom'+edit2.Text); как edit2 прицепить к полю "кабинет"? вроде доступно написал, спасибо! sql.Add('select * from organized where Title like'+help2+ classroom:=edit2.Text); может так? ещё способ придумал, но ошибку выдаёт Код:
procedure TForm1.Edit1Change(Sender: TObject);
var help1, help2, help3, help4: string;
begin
//Edit2.Text:='';
help1:='%'+ Form1.Edit1.Text+'%';
help2:=Quotedstr(help1);
help3:=Form1.Edit2.Text;
help4:=Quotedstr(help1);
With Form1.ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('select * from organized where Title like'+help2+' and classroom'+help4);
open;
end;
end;Последний раз редактировалось lmikle, 22.06.2015 в 06:06. |
|
#2
|
||||
|
||||
|
В Дельфи есть замечательное средство - отладка называется. Установите точку останова на строчке:
Код:
open; Думаю вам все станет понятно. |
|
#3
|
|||
|
|||
|
здравствуйте написано гуру...
прочтите своё сообщение и скажите где помощь? я сам 11 часов тыкал и получилось вот какая должна быть помощь: Код:
procedure TForm1.Edit1Change(Sender: TObject); begin ADOQuery1.SQL.Clear; ADOQuery1.SQL.Text := 'SELECT * FROM organized WHERE Title Like "%' + Edit1.Text + '%"'+ 'and classroom like" + Edit2"'; ADOQuery1.Open; end; надеюсь в будущем будет адекватная помощь. Спасибо! Последний раз редактировалось lmikle, 22.06.2015 в 06:07. |
|
#4
|
||||
|
||||
|
И вам не хворать уважаемый неофит,
хорошо бы для начала правила форума почитать, научиться тегами пользоваться, да и вопросы попробовать адекватно задавать, а то иначе желание помогать вам исчезает начисто Последний раз редактировалось Alegun, 22.06.2015 в 00:36. Причина: наркалым тунге |
|
#5
|
|||
|
|||
|
может Вы всегда и правы(от Ивана Грозного тоже толка не было, зато всегда прав)
буду код в кавычки брать куда уж адекватней? как для ребёнка объяснил какое желание, если не умеешь?(если бы знал, то написал как надо, или хоть какой то вопрос задал, что я хочу сделать!) |
|
#6
|
||||
|
||||
|
Я предложил вам способ решения проблемы, а вы видимо ожидали готового ответа. На мой взгляд, мой вариант лучше т.к. позволяет решить проблему и научить вас новому и полезному.
|
|
#7
|
|||
|
|||
|
Я в дельфи почти ноль, для меня подсказка, готовый код. а можете написать код, который лучше этого? просто я что в интернете нашёл , то и использовал, спасибо конечно, но если помогать то по полной!
|
|
#8
|
||||
|
||||
|
Альтернативный вариант - пожалуйста:
Код:
AdoQuery1.Sql.Text := 'select * from organized where Title like :Param1 and classroom like :Param2'; AdoQuery1.Parameters['Param1'].Values := Edit1.Text; AdoQuery1.Parameters['Param2'].Values := Edit2.Text; AdoQuery1.Open; |
|
#9
|
|||
|
|||
|
а подскажите у меня на ['Param1'] ругается
если надо их объявить то тоже не работает Код:
procedure TForm1.Edit1Change(Sender: TObject);
var Param1, Param2: string;
begin
ADOQuery1.SQL.Clear;
AdoQuery1.Sql.Text := 'select * from organized where Title like :Param1 and classroom like :Param2';
AdoQuery1.Parameters['Param1'].Values := Edit1.Text;
AdoQuery1.Parameters['Param2'].Values := Edit2.Text;
AdoQuery1.Open;
end; |
|
#10
|
|||
|
|||
|
вот так ошибки не выдаёт, но и записи при вводе в edit1 не выводит ,
Код:
ADOQuery1.SQL.Clear; AdoQuery1.Sql.Text := 'select * from organized where Title like :Edit1.Text and classroom like :Edit2.Text'; AdoQuery1.Open; |
|
#11
|
||||
|
||||
|
Упс! Че-то я накосячил. Видимо переходы с одного диалекта на другой так повлияли. Поправьте:
Код:
AdoQuery1.Parameters.ParamValues['Param1'] := Edit1.Text; AdoQuery1.Parameters.ParamValues['Param2'] := Edit2.Text; |
|
#12
|
||||
|
||||
|
У вас он не рабочий т.к. Edit1.Text и Edit2 в строке запроса это не едиты, а просто текст, раньше было правильнее с плюсами и кавычками
|
|
#13
|
||||
|
||||
|
Дополнительно ничего объявлять не надо. Delphi при разборе запроса автоматически создаст все параметры которые упоминаются в запросе. В моем примере их 2, но может быть и намного больше. Параметры почти на 100% могут заменить формирование запроса строкой, так как вы это сделали в начале. Но все-же остаются иногда случаи, когда параметры невозможно применить. Например большинство sql-диалектов ругаются матерно, если параметром является имя таблицы или поля в запросе.
|
|
#14
|
||||
|
||||
|
Цитата:
![]() |
|
#15
|
|||
|
|||
|
странно в edit1 ввожу букву, сразу все строчки в dbgrid пустые
Код:
procedure TForm1.Edit1Change(Sender: TObject);
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
AdoQuery1.Sql.Text := 'select * from organized where Title like :Param1 and classroom like :Param2';
AdoQuery1.Parameters.ParamValues['Param1'] := Edit1.Text;
AdoQuery1.Parameters.ParamValues['Param2'] := Edit2.Text;
AdoQuery1.Open;
end;но вот так всё работает Код:
procedure TForm1.Edit1Change(Sender: TObject);
var help1, help2, help3, help4: string;
var Param1, Param2: string;
begin
Edit2.Text:='';
help1:='%'+ Form1.Edit1.Text+'%';
help2:=Quotedstr(help1);
help3:=Form1.Edit2.Text;
help4:=Quotedstr(help3);
With Form1.ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('select * from organized where Title like'+help2);
open;
end;
end;если у Вас есть время может добьём эту тему? |
![]() |
|
| Опции темы | Поиск в этой теме |
| Опции просмотра | |
|
|