Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Возможно в одном запросе заполнить три DBComboBox-а?


S.T. ©   (2008-01-31 12:04:00) 

При открытии формы редактирования записи, заполняю DBComboBox неповторяющимися записями из определённого столбца:
DBComboBox.Clear;
 if ADOQueryCB.Active then ADOQueryCB.Close;
 ADOQueryCB.SQL.Text := 'SELECT DISTINCT Otdelenie FROM Pervaya'+
  ' WHERE Otdelenie IS NOT NULL ORDER BY 1';
 ADOQueryCB.Open;
 while not ADOQueryCB.EOF do
 begin
  DBComboBox.Items.Add(ADOQueryCB.Fields[0].asString);
  ADOQueryCB.Next;
 end;
 ADOQueryCB.Close;

А можно как-то, в этом запросе, заполнить сразу три DBComboBox-а (по трём колонкам той-же таблицы БД)? Или три раза, с тремя ADOQuery надо это проделывать?


Johnmen   (2008-02-03 02:53:00) [1]


> S.T.   (02.02.08 21:47) [15]
> > не один и тот же комбо заполняется?
нет, их три!
> Приведи пример данных и результат.
Данные:
Иванов      14        2_дня
Сидоров    12       3_дня
Иванов     17       1_неделя
Петров     12       2_дня
В combobox-ах получается:
Иванов      14     2_дня
Сидоров     12     3_дня
Петров       17     1_неделя

Чо за бред?


Галинка   (2008-02-03 02:41:00) [2]

ADOQueryCB.SQL.Text := 'SELECT DISTINCT Otdelenie, Vtoroe FROM Pervaya'+
' WHERE Otdelenie IS NOT NULL ORDER BY 1';
.....................
DBComboBox1.Items.Add(ADOQueryCB.Fields[0].asString);
DBComboBox2.Items.Add(ADOQueryCB.Fields[1].asString);
DBComboBox3.Items.Add(ADOQueryCB.Fields[2].asString);


S.T.   (2008-02-02 21:47:00) [3]

> не один и тот же комбо заполняется?
нет, их три!
> Приведи пример данных и результат.
Данные:
Иванов      14        2_дня
Сидоров     12       3_дня
Иванов       17       1_неделя
Петров       12       2_дня
В combobox-ах получается:
Иванов      14        2_дня
Сидоров     12       3_дня
Петров       17       1_неделя
> Там будет в одном списке поля таблицы тройками
Так как же правильно?


Palladin   (2008-01-31 15:50:00) [4]


> [12] Галинка ©   (31.01.08 15:44)

я имею ввиду вот так


> [8] Palladin ©   (31.01.08 12:29)


это раз, два автору уже все понравилось, видимо, что мой телепатор был ближе всех к истине... ну посмотрим...


Anatoly Podgoretsky   (2008-01-31 15:48:00) [5]

Приведи пример данных и результат.


Галинка   (2008-01-31 15:44:00) [6]

а разве в

S.T.   (31.01.08 12:19) [7]

> Palladin ©   (31.01.08 12:09) [1]

Вы имеете ввиду так:
ADOQueryCB.SQL.Text := 'SELECT DISTINCT Otdelenie, Vtoroe FROM Pervaya'+
' WHERE Otdelenie IS NOT NULL ORDER BY 1';
.....................
DBComboBox.Items.Add(ADOQueryCB.Fields[0].asString);
DBComboBox.Items.Add(ADOQueryCB.Fields[1].asString);


не один и тот же комбо заполняется? Там будет в одном списке поля таблицы тройками.

ПыСы: а есть ли у комбо свойства DataSource и DisplayMember? Тогда просто назначить в них соотв. поля полученного набора.


Palladin   (2008-01-31 14:37:00) [7]

применим, входящий набор записей сокращаем...


Anatoly Podgoretsky   (2008-01-31 14:36:00) [8]

Боюсь, что все три поля независимы друг от друга, а в этом случае DISTINCT не применим, ерунда получится.


S.T.   (2008-01-31 12:39:00) [9]

> Palladin ©   (31.01.08 12:29) [8]
Спасибо!


Palladin   (2008-01-31 12:29:00) [10]

вместо
DBComboBox.Items.Add(ADOQueryCB.Fields[0].asString);
DBComboBox.Items.Add(ADOQueryCB.Fields[1].asString);

If DBComboBox.Items.IndexOf(ADOQueryCB.Fields[0].asString)=-1 Then  DBComboBox.Items.Add(ADOQueryCB.Fields[0].asString);
If DBComboBox.Items.IndexOf(ADOQueryCB.Fields[1].asString)=-1 Then  DBComboBox.Items.Add(ADOQueryCB.Fields[1].asString);


S.T.   (2008-01-31 12:19:00) [11]


> Palladin ©   (31.01.08 12:09) [1]

Вы имеете ввиду так:
ADOQueryCB.SQL.Text := 'SELECT DISTINCT Otdelenie, VtoroeFROM Pervaya'+
 ' WHERE Otdelenie IS NOT NULL ORDER BY 1';
.....................
 DBComboBox.Items.Add(ADOQueryCB.Fields [0].asString);
 DBComboBox.Items.Add(ADOQueryCB.Fields [1].asString);


Palladin   (2008-01-31 12:19:00) [12]


> [4] Surok   (31.01.08 12:16)

ну так и написать, все три поля, только с дистинктом


clickmaker   (2008-01-31 12:17:00) [13]


> можно как-то, в этом запросе, заполнить сразу три DBComboBox-а
> (по трём колонкам той-же таблицы БД)?

а в чем сложность?
три .Add() друг за другом не написать?


Surok   (2008-01-31 12:16:00) [14]

> Palladin ©   (31.01.08 12:12) [3]
хотя, вру, дистинкт убирать не надо :)

Тгда как правильно построить запрос?


Palladin   (2008-01-31 12:12:00) [15]

хотя, вру, дистинкт убирать не надо :)


ketmar   (2008-01-31 12:11:00) [16]

можно. а нужно?


Palladin   (2008-01-31 12:09:00) [17]

убрать distinct из запроса
в запрос добавить все три поля
в цикле добавлять в нужный combobox только те значения которых у него еще нет


Наверх

Титульная страница Поиск, карта сайта Написать письмо