| 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 отработает быстро.
 | 
  |