Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.02;
Скачать: CL | DM;

Вниз

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

 
S.T.   (2008-01-31 12:04) [0]

При открытии формы редактирования записи, заполняю 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 надо это проделывать?


 
Palladin ©   (2008-01-31 12:09) [1]

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


 
ketmar ©   (2008-01-31 12:11) [2]

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


 
Palladin ©   (2008-01-31 12:12) [3]

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


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

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

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


 
clickmaker ©   (2008-01-31 12:17) [5]


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

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


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


> [4] Surok   (31.01.08 12:16)

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


 
S.T.   (2008-01-31 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);


 
Palladin ©   (2008-01-31 12:29) [8]

вместо
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:39) [9]

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


 
Anatoly Podgoretsky ©   (2008-01-31 14:36) [10]

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


 
Palladin ©   (2008-01-31 14:37) [11]

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


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

а разве в

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? Тогда просто назначить в них соотв. поля полученного набора.


 
Anatoly Podgoretsky ©   (2008-01-31 15:48) [13]

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


 
Palladin ©   (2008-01-31 15:50) [14]


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

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


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


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


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

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


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

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);


 
Johnmen ©   (2008-02-03 02:53) [17]


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

Чо за бред?



Страницы: 1 вся ветка

Текущий архив: 2008.03.02;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.018 c
2-1201952182
karablik
2008-02-02 14:36
2008.03.02
WMA getMarker


15-1201542757
Johnmen
2008-01-28 20:52
2008.03.02
Редактирование и монтаж видео.


2-1202467900
Artem
2008-02-08 13:51
2008.03.02
listbox и image


15-1201632004
timeout
2008-01-29 21:40
2008.03.02
UUID компьютера


15-1201344684
Beastie Boys
2008-01-26 13:51
2008.03.02
Как изменить файл bootfont.bin?