Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > Базы данных: Общие вопросы > Delphi: Заолнение ComboBoxa возможн. знач. |
Автор: Tema 28.01.03, 10:30 |
Есть куча ComboBox для ввода новых записей в таблицу... в них в каждом надо отображать возможные поля для ввода, эти возможные поля должны браться из базы (соотв. столбцу). Занесли новое поле в таблицу--->отображение в в ожможных знач. ComboBoxa. Вот такая задача. Я ее реализ считываением пробежкой по всей базе, занесением в Тстринг и убиранием дубликатов. НО, этот процесс занимает достаточно много времени, да и к тому же по каждому расхлапыванию коба не будеш же заново бегать по всей таблице и искать что добавилось.... Кто что может предложить... у кого какие наработки. Мой исходник этой операции: var Sl:TStringList; begin Sl:=TStringList.Create; MasVT.DisableControls; BMVT:=MasVT.GetBookmark; //Ñïèñîê Ïðåäïðèÿòèé â CBVT ... MasVT.First; while not MasVT.Eof do begin CBVT1.Items.Add(MasVT.FieldByName('PR').AsString); CBVT2.Items.Add(MasVT.FieldByName('PS').AsString); CBVT3.Items.Add(MasVT.FieldByName('DN').AsString); CBVT4.Items.Add(MasVT.FieldByName('TIP').AsString); CBVT5.Items.Add(MasVT.FieldByName('ZN').AsString); ..... MasVT.next; end; MasVT.GotoBookmark(BMVT); //Ïåðåõîäèì ïî çàêë. MasVT.FreeBookmark(BMVT); MasVT.EnableControls; With Sl Do try Sorted:=True; Duplicates:=dupIgnore; Sl.Assign(CBVT1.Items); CBVT1.Items.Assign(Sl); //Î÷èùåàì â VT Sl.Assign(CBVT2.Items); CBVT2.Items.Assign(Sl); Sl.Assign(CBVT3.Items); CBVT3.Items.Assign(Sl); Sl.Assign(CBVT4.Items); CBVT4.Items.Assign(Sl); Sl.Assign(CBVT5.Items); CBVT5.Items.Assign(Sl); ..... finally Free; end; |
Автор: OlegF 28.01.03, 11:05 |
Я конечно может быть чего не понял, но не проще ли использовать компонент DBComboBox из вкладки DataControls. Там указываешь DataSource (источник-таблица) и DataField (поле из которого выбираются значения). Причем все это работает еще на стадии разработки :). |
Автор: Han 29.01.03, 14:38 |
Цитата OlegF, 28.01.03, 14:05:02 Я конечно может быть чего не понял, но не проще ли использовать компонент DBComboBox из вкладки DataControls. Там указываешь DataSource (источник-таблица) и DataField (поле из которого выбираются значения). Причем все это работает еще на стадии разработки . Как по мне, дык ответ исчерпывающий.......зачем колесо изобретать??? |
Автор: Tema 30.01.03, 08:44 |
Да неее.... этот DBCombo привязан к базе, а у меня просто ComboBox и к тому же список то в этих DBCombo все равно надо программно заполнять (автоматом же нет),а для этого все равно надо каждый раз по таблицам бегать.... или я что недопонимаю? |
Автор: Tayron 04.02.03, 10:07 |
Есть возможность завязать таблицу со справочником в дата модуле, и подцепить к справочнику комбобокс, (ели просчитал кол-во бо ) |
Автор: repairman 04.02.03, 12:07 |
DBLookupComboBox и DBLookupListBox и их аналоги из RxLib как раз для того и предназначены, чтобы данные из одного датасета можно можно было вставлять в другой (с постановкой или без)... В простейшем случае ни одной строчки текста не требуется... Изобретаем велосипед ? ;-) |
Автор: raize 17.02.03, 03:41 |
вообще-то DBComboBox для того и сделан, чтобы его не заполнять ручками. |