|
|
Регистрация | << Правила форума >> | 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; если у Вас есть время может добьём эту тему? |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|