МТих |
Отправлено: 28.02.2007, 08:05 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 5
|
Добрый день!
Хочу поработать с TDBLookupComboBox для вставки значения в главную таблицу из справочника. CB6, FireBird1.5, TIBQuery.
Связка вроде нормальная, работает.
Но при первом нажатии на LookupComboBox выпадает список только из одного значения, и отображается целиком только при ручном "пробегании" по всему списку значений.
Пробовал играться DropDownRows — не помогло.
Делать типа
CB->DataSource->DataSet->First();
while(!CB->DataSource->DataSet->Eof){
CB->DataSource->DataSet->Next();
}
CB->DataSource->DataSet->First();
тоже не помогает (точнее — список раскрывается при первом обращении только тогда, когда на форме BLookupComboBox-а лежит Grid с DataSource, равном ListSource рассматриваемого LookupComboBox).
уж больно вопрос стандартен, а ни в поиске не увидел, ни сам тяму дать не могу... куда смотреть?
Сервер показывает не все записи из датасэта?
Отредактировано МТих — 28.02.2007, 08:20
|
|
Tantos |
Отправлено: 28.02.2007, 16:01 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 108
|
Так уж тебе необходимо использовать TDBLookupComboBox? Если тебе просто необходимо выбирать значение из справочника, рекомендую создать отдельную форму, которая передает на основную текст и значение ключевого поля. Потому как компонент предназначен слегка для другого:
QUOTE |
TDBLookupComboBox represents a combo box that identifies a set of field values in one dataset with a corresponding set of values from another dataset.
|
|
|
МТих |
Отправлено: 01.03.2007, 07:46 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 5
|
Извиняюсь, наверное некорректно выразился.
"для вставки значения в главную таблицу из справочника" имелось в виду, что в главную таблицу из справочника вставляется его(справочника) primary key. то есть собственно текста — не требуется
|
|
olegenty |
Отправлено: 01.03.2007, 10:23 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
должен быть параметр типа FetchAll — получить на клиента ВСЕ записи выборки. поскольку сейчас записи фетчатся на клиента ПО НЕОБХОДИМОСТИ — столько, сколько необходимо контролу. а ему нисколько не необходимо.
|
|
МТих |
Отправлено: 01.03.2007, 13:54 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 5
|
в ближайшем доступном пространстве такой метод есть только у IBDataSet.
попробовал привентить его — пока без результатно.
но ни у TIBQuery, ни у TDataSource его(FetchAll) нет. а очень хотелось обходиться именно TIBQuery и TDataSource.
|
|
AVC |
Отправлено: 01.03.2007, 14:03 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
DataSet->Last() заменит Fetch All в любом наборе данных. |
|
МТих |
Отправлено: 01.03.2007, 14:14 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 5
|
делал в событии onEnter
1.
CB->DataSource->DataSet->First();
CB->DataSource->DataSet->Last();
2. проход по DataSet — CB->DataSource->DataSet->Next();
не лечит.
|
|
Tantos |
Отправлено: 01.03.2007, 16:13 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 108
|
2 МТих: я просто записываю в свойство Tag значение ключевого поля и все. А после вставки записи не забываю его сбросить.
|
|
МТих |
Отправлено: 02.03.2007, 06:55 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 5
|
2Tantos — хотелось бы обходиться штатными средствами...
По теме — трабл разрешить не удалось.
Пришлось мигрировать от (TDBLookupComboBox, (TIBQuery+IBUpdateSQL), TDataSource) к (TDBLookupComboBox, TIBDataSource, TDataSource + TIBDataSource->FetchAll).
коряво, но деваться некуда...
Отредактировано МТих — 02.03.2007, 07:45
|
|
olegenty |
Отправлено: 02.03.2007, 07:59 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
Вспоминяю, что такое TIBQuery ... это же однопроходный набор данных без возможности скролла, насколько я помню. Ничего удивительного, что не работало. Контролы рассчитаны на наборы данных, болтающиеся на стороне клиента.
|
|
Tantos |
Отправлено: 02.03.2007, 15:23 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 108
|
Эээ, а разве свойство Tag и TForm не стандартные средства? Я вообще практически не пользуюсь стандартными компонентами с вкладки Data Controls. Уж лучше EhLib. Тоже, фактически, уже стандарт .
|
|