Сообщение Связь компонента Dblookupcombobox с Dbedit при работе с БД

  • Автор темы sislexa
  • Дата начала
S

sislexa

#1
В программе имеются компоненты DbLookupCombobox и DBEdit работающие с одной базой данных .DbLookupCombobox отображает список товаров а DBEdit стоимость выбранного товара.Вроде всё работает но у меня возникла проблема следующего характера цена во всех DBEditах отображается только последнего товара который я выбрал в DbLookupCombobox.Допустим у меня 5 компонентов DbLookupCombobox и соответственно 5 DBEdit во всех DbLookupCombobox выбраны разные товары с разной стоимостью а вот во всех DBEditах будет отображаться только стоимость последнего товара . Подскажите плиз как решить эту проблему .Заранее благодарен ответившим!
 
G

Guest

#2
Доброго дня sislexa!
Компонент TDBEdit отображает информацию из текущей активной записи. Поэтому во всех Edita'x Вы видите одну и туже информацию из одной и той же записи. Выход из ситуации можно найти, но нужно определиться с поставленной задачей и методами её реализации, т.е.
1. Нужно ли будет редактировать значения цен в компонентах TDBEdit или это нужно только для просмотра?
2. Используете ли Вы SQL и через какого провайдера БД работаете (BDE, ADO, MySQL и пр.)?

Первое что мне пришло в голову - это
- При выборе товара в компоненте TDBLookupComboBox выполнять поиск цены соответствующего товара (к примеру SQL запросом) и выводить её в Edit.
Второе -
- Породить потомков от TDBLookupComboBox и TDBEdit. Первый должен сообщать второму о номере записи в БД откуда второй должен брать информацию.

Вообщем надо конкретней определиться с поставленной задачей.
====================================================
С уважением Александр.
 
S

sislexa

#3
а как можно организовать SQL запрос на поиск соответствующей цены?
 
G

Guest

#4
а как можно организовать SQL запрос на поиск соответствующей цены?
В событии OnSelect (точно не помню как называется) компонента Lookup пропиши код:
var
qr:TQuery
begin
qr:=TQuery.Create;
qr.SQL:='Select ЦЕНА from ТВОЯ_ТАБЛИЦА where ТОВАР='+QuotedString(DBLookupComboBox.Text);
qr.Open;
Edit.Text:=qr.Fields.Field[0].AsString;
qr.Free;
end;

Пояснения:
когда ты выбираеш значение в компоненте DBLookupComboBox создается компонент TQuery который и находит цену выбранного товара, а ты эту цену присваеваеш компоненту Edit

=================================
в коде мог ошибится, т.к. писал прям в форуме (под рукой нет дельфи : )

с уважением Александр