Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi и базы данных

Войти
Регистрация
Восстановить пароль
 
 
kmoiseev
6 / 6 / 0
Регистрация: 04.08.2013
Сообщений: 62
#1

Combobox и БД - Delphi БД

24.12.2013, 01:32. Просмотров 636. Ответов 17
Метки нет (Все метки)

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TForm1.ComboBox2Change(Sender: TObject);
begin
Combobox3.Clear;
 
ADOQuery3.Filtered:=False;
ADOQuery3.Filter:='ID_Doljnost=' + ADOQuery2.FieldByName('ID_Doljnosti').AsString;
ADOQuery3.Filtered:=True;
 
 ADOQuery3.First;
 begin
for i := 0 to ADOQuery3.RecordCount - 1 do
    begin
     Combobox3.Items.Add(ADOQuery3.FieldByName('Тесты').AsString);
     ADOQuery3.Next;
    end;
 end;
 
end;
Пишу такой код сортировки, не работает, пустой combobox.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2013, 01:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Combobox и БД (Delphi БД):

combobox, запись из него в БД и вывод списка из БД в combobox - Delphi БД
Уважаемые форумчане подскажите как сделать так что б в таблицу predmet (2 поля id_predmet-счетчик, Nazvanie_predmeta-текстовый) из ...

Combobox - Delphi
Как сделать чтобы при выборе одного из всплывающих списков "Combobox" становились видимыми определенные кнопки "Button"?

Combobox и БД - Delphi БД
Здравствуйте! После создания новой записи в базе данных за новый 2014 год, на событие onchange combobox'a, которая фильтровала года, стала...

combobox - Delphi БД
На форме есть dbgrid и две вкладки PageControl: добавление и изменение записи. На первой - вводятся данные в некоторые edit и из combobox...

Combobox + like - Delphi БД
Приветствую. Есть большая таблица имен больше 2 тыс записей. на форме имеестся скажем combobox в нем ADOQuery5.SQL.Text := 'SELECT...

Combobox - Delphi БД
Добрый день, есть форма с 2 ComboBox и кнопкой с процедурой вывода отчета через QuickRep. Вот код процедуры на кнопку: procedure...

17
Игорь[Igor]
716 / 471 / 53
Регистрация: 24.12.2008
Сообщений: 3,901
24.12.2013, 02:06 #2
Значит ничего не отфильтровано по данному запросу, вернее нет записи подходящей под условие фильтра
0
kmoiseev
6 / 6 / 0
Регистрация: 04.08.2013
Сообщений: 62
24.12.2013, 11:04  [ТС] #3
Самое интересное, что попробовал сделать через DBLookUpComboBox, вставив тот же код и он отфильтровал. Как бы правильно выразиться: обычный combobox связать с БД, так что ли.
0
Waddonator
962 / 638 / 6
Регистрация: 01.11.2012
Сообщений: 1,445
24.12.2013, 11:26 #4
kmoiseev, у Вас неверно построен цикл прохождения всех записей. При определенных условиях значение RecordCount может принимать значение -1. Поэтому постройте цикл следующим образом:
Delphi
1
2
3
4
5
6
ADOQuery3.First;
while not ADOQuery3.Eof do
  begin
    Combobox3.Items.Add(ADOQuery3.FieldByName('Тесты').AsString);
    ADOQuery3.Next;
  end;
Добавлено через 2 минуты
И проверьте по совету уважаемого Игорь[Igor], действительно ли после фильтрации в таблице остаются записи.
0
kmoiseev
6 / 6 / 0
Регистрация: 04.08.2013
Сообщений: 62
24.12.2013, 13:14  [ТС] #5
Проверил и я увидел страшное . Записи не остаются.

Добавлено через 35 минут
Причем, если afterscroll'ом фильтровать в adoq, то все работает, как в combobox сделать не знаю.
0
Алекcей
304 / 299 / 85
Регистрация: 11.12.2013
Сообщений: 1,536
24.12.2013, 13:22 #6
у Вас часом поле ID_Doljnost не строковое? если строковое, то попробуйте:
Delphi
1
ADOQuery3.Filter:='ID_Doljnost=''' + ADOQuery2.FieldByName('ID_Doljnosti').AsString+'''';
0
kmoiseev
6 / 6 / 0
Регистрация: 04.08.2013
Сообщений: 62
24.12.2013, 13:31  [ТС] #7
Спасибо, попробую, но оно точно числовое.
0
Waddonator
962 / 638 / 6
Регистрация: 01.11.2012
Сообщений: 1,445
24.12.2013, 13:38 #8
kmoiseev, а почему Вы берете данные для фильтрации из ADOQuery2, если выбор идет в ComboBox2?

Добавлено через 5 минут
В этом и есть Ваши ошибка. При заполнении ComboBox2 необходимо вместо процедуры Add использовать AddItem и вместе с отображаемым текстом вносить данные об Id записи. А при выборе элемента в ComboBox2 вытаскивать этот Id и подставлять в фильтр.
0
kmoiseev
6 / 6 / 0
Регистрация: 04.08.2013
Сообщений: 62
24.12.2013, 13:44  [ТС] #9
Спасибо, попробую сейчас исправиться. Посмотрите пожалуйста проект.
0
Вложения
Тип файла: rar Ttest.rar (570.6 Кб, 8 просмотров)
Waddonator
962 / 638 / 6
Регистрация: 01.11.2012
Сообщений: 1,445
24.12.2013, 13:46 #10
kmoiseev, у меня посмотреть не получится. Стоит только D7.
0
kmoiseev
6 / 6 / 0
Регистрация: 04.08.2013
Сообщений: 62
24.12.2013, 13:49  [ТС] #11
А вы .pas через блокнот посмотрите, код не большой, я думаю без проблем уже точно укажите на ошибку.
0
Waddonator
962 / 638 / 6
Регистрация: 01.11.2012
Сообщений: 1,445
24.12.2013, 14:01 #12
Цитата Сообщение от kmoiseev Посмотреть сообщение
я думаю без проблем уже точно укажите на ошибку.
Та я вроде уже казал.
Цитата Сообщение от Waddonator Посмотреть сообщение
При заполнении ComboBox2 необходимо вместо процедуры Add использовать AddItem и вместе с отображаемым текстом вносить данные об Id записи. А при выборе элемента в ComboBox2 вытаскивать этот Id и подставлять в фильтр.
Добавлено через 9 минут
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
procedure TForm1.ComboBox2Click(Sender: TObject);
begin
  Combobox3.Clear;
  ADOQuery3.Filtered:=False;
  ADOQuery3.Filter:='ID_Doljnost=' + IntToStr(integer(ComboBox2.Items.Objects[ComboBox2.ItemIndex]));
  ADOQuery3.Filtered:=True;
  ADOQuery3.First;
  while not ADOQuery3.Eof do
    begin
      Combobox3.AddItem(ADOQuery3.FieldByName('Тесты').AsString, Pointer(ADOQuery3.FieldByName('Id_test').AsInteger));
      ADOQuery3.Next;
    end;
end;
 
procedure TForm1.DBLookupComboBox1Click(Sender: TObject);
begin
  Combobox2.Clear;
  ADOQuery2.Filtered:=False;
  ADOQuery2.Filter:='ID_Podrazdelenie=' + ADOQuery1.FieldByName('ID_Podrazdelenie').AsString;
  ADOQuery2.Filtered:=True;
  ADOQuery2.First;
  while not ADOQuery2.Eof do
    begin
      Combobox2.AddItem(ADOQuery2.FieldByName('Должности').AsString, Pointer(ADOQuery2.FieldByName('ID_Doljnosti').AsInteger));
      ADOQuery2.Next;
    end;
end;
Добавлено через 1 минуту
А процедуру AfterScroll уберите.
1
kmoiseev
6 / 6 / 0
Регистрация: 04.08.2013
Сообщений: 62
24.12.2013, 14:02  [ТС] #13
Спасибо огромное, да это я для проверки смотрел, как в таблице работает.
0
Waddonator
962 / 638 / 6
Регистрация: 01.11.2012
Сообщений: 1,445
24.12.2013, 14:08 #14
kmoiseev, можно еще для "красоты" переводить курсор в ComboBox'е на первую запись, если записи есть. В самом конце процедуры вставьте код:
Delphi
1
2
...
ComboBox3.ItemIndex:=0;
1
kmoiseev
6 / 6 / 0
Регистрация: 04.08.2013
Сообщений: 62
25.12.2013, 01:28  [ТС] #15
Так, выручайте уже все перепробовал.

Загружаю ответы в ListBox, дальше пользователь выделяет строку с ответом и она должна сравниться с результатом в БД.

Как это делаю:
Delphi
1
2
3
if ADOQuery.FieldByName('Правильный').asString = ListBox1.Items.Strings[ListBox1.ItemIndex] then ...
 
// List out bound (-1) говорит, что строка не выбрана, выбирал и программно и в ручную, не понимает.
И цикл писал ListBox1.ItemIndex -1 и прочее, ни чего не помогло.
0
25.12.2013, 01:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2013, 01:28
Привет! Вот еще темы с ответами:

ComboBox - Delphi БД
Добрый день. Помогите разобраться с ComboBox. Есть база данных с различными столбцами. Делаю фильтрацию с использованием ComboBox. В нем...

combobox - Delphi БД
есть два comboboxa, в первом у нас будет специальность врача, то есть выбираем специальность ( дерматолог, кардиолог и т.д.) когда выбираем...

Combobox - Delphi БД
Всем привет. Столкнулась с такой проблемой: Мне необходимо сделать, чтоб при выборе статуса в комбобокс "на ремонте" все данные сохранялись...

Combobox - Delphi
Здравствуйте! Помогите пожалуйста! создал Combobox ввел все данные, хочу чтобы кого выбирают из списка combobox, например "Авто"...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru