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

Вниз

SQL>StringList   Найти похожие ветки 

 
Layner   (2003-08-28 08:14) [0]

Приветствую мастера!
Подскажите, как преобразовать в StringList SQL выборку? Выбирается один столбец, записей несколько. Хотелось бы их поместить в StringList (первый вопрос), и дальше поместить в компонет ComboBox в Items (второй вопрос).
q2.SQL.Text:="SELECT edizm.name FROM edizm;";
q2.ExecSQL;

И третий вопрос, он не обязателен, на всё же, если кто поможет, буду очень благодарен, вкратце: нужен ID выбранной записи в ComboBox, т.е.
получаю я в Items несколько слов (десятков слов), показываю, пользователь выбирает запись в ComboBox, получаю, далее эту запись я могу снова сравнить по буквенно с БД, и узнать какой у неё ID, и далее уже использую в своём другом запросе, где требуется только ID, но это получится долго, и может не совсем правильно.
Может данные выборки поместить в двумерный массив, и искать ID выбранной записи уже в массиве? Или можно в ComboBox реализовать скрытое поле напротив записи (как в Перле или PHP)?
Заранее спасибо.


 
Layner   (2003-08-28 09:24) [1]

Эх.. как бы разобраться...


 
stone   (2003-08-28 09:31) [2]

Тебе нужен не комбобокс, а TDBLookupComboBox, тогда все вышеперечисленное можно будет реализовать несколькими кликами мышки


 
stud   (2003-08-28 09:32) [3]

не execsql а open , делаеш цикл по набору данных и вносиш значение поля в items, а по поводу 3 использую dbcomdobox или lookupcombobox


 
Layner   (2003-08-28 09:44) [4]

>Тебе нужен не комбобокс, а TDBLookupComboBox
А... у меня же не одна таблица, работаю по SQL запросу, из нескольких таблиц. Который доступен в отображении только ес-но для чтения. И все изменения уйдут не понятно куда.
Изменения делаю другими запросами, для этого надо узнать ID от Name, которыей отображается в любом визуальном компаненте, например ComboBox отображает ЕДЕНИЦЫ ИЗМЕРЕНИЯ.
КАк прокатить по запросу по записи, и считать в массив или стринглист? (Помоему это ед. прав. решение, если UpdateSQL нет в ADO)


 
Layner   (2003-08-28 09:48) [5]

Блин, сам дурак, вот что требовалось узнать

while not ADOQuery1.eof do begin
DBComboBox1.Items.Add(ADOQuery1.Fields[0].AsString);
DBEdit1.Text:=ADOQuery1.Fields[1].AsString;
ADOQuery1.Next;


 
stone   (2003-08-28 09:51) [6]


> А... у меня же не одна таблица, работаю по SQL запросу,
> из нескольких таблиц. Который доступен в отображении только
> ес-но для чтения. И все изменения уйдут не понятно куда.
>


Какие изменения? Куда уйдут? Ты видимо не совсем знаком со свойствами и методам TDBLookupComboBox
Посмтотри примеры, почитай хэлп.

Если уж тебе сильно хочется гимороя, тогда:
1. Добавляешь в цикле значение полей в Комбобокс
2. При выборе итема в комбобоксе находишь по значению итема нужный ID в датасете


 
Polevi   (2003-08-28 09:57) [7]

>stone © (28.08.03 09:51) [6]
это не геморой а правильное решение


 
Reindeer Moss Eater   (2003-08-28 10:00) [8]

DBComboBox1.Items.AddObject(ADOQuery1.Fields[0].AsString,TObject(ADOQu ery1.Fields[0].AsInteger));


 
Layner   (2003-08-28 10:03) [9]

