mh2003 |
Отправлено: 06.02.2004, 16:53 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 5
|
Есть форма на ней лежат компоненты ComboBox1, IBQuery1.
Заполняю список ComboBox1 данными из таблицы БД
ComboBox1->Items->Clear();
while(! IBQuery1->Eof)
{
ComboBox1->AddItem(IBQuery1->FieldByName("FIRMA")->AsString, (TObject *)IBQuery1->FieldByName("ID_FIRM"));
IBQuery1->Next();
}
Далее в программе необходимо получить значение поля ID_FIRM ,
для использования в другом запросе после того как пользователь выберет нужную строку списка ComboBox1
Я пытаюсь сделать так
int i = ComboBox1->ItemIndex;//определяем выбранную строку
IBQuery1->Params->ParamByName("CUSTOMER")->AsInteger =(int) ComboBox1->Items->Objects[i];//присваиваем параметру CUSTOMER значение поля ID_FIRM(целое число)
Почему то код не работает.Возвращает совсем другое значение.
Кто знает поиогите. |
|
Valdemar |
Отправлено: 06.02.2004, 17:19 |
|
Мастер участка
Группа: Участник
Сообщений: 433
|
QUOTE | IBQuery1->Params->ParamByName("CUSTOMER")->AsInteger =(int) ComboBox1->Items->Objects[i]; |
Вы расцениваете значение Objects[i] как int, а Objects[i] является указателем на объект. Поэтому надо писать так (если я не ошибаюсь ):
CODE | IBQuery1->Params->ParamByName("CUSTOMER")->AsInteger =*(int*) ComboBox1->Items->Objects[i]; | |
|
olegenty |
Отправлено: 18.02.2004, 10:04 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
Есть вообще намного более тривиальное решение: использовать компонент TRxLookupEdit из библиотеки RXLib. Для освещённой проблемы нет ничего проще. Тем более, если набор данных велик, твоё решение будет тормозить при заполнении (я сам так делал раньше), в то время как TRxLookupEdit отработает быстро.
|
|