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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2014, 03:57   #1
Nekala
Пользователь
 
Регистрация: 19.02.2011
Сообщений: 25
По умолчанию Вывод столбца БД в ListBox

Очень нуждаюсь в помощи. Не могу разобраться с проблемой уже часов 15( Я только учусь, поэтому не судите строга. Вообщем проблема такая: у меня есть таблица Resalt, комбобокс(КБ) 1 и 2. КБ1 и 2 заполняется значениями из таблицы Grumma.name gruppa. С КБ все вопрядке, заполняются нормально. Теперь, когда я выбрала в КБ каку-нибудь группу и нажала на кнопку, в ListBox должны попасть значения из таблицы Resalt столбец Obshie. Значения в ListBox попадают, но криво. Например у меня в КБ : Асу, Повт, ИСТб.... Я выбираю Асу. ТОгда в ListBox ничегго не попадает. Если выберу Повт, то попадают значения списка АСУ. А если ИСТб, то значения списка Повт

вот код заполнения КБ
Код:
procedure TForm7.FormShow(Sender: TObject);
begin
 DataModule3.ADOQuery5.SQL.Clear;
 DataModule3.ADOQuery5.SQL.Text:='Select Gruppa.Name_gruppa, Gruppa.Id_gruppa from Gruppa';
 DataModule3.ADOQuery5.open;
 ComboBox2.Items.Clear;
 DataModule3.ADOQuery5.First;
  while (not  DataModule3.ADOQuery5.Eof)  do
   begin
ComboBox1.Items.Add( DataModule3.ADOQuery5.Fields[0].AsString);
ComboBox2.Items.Add( DataModule3.ADOQuery5.Fields[0].AsString);
  DataModule3.ADOQuery5.Next;
   end;
end;

а это код вывода в лист грид
if (Combobox1.Text <> '') and  (Combobox2.Text <> '')then
 begin
  ListBox1.Clear;
  ListBox2.Clear;

  DataModule3.ADOQuery4.SQL.Clear ;
  DataModule3.ADOQuery4.SQL.Text:='Select Result.Obshie from Result where Result.Id_gruppa ='+IntToStr(Integer(Combobox1.ItemIndex));
  DataModule3.ADOQuery4.open;
  DataModule3.ADOQuery4.First;
  while (not DataModule3.ADOQuery4.Eof)  do
   begin
     ListBox1.Items.Add(DataModule3.ADOQuery4.Fields[0].AsString);
     DataModule3.ADOQuery4.Next;
   end;

  DataModule3.ADOQuery11.SQL.Clear ;
  DataModule3.ADOQuery11.SQL.Text:='Select Result.Obshie from Result where Result.Id_gruppa ='+IntToStr(Integer(Combobox2.ItemIndex));
  DataModule3.ADOQuery11.open;
  while ( not DataModule3.ADOQuery11.Eof)  do
   begin
     ListBox2.Items.Add(DataModule3.ADOQuery11.Fields[0].AsString);
     DataModule3.ADOQuery11.Next;
   end;


   end;

Последний раз редактировалось Stilet; 17.10.2014 в 07:16.
Nekala вне форума Ответить с цитированием
Старый 17.10.2014, 07:24   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
where Result.Id_gruppa ='+IntToStr(Integer(Combobox1.ItemIndex+1));
Потому что массив комбика нумеруется с нуля.
А вообще неправильно ты делаешь в корне.
Код:
procedure TForm7.FormShow(Sender: TObject);
begin
 with DataModule3.ADOQuery5. do begin
  SQL.Text:='Select Gruppa.Name_gruppa, Gruppa.Id_gruppa from Gruppa';
  open;
  ComboBox1.Items.Clear; ComboBox2.Items.Clear;
  while (not  Eof)  do   begin
   ComboBox1.AddItem(FieldByName('Name_gruppa').AsString,
      TObject(FieldByName('Id_gruppa').AsInteger));
   ComboBox2.AddItem(FieldByName('Name_gruppa').AsString,
      TObject(FieldByName('Id_gruppa').AsInteger));
    Next;
   end;
 end;
end;

Код:

if (Combobox1.ItemIndex<>-1) and  (Combobox2.ItemIndex<>-1)then
 begin
  ListBox1.Clear;
  ListBox2.Clear;

  DataModule3.ADOQuery4.SQL.Text:='Select Result.Obshie from Result where Result.Id_gruppa ='
    +IntToStr(Integer(Combobox1.items.objects[Combobox1.ItemIndex]));
  DataModule3.ADOQuery4.open;
  while (not DataModule3.ADOQuery4.Eof)  do
   begin
     И тут тоже нужно в комбик кидать как наименование так и ключевое поле как я показал выше
     DataModule3.ADOQuery4.Next;
   end;
....
   end;
И кстати не понятно мне какая связь между таблицами...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.10.2014, 07:43   #3
Nekala
Пользователь
 
Регистрация: 19.02.2011
Сообщений: 25
По умолчанию

Спасибо. Приду домой, сброшу связь между таблицами и попробую сделать как Вы написали. Часов через 6-7
Nekala вне форума Ответить с цитированием
Старый 17.10.2014, 15:12   #4
Nekala
Пользователь
 
Регистрация: 19.02.2011
Сообщений: 25
По умолчанию Спасибо ОГРОМНОЕ

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
where Result.Id_gruppa ='+IntToStr(Integer(Combobox1.ItemIndex+1));
Потому что массив комбика нумеруется с нуля.
А вообще неправильно ты делаешь в корне.
Код:
procedure TForm7.FormShow(Sender: TObject);
begin
 with DataModule3.ADOQuery5. do begin
  SQL.Text:='Select Gruppa.Name_gruppa, Gruppa.Id_gruppa from Gruppa';
  open;
  ComboBox1.Items.Clear; ComboBox2.Items.Clear;
  while (not  Eof)  do   begin
   ComboBox1.AddItem(FieldByName('Name_gruppa').AsString,
      TObject(FieldByName('Id_gruppa').AsInteger));
   ComboBox2.AddItem(FieldByName('Name_gruppa').AsString,
      TObject(FieldByName('Id_gruppa').AsInteger));
    Next;
   end;
 end;
end;

Код:

if (Combobox1.ItemIndex<>-1) and  (Combobox2.ItemIndex<>-1)then
 begin
  ListBox1.Clear;
  ListBox2.Clear;

  DataModule3.ADOQuery4.SQL.Text:='Select Result.Obshie from Result where Result.Id_gruppa ='
    +IntToStr(Integer(Combobox1.items.objects[Combobox1.ItemIndex]));
  DataModule3.ADOQuery4.open;
  while (not DataModule3.ADOQuery4.Eof)  do
   begin
     И тут тоже нужно в комбик кидать как наименование так и ключевое поле как я показал выше
     DataModule3.ADOQuery4.Next;
   end;
....
   end;
И кстати не понятно мне какая связь между таблицами...
Спасибо ОГРОМНОЕ! Все заработало. Сделала как Вы сказали.
Nekala вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VBA как установить формат дата для N-го столбца в ListBox'е АННА-ЕАО Microsoft Office Excel 13 08.03.2013 19:47
Вывод столбца из таблицы в ListBox хомякec БД в Delphi 7 03.05.2011 19:16
Сумма столбца ListBox R Dmitry Microsoft Office Excel 4 12.05.2010 22:57
Ширина столбца в Listbox-e как можно менять? Aqil_f Microsoft Office Excel 6 19.03.2010 16:20