Хорошо, подскажите, плиз, как с DBLookupComboBox1, я реализую так
procedure Tf.Button1Click(Sender: TObject);
begin
q2.Close;
q2.SQL.Text:="SELECT edizm.rowid, edizm.name FROM edizm ORDER BY edizm.name;";
q2.Open;
while not q2.eof do begin
ComboBox2.Items.Add(q2.Fields[1].AsString); //тут только слово, надобы ещё ID где то рядом...
q2.Next;
end;
end;


 
Reindeer Moss Eater   (2003-08-28 10:05) [10]

[8]


 
Соловьев   (2003-08-28 10:06) [11]


> ComboBox2.Items.Add(q2.Fields[1].AsString);

...
ComboBox2.Items.Add(q2.Fields[0].AsString+" "+q2.Fields[1].AsString);
...


 
Соловьев   (2003-08-28 10:08) [12]


> Reindeer Moss Eater © (28.08.03 10:00) [8]

а зачем?
можно же указать список полей через ";" и они вывидутся.


 
Reindeer Moss Eater   (2003-08-28 10:09) [13]

а зачем?
Так ему этот ID потом в чистом виде нужен.


 
Layner   (2003-08-28 10:12) [14]

ComboBox2.Items.Add(q2.Fields[0].AsString+" "+q2.Fields[1].AsString);
Значит потом парсировать значение, вот это и есть сложный вариант, тем более отображатся ID будет.. Люди говорят через DBLookupComboBox, пробую, он у меня всё время не активный..


 
stone   (2003-08-28 10:18) [15]


> Layner (28.08.03 10:03) [9]
> Хорошо, подскажите, плиз, как с DBLookupComboBox1, я реализую
> так
> procedure Tf.Button1Click(Sender: TObject);
> begin
> q2.Close;
> q2.SQL.Text:="SELECT edizm.rowid, edizm.name FROM edizm
> ORDER BY edizm.name;";
> q2.Open;
> while not q2.eof do begin
> ComboBox2.Items.Add(q2.Fields[1].AsString); //тут только
> слово, надобы ещё ID где то рядом...
> q2.Next;
> end;
> end;


Вот это тогда уже не надо
> while not q2.eof do begin
> ComboBox2.Items.Add(q2.Fields[1].AsString); //тут только
> слово, надобы ещё ID где то рядом...
> q2.Next;
> end;

У DBLookupComboBox1 свойства DataSource и DataField оставляешь пустыми (это важно). В ListSource указываешь DataSource ссылающийся на q2. B ListField - поле, что должно отображаться. В KeyField - поле, что содержит нужный ID.
Значение ID выбранного пункта всегда можно получить через
DBLookupComboBox1.KeyValue


 
Соловьев   (2003-08-28 10:21) [16]


> тут только слово, надобы ещё ID где то рядом

рядом это как? чтобы виден был?
или чего? когда ты выбираешь пункт DbLookUpComboBox, то НД автоматически перескакивает на эту запись, так что считать ID не составляет труда...
...
Id = DataSet.FieldByName("ID").AsInteger;
...


 
Reindeer Moss Eater   (2003-08-28 10:22) [17]

[8]


 
Layner   (2003-08-28 10:29) [18]

stone © (28.08.03 10:18)
Это уже хорошо, спасибо, разбираюсь.
Reindeer Moss Eater © (28.08.03 10:22)
Ответы какие то интересные, не пояснишь?


 
Reindeer Moss Eater   (2003-08-28 10:31) [19]

см. Reindeer Moss Eater © (28.08.03 10:00) [8]



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

Форум: "Базы";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.008 c
1-58768
boets
2003-09-06 09:15
2003.09.18
Russian copy/paste in English Windows 2000


3-58600
AlexWeb
2003-08-28 17:19
2003.09.18
Мастера!!! Нужна консультация...


1-58609
denick
2003-09-08 17:33
2003.09.18
Помогите пожалуйста.


1-58725
titnn
2003-09-07 09:00
2003.09.18
а как бы это по красивее сделать ...


1-58652
Vitalygavrilov
2003-09-05 10:25
2003.09.18
Как сделать чтобы некакие действия небыли возможны.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский