![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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
|
||||
|
||||
|
У него парадокс, потому не процент а звездочка, смотрите внимательнее мой пост.
|