Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.03.02;
Скачать: [xml.tar.bz2];

Вниз

Возможно в одном запросе заполнить три 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.062 c
2-1202043425
заза
2008-02-03 15:57
2008.03.02
примитив про цикл


3-1192105324
3Lander
2007-10-11 16:22
2008.03.02
Работает ли при "SQL dialect 3" оператор DISTINCT?


15-1201424991
Kostafey
2008-01-27 12:09
2008.03.02
С днем рождения ! 27 января


15-1201593227
GEN++
2008-01-29 10:53
2008.03.02
"Разыменование указателя"


3-1192518920
Александр
2007-10-16 11:15
2008.03.02
Представление информации из баз данных в виде дерева





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский