Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
6 / 6 / 1
Регистрация: 04.08.2013
Сообщений: 62

Combobox и БД

24.12.2013, 01:32. Показов 1327. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.12.2013, 01:32
Ответы с готовыми решениями:

Combobox в окне с другим фоном. Как убрать белые углы combobox?
Основное окно имеет градиентную заливку фона. Также включены стили windows через манифест. #pragma...

Содержимое второго ComboBox-а должно зависеть от выбранного элемента в первом ComboBox-е
Здраствуйте!У меня такая задачка. У меня есть 2 компонента CombBox. В первом я выбираю запись. А во втором записи дожны формироваться в...

Не получается передать список элементов combobox одной формы в combobox другой
Есть две формы, на главной есть список комбобокс, на доченей тоже есть комбобокс... что в конструкторе второй формы надо написать, чтобы в...

17
 Аватар для Игорь[Igor]
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
24.12.2013, 02:06
Значит ничего не отфильтровано по данному запросу, вернее нет записи подходящей под условие фильтра
0
6 / 6 / 1
Регистрация: 04.08.2013
Сообщений: 62
24.12.2013, 11:04  [ТС]
Самое интересное, что попробовал сделать через DBLookUpComboBox, вставив тот же код и он отфильтровал. Как бы правильно выразиться: обычный combobox связать с БД, так что ли.
0
 Аватар для Waddonator
969 / 644 / 97
Регистрация: 01.11.2012
Сообщений: 1,447
24.12.2013, 11:26
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
6 / 6 / 1
Регистрация: 04.08.2013
Сообщений: 62
24.12.2013, 13:14  [ТС]
Проверил и я увидел страшное . Записи не остаются.

Добавлено через 35 минут
Причем, если afterscroll'ом фильтровать в adoq, то все работает, как в combobox сделать не знаю.
0
554 / 484 / 191
Регистрация: 11.12.2013
Сообщений: 2,507
24.12.2013, 13:22
у Вас часом поле ID_Doljnost не строковое? если строковое, то попробуйте:
Delphi
1
ADOQuery3.Filter:='ID_Doljnost=''' + ADOQuery2.FieldByName('ID_Doljnosti').AsString+'''';
0
6 / 6 / 1
Регистрация: 04.08.2013
Сообщений: 62
24.12.2013, 13:31  [ТС]
Спасибо, попробую, но оно точно числовое.
0
 Аватар для Waddonator
969 / 644 / 97
Регистрация: 01.11.2012
Сообщений: 1,447
24.12.2013, 13:38
kmoiseev, а почему Вы берете данные для фильтрации из ADOQuery2, если выбор идет в ComboBox2?

Добавлено через 5 минут
В этом и есть Ваши ошибка. При заполнении ComboBox2 необходимо вместо процедуры Add использовать AddItem и вместе с отображаемым текстом вносить данные об Id записи. А при выборе элемента в ComboBox2 вытаскивать этот Id и подставлять в фильтр.
0
6 / 6 / 1
Регистрация: 04.08.2013
Сообщений: 62
24.12.2013, 13:44  [ТС]
Спасибо, попробую сейчас исправиться. Посмотрите пожалуйста проект.
Вложения
Тип файла: rar Ttest.rar (570.6 Кб, 9 просмотров)
0
 Аватар для Waddonator
969 / 644 / 97
Регистрация: 01.11.2012
Сообщений: 1,447
24.12.2013, 13:46
kmoiseev, у меня посмотреть не получится. Стоит только D7.
0
6 / 6 / 1
Регистрация: 04.08.2013
Сообщений: 62
24.12.2013, 13:49  [ТС]
А вы .pas через блокнот посмотрите, код не большой, я думаю без проблем уже точно укажите на ошибку.
0
 Аватар для Waddonator
969 / 644 / 97
Регистрация: 01.11.2012
Сообщений: 1,447
24.12.2013, 14:01
Цитата Сообщение от 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
6 / 6 / 1
Регистрация: 04.08.2013
Сообщений: 62
24.12.2013, 14:02  [ТС]
Спасибо огромное, да это я для проверки смотрел, как в таблице работает.
0
 Аватар для Waddonator
969 / 644 / 97
Регистрация: 01.11.2012
Сообщений: 1,447
24.12.2013, 14:08
kmoiseev, можно еще для "красоты" переводить курсор в ComboBox'е на первую запись, если записи есть. В самом конце процедуры вставьте код:
Delphi
1
2
...
ComboBox3.ItemIndex:=0;
1
6 / 6 / 1
Регистрация: 04.08.2013
Сообщений: 62
25.12.2013, 01:28  [ТС]
Так, выручайте уже все перепробовал.

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

Как это делаю:
Delphi
1
2
3
if ADOQuery.FieldByName('Правильный').asString = ListBox1.Items.Strings[ListBox1.ItemIndex] then ...
 
// List out bound (-1) говорит, что строка не выбрана, выбирал и программно и в ручную, не понимает.
И цикл писал ListBox1.ItemIndex -1 и прочее, ни чего не помогло.
0
 Аватар для Игорь[Igor]
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
25.12.2013, 01:47
А ListBox1.ItemIndex не -1 при сравнение? А то у тебя не на сложных задачах такие вопросы вроде понимаеш как делать, но неможеш довести до ума.

Добавлено через 7 минут
Цитата Сообщение от Waddonator Посмотреть сообщение
kmoiseev, у меня посмотреть не получится. Стоит только D7.
Почему не получиться? 7 открывает многие проекты.
0
6 / 6 / 1
Регистрация: 04.08.2013
Сообщений: 62
25.12.2013, 01:56  [ТС]
Да я сам вообще не понимаю, что происходит на самом деле. Вроде задача копейка, а ступор и все. Причем была такая ситуация уже решил её, сейчас как выбило.

У меня подозрение, что заполняю listbox не правильно, по принципу combobox описанному выше Waddonator.
Пробовал и циклом, но снова 0 result.
0
 Аватар для Игорь[Igor]
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
25.12.2013, 02:25
Скинь исходники
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.12.2013, 02:25
Помогаю со студенческими работами здесь

Combobox значение которого меняется в зависимости от выбора другого Combobox'a
Добрый день, у меня есть задача, я с реализацией трудновато. суть такова, есть combobox, в котором на выбор есть несколько пунктов, и при...

Значение из ComboBox формы в запросе MS SQL для другого ComboBox
Здравствуйте! Научите пожалуйста использовать значение ComboBox (хотя бы VB) в запросе MS SQL. Значение числовое int. Знаю, что для...

Исключение из ComboBox'а значений выбранных в других ComboBox'ов используя Binding
Возможно ли средствами Binding-a решить такую задачку: есть 5 TextBox - ов, и 3 ComboBox - а. значения всех TextBox - ов заносятся в...

Сравнивание текста в combobox-е и вывод определенных значений в другой combobox
Есть 2 combobox-a. В каждом берутся данные из текстового файла. Нужно при выборе одной строки в 1м combobox-e, присвоить определенные...

Не получается сделать, Запись из первого ComboBox попадает во второй ComboBox
Добрый день. Проблема в правильности написания кода, нужно что бы при выборе фамилии из поле со списком "Создатель" эта же...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru