C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Раскрытие списка значений в TDBLookupComboBox
МТих
Отправлено: 28.02.2007, 08:05


Ученик-кочегар

Группа: Участник
Сообщений: 5



Добрый день!
Хочу поработать с TDBLookupComboBox для вставки значения в главную таблицу из справочника. CB6, FireBird1.5, TIBQuery.
Связка вроде нормальная, работает.
Но при первом нажатии на LookupComboBox выпадает список только из одного значения, и отображается целиком только при ручном "пробегании" по всему списку значений.
Пробовал играться DropDownRows — не помогло.
Делать типа smile.gif
CB->DataSource->DataSet->First();
while(!CB->DataSource->DataSet->Eof){
CB->DataSource->DataSet->Next();
}
CB->DataSource->DataSet->First();
тоже не помогает (точнее — список раскрывается при первом обращении только тогда, когда на форме BLookupComboBox-а лежит Grid с DataSource, равном ListSource рассматриваемого LookupComboBox).

уж больно вопрос стандартен, а ни в поиске не увидел, ни сам тяму дать не могу... куда смотреть?
Сервер показывает не все записи из датасэта? sad.gif

Отредактировано МТих — 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. то есть собственно текста — не требуется smile.gif
olegenty
Отправлено: 01.03.2007, 10:23


Ветеран

Группа: Модератор
Сообщений: 2412



должен быть параметр типа FetchAll — получить на клиента ВСЕ записи выборки. поскольку сейчас записи фетчатся на клиента ПО НЕОБХОДИМОСТИ — столько, сколько необходимо контролу. а ему нисколько не необходимо.
МТих
Отправлено: 01.03.2007, 13:54


Ученик-кочегар

Группа: Участник
Сообщений: 5



в ближайшем доступном пространстве такой метод есть только у IBDataSet.
попробовал привентить его — пока без результатно.
но ни у TIBQuery, ни у TDataSource его(FetchAll) нет. а очень хотелось обходиться именно TIBQuery и TDataSource. sad.gif
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).
коряво, но деваться некуда... sad.gif

Отредактировано МТих — 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. Тоже, фактически, уже стандарт cool.gif .

Вернуться в Работа с базами данных в C++Builder