|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Как выбрать нужную запись из БД ?
Доброго времени суток.
Подскажите люди добрые. Имеется: 1)Таблица БД Acces c полями <Тип>, <Модель>, <Чувствительность>, <Мощность>. 2)Форма с объектами БД ADOConnection1, DataSource1, ADOQuery1, DBLookupComboBox1 и несколько Edit (Edit1...Edit6). В результате некоторого действия (не суть какого) из таблицы БД в DBLookupComboBox1 добавляется поле (столбец) <Модели>. Я хочу чтобы при выборе из DBLookupComboBox1 конкретной записи (модели), в Edit5 добавлялась соответствующая выбранной модели запись из поля <Чувствительность> БД. Подскажите как это можно реализовать. edit5.Text := ??? Пробовал так: Код:
procedure TForm1.DBLookupComboBox1Click(Sender: TObject); begin ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('SELECT модель, чувствительность FROM Speaker WHERE модель = DBLookupComboBox1.Text'); ADOQuery1.Open; edit5.Text := ADOQuery1.FieldByName('чувствительность').AsString; end; В результате после запуска проги как только я кликаю на нужную запись в DBLookupComboBox1 появляется сообщение об ошибке следующего содержания - <... параметр чувствительность не имеет значения по умолчанию.> Последний раз редактировалось Admin, 26.08.2011 в 10:02. |
#2
|
||||
|
||||
Поставь в свойстве комбобокса KeyField поле <Чувствительность>.
Обрабатывать правильнее событие onCloseUp: Код:
procedure TForm1.DBLookupComboBox1CloseUp(Sender: TObject); begin Edit5.Text:= DBLookupComboBox1.KeyValue; end; Код:
Edit5.Text:= inttostr(DBLookupComboBox1.KeyValue); Google в помощь Последний раз редактировалось Ildar-tsr, 26.08.2011 в 07:48. |
#3
|
||||
|
||||
Увы появляется всё таже ошибка - <... параметр чувствительность не имеет значения по умолчанию.> И в Edit5 ни чего не появлятся
У меня на форме имеется ещё два переключателя в зависимости от того какой из них активен устанавливается то или иное значение по умолчанию (при загрузке формы) Код HTML:
a2.jpg |
#4
|
||||
|
||||
Код:
procedure TForm1.DBLookupComboBox1Click(Sender: TObject); begin ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('SELECT модель, чувствительность FROM Speaker WHERE модель = DBLookupComboBox1.Text'); ADOQuery1.Open; edit5.Text := ADOQuery1.FieldByName('чувствительность').AsString; end; Код:
procedure TForm1.DBLookupComboBox1OnChange(Sender: TObject); begin edit5.Text := ADOQuery1.FieldByName('чувствительность').AsString; end; - Товарищ прапорщик!!! Остановите поезд!!! - Поезд СТОЙ! РАЗ! ДВА! Последний раз редактировалось Viajero, 29.08.2011 в 11:37. |
#5
|
||||
|
||||
У тебя короче в каком то из запросов ошибка синтаксиса. Придется тебе их все просмотреть.
Вот пример ошибочного запроса: Код:
ADOQuery1.SQL.Add('SELECT модель, чувствительность FROM Speaker WHERE модель = DBLookupComboBox1.Text'); Код:
where модель = 'название_модели' Код:
ADOQuery1.SQL.Add('SELECT модель, чувствительность FROM Speaker WHERE модель = ''' + DBLookupComboBox1.Text + ''''); P.S. А вообще здорово было бы если б ты базу данных и прогу свою скинул на всеобщее обозрение, а то мы так до пенсии косяки вылавливать будем. Google в помощь Последний раз редактировалось Ildar-tsr, 29.08.2011 в 14:24. |
#6
|
||||
|
||||
Уважаемый Ildar-tsr вы видимо не читали мой предыдущий пост, или не поняли, поэтому поясняю: все действия с базой надо производить не в событии onclick а в событии onchange, после того как компонент DBLookupComboBox закончит "свои" действия с базой, а поскольку DBLookupComboBox сидит на том же датасете, с которого берутся данные для edit5, всё что помечено красным на*** не нужно
- Товарищ прапорщик!!! Остановите поезд!!! - Поезд СТОЙ! РАЗ! ДВА! Последний раз редактировалось Viajero, 29.08.2011 в 17:36. |
#7
|
||||
|
||||
Уважаемый Viajero, пост предназначался не Вам.
Плюс мне действительно интересно, как Вы повесите данное действие на onChange компонента DBLookupComboBox... В данном случае onCloseUp (как я и писал выше). Давайте дождемся когда автор темы предоставит исходники. P.S. По выложенным скриншотам уже понятно, что автор скорее всего использует несколько запросов. Конкретно указанный Вами действительно лишний, но и в остальных по его примеру наверняка присутствуют подобные ошибки. Google в помощь Последний раз редактировалось Ildar-tsr, 30.08.2011 в 09:38. |
#8
|
||||
|
||||
Как видно из предыдущих постов
Цитата:
Да я совершил ошибку: в DBLookupComboBox нету onchange, но я имел ввиду DBComboBox, т к DBLookupComboBox здесь повидимости тоже на*** не нужен. - Товарищ прапорщик!!! Остановите поезд!!! - Поезд СТОЙ! РАЗ! ДВА! Последний раз редактировалось Viajero, 30.08.2011 в 11:01. |