![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
ЗДравствуйте!
Помогите пожалуйста. БД - журнал для школьников с полями: ФИО, четверти и экзамен. Нужен SQL запрос, чтобы введя условия выборки в соответствующие едиты, по нажатию кнопки результат отображался в гриде. Понимаю что это самое простетское, но сам я никогда наверно в это не вьеду ![]() Заранее спасибо! =) |
|
#2
|
||||
|
||||
|
Считаем, что на форме есть 3 едита (Edit1,Edit2,Edit3).
Считаем, что на форме есть DBGrid1 который связан с AdoQuery1. Считаем, что на форме есть кнопка (Button1) по нажатию которой отрабатывается запрос. Тогда событие этой кнопки будет таким: Код:
procedure TForm1.Button1Click(Sender: TObject); begin AdoQuery1.Close; AdoQuery1.SQL.Text := 'select * from Journal where Field1=:Edit1 and Field2=:Edit2 and Field3=:Edit3'; AdoQuery1.Parameters.ParamValues['Edit1'] := Edit1.Text; AdoQuery1.Parameters.ParamValues['Edit2'] := Edit2.Text; AdoQuery1.Parameters.ParamValues['Edit3'] := Edit3.Text; AdoQuery1.Open; end; |
|
#3
|
|||
|
|||
|
Извине я забыл сказать что использую TQuery (DBTables).
мне вот посоветовали использовать такой код Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
with Query1 do begin
Close;
SQL.Clear;
SQL.Add('SELECT *');
SQL.Add('FROM "jurnal.db"');
SQL.Add('WHERE');
SQL.Add('(FIO = ''' +edit1.text + ''')');
SQL.Add('(Klass = ''' +edit2.text + ''')');
SQL.Add('ORDER by FIO');
Open;
end; Не могли бы вы сказать что не так. И еще вопросик) хотелось бы еще чтобы результат выводился даже при неполном наборе ФИО в едите. |
|
#4
|
||||
|
||||
|
отсутствует оператор and между условиями, должно быть так:
Код:
SQL.Add('(FIO = ''' +edit1.text + ''') and ');
SQL.Add('(Klass = ''' +edit2.text + ''')');Код:
SQL.Add('(FIO like ''' +edit1.text + '*'+''') and ');
SQL.Add('(Klass = ''' +edit2.text + ''')'); |
|
#5
|
||||
|
||||
|
like без %% использовать бесполезно.
Код:
SQL.Add('(FIO like ''%' +edit1.text + '%'') and ');
SQL.Add('(Klass = ''' +edit2.text + ''')');И их с обеих сторон надо лепить. |
|
#6
|
||||
|
||||
|
У него парадокс, потому не процент а звездочка, смотрите внимательнее мой пост.
|
|
#7
|
||||
|
||||
|
А, сорри, не заметил
![]() ЗЫ: Хотя, АДО лучше. Ибо БДЕ не у всех работать будет. |
|
#8
|
|||
|
|||
|
Спасибо вам большое!
Только вот с (*) работать нехочет, а с (%) все гуд работает =) а с переносом моей базы на другой компьютер будет очень проблемно? |
|
#9
|
||||
|
||||
|
Вот и верь после этого документации. Там для парадокса четко написано *.
![]() |
|
#10
|
||||
|
||||
|
Страдалецъ, Верить не документации надо, а личному опыту (сколько уже с SQL работаю, везде %)
murzik, Не очень. Мелькала тема об установке BDE на компах других юзеров. Это всё что надо. |
|
#11
|
|||
|
|||
|
Извините что мучаю вас своими вопросами, но у меня есть еще проблема
![]() Как мне запаролить базу, чтобы ее нельзя было изменять? И желательно чтобы я мог менять пароль на любой другой. |