Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.06.2009, 02:24
murzik murzik вне форума
Прохожий
 
Регистрация: 11.06.2009
Сообщения: 4
Репутация: 10
По умолчанию Помогите с запросом

ЗДравствуйте!
Помогите пожалуйста.
БД - журнал для школьников с полями: ФИО, четверти и экзамен. Нужен SQL запрос, чтобы введя условия выборки в соответствующие едиты, по нажатию кнопки результат отображался в гриде.

Понимаю что это самое простетское, но сам я никогда наверно в это не вьеду

Заранее спасибо! =)
Ответить с цитированием
  #2  
Старый 11.06.2009, 06:36
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Считаем, что на форме есть 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  
Старый 14.06.2009, 02:53
murzik murzik вне форума
Прохожий
 
Регистрация: 11.06.2009
Сообщения: 4
Репутация: 10
По умолчанию

Извине я забыл сказать что использую 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  
Старый 14.06.2009, 04:06
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

отсутствует оператор and между условиями, должно быть так:
Код:
 SQL.Add('(FIO = ''' +edit1.text + ''') and ');
 SQL.Add('(Klass = ''' +edit2.text + ''')');
А для поиска по неполному значению для поля FIO так:
Код:
 SQL.Add('(FIO like ''' +edit1.text + '*'+''') and ');
 SQL.Add('(Klass = ''' +edit2.text + ''')');
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 14.06.2009, 11:24
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

like без %% использовать бесполезно.
Код:
 SQL.Add('(FIO like ''%' +edit1.text + '%'') and ');
 SQL.Add('(Klass = ''' +edit2.text + ''')');
У тебя Вместо % звёздочка была, он так ругнётся.
И их с обеих сторон надо лепить.
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #6  
Старый 14.06.2009, 12:31
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

У него парадокс, потому не процент а звездочка, смотрите внимательнее мой пост.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #7  
Старый 14.06.2009, 13:05
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

А, сорри, не заметил
ЗЫ: Хотя, АДО лучше. Ибо БДЕ не у всех работать будет.
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #8  
Старый 14.06.2009, 14:13
murzik murzik вне форума
Прохожий
 
Регистрация: 11.06.2009
Сообщения: 4
Репутация: 10
По умолчанию

Спасибо вам большое!
Только вот с (*) работать нехочет, а с (%) все гуд работает =)
а с переносом моей базы на другой компьютер будет очень проблемно?
Ответить с цитированием
  #9  
Старый 14.06.2009, 14:42
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Вот и верь после этого документации. Там для парадокса четко написано *.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #10  
Старый 14.06.2009, 15:16
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Страдалецъ, Верить не документации надо, а личному опыту (сколько уже с SQL работаю, везде %)
murzik, Не очень. Мелькала тема об установке BDE на компах других юзеров. Это всё что надо.
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #11  
Старый 14.06.2009, 16:10
murzik murzik вне форума
Прохожий
 
Регистрация: 11.06.2009
Сообщения: 4
Репутация: 10
По умолчанию

Извините что мучаю вас своими вопросами, но у меня есть еще проблема
Как мне запаролить базу, чтобы ее нельзя было изменять? И желательно чтобы я мог менять пароль на любой другой.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:33.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025