Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2009, 19:49   #1
crit
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 121
По умолчанию Фильтровка

В общем на форме DBGrid и два ComboBox'а. DBGrid заполняется из базы, в ней ФИО,РАЗдЕл и другие. Проблема в том что не получается сделать фильтровочку по разделу. Значит в Combobox1 выбирается ФИО ,и в DBGrid отображается ФИО, кторые выбраны в этом комбобоксе(напрнимер выбран Иванов Сергей иванович и в гриде отобразятся все Ивановы Сергеи ивановичи), дальше нужно сделать выборку в следующем комбобоксе по Разделу но по той же фамилии которая была уже выбрана до этоого в комбобоксе 1. это программа-тест,тоесть человек может пройти нескольок раз тест но по разным разделам или несколько раз один и тот же.
Делаю так:
Код:
procedure TForm15.FormActivate(Sender: TObject);
begin
    OraQuery5.SQL.Text := 'SELECT  DISTINCT  FIO,TABEL,CEH,DOLJ,VREMYA,RAZD,REZ,OCOBSH,OCRUK FROM KURS_OC order by FIO';
  OraQuery5.Open;
  WHILE(OraQuery5.Eof<>true) do
    begin
    ComboBox1.Items.Add( OraQuery5.FieldByName('FIO').AsString);
    ComboBox2.Items.Add( OraQuery5.FieldByName('RAZD').AsString);
    OraQuery5.Next;

procedure TForm15.ComboBox1Select(Sender: TObject);
begin
OraQuery5.SQL.Text := 'SELECT  DISTINCT  FIO,CEH,DOLJ,tabel,VREMYA,REZ,OCOBSH,OCRUK FROM KURS_OC WHERE FIO=' + Quotedstr(ComboBox1.Text);
  OraQuery5.Open;

Procedure TForm15.ComboBox2Select(Sender: TObject);
begin
OraQuery5.SQL.Text := 'SELECT  FIO,CEH,DOLJ,tabel,VREMYA,RAZD,REZ,OCOBSH,OCRUK FROM KURS_OC WHERE RAZD=' + Quotedstr(ComboBox2.Text);
  OraQuery5.Open;
но тут получается что я щелкаю в комбобоксе1 нужную ФИО, выводятся фамилии в гриде, дальще я хочу посмотрреть по разделам,выбриаю в комбоксе2 раздел и тут в гриде выскакивают уже все ФИО а не та которую выбрал в комбобоксе 1.

Последний раз редактировалось crit; 05.06.2009 в 20:19.
crit вне форума Ответить с цитированием
Старый 05.06.2009, 19:58   #2
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

Дак вы добавте в запросе с ComboBox2 еще отбор и по ComboBox1.

Код:
OraQuery5.SQL.Text := 'SELECT  FIO,CEH,DOLJ,tabel,VREMYA,RAZD,REZ,OCOBSH,OCRUK FROM KURS_OC WHERE RAZD=' + 
Quotedstr(ComboBox2.Text) + ' and FIO=' + Quotedstr(ComboBox1.Text);
Evgeniy26 вне форума Ответить с цитированием
Старый 05.06.2009, 20:27   #3
crit
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 121
По умолчанию

спасибо большое=)
crit вне форума Ответить с цитированием
Старый 05.06.2009, 20:32   #4
crit
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 121
По умолчанию

а как вернуться что было до фильтовки в гриде??
crit вне форума Ответить с цитированием
Старый 05.06.2009, 20:34   #5
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

К какому моменту именно?
Evgeniy26 вне форума Ответить с цитированием
Старый 05.06.2009, 20:42   #6
crit
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 121
По умолчанию

да вообще до фильтровки по имени
crit вне форума Ответить с цитированием
Старый 05.06.2009, 20:59   #7
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

Код:
OraQuery5.Clear;
OraQuery5.SQL.Add('SELECT  DISTINCT  FIO,TABEL,CEH,DOLJ,VREMYA,RAZD,REZ,OCOBSH,OCRUK FROM KURS_OC order by FIO');
OraQuery5.Open;
Добавте например в ComboBox "Показать все" и если выбрано "Показать все" тогда применяете код выше или в обработчик кнопки только тогда свойства Text ComboBox - ов сбросьте.
Evgeniy26 вне форума Ответить с цитированием
Старый 05.06.2009, 21:09   #8
crit
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 121
По умолчанию

мм.. а как условие прописать что типа если выбран первый итем " показать все" то выполняем запрос
crit вне форума Ответить с цитированием
Старый 05.06.2009, 21:21   #9
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

Например добавляйте в ComboBox1 "Показать все" в начале или в конце
Код:
procedure TForm15.ComboBox1Select(Sender: TObject);
begin
 if ComboBox1.ItemIndex = 0 then//Если в конце ComboBox1.ItemIndex := ComboBox1.Items.Count - 1
 begin
   OraQuery5.Clear;
   OraQuery5.SQL.Add('SELECT  DISTINCT         FIO,TABEL,CEH,DOLJ,VREMYA,RAZD,REZ,OCOBSH,OCRUK FROM KURS_OC   order by FIO');
   OraQuery5.Open;
   ComboBox2.ItemIndex := -1;
  end else
  begin
    //ищем фамилию
  end;
end;
Evgeniy26 вне форума Ответить с цитированием
Старый 05.06.2009, 21:33   #10
crit
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 121
По умолчанию

спасибо!!!
crit вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фильтровка и редактирование БД rainbow БД в Delphi 1 17.10.2008 12:44