Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.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 для того и сделан, чтобы его не заполнять ручками.

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)