![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Здравствуйте. У меня такая проблема: мне надо из нескольких LookupComboBox на форме сделать запись в табилицу(каждый из них записывается в отдельный столбец) в базу данных MS Access. Эту базу я подключила с помощью ADOConnection (спасибо статье на сайте). Понимаю, что надо тоже делать через компоненты ADO, но попробовала несколько вариантов и не получается. Еслиб было больше времени, разобралась бы сама(думаю это уже разбиралось много раз), но программу нужно сдать очень скоро
![]() Заранее спасибо за помощь. |
|
#2
|
||||
|
||||
|
Добавьте на форму компонент TAdoTable и TDataSource.
Свяжите TDataSource с TAdoTable через свойство DataSet Свяжите TAdoTable с TAdoConnection через свойство Connection Замените компоненты LookupComboBox на DBLookupComboBox Заполните для DBLookupComboBox свойства: DataSource DataField ListSource ListField KeyField |
|
#3
|
||||
|
||||
|
Эм... я несовсем это имела ввиду... DBLookupComboBox я уже связала с базой данных, тоесть список открывается и там можно что-то выбрать. Ещё на этой же форме я добавила кнопку, при нажатии на которую то что выбрано в DBLookupComboBox должно записываться в таблицу (в той же базе данных). Вот это сделать у меня и не получается. При нажатии на кнопку только ошибки выкидывает
![]() |
|
#4
|
||||
|
||||
|
А и не надо никакой кнопки. Принцип работы DBLookupComboBox это взять справочное значение и внести в основную таблицу автоматом.
Именно поэтому нужно заполнить 5 полей, а не 2. Если вам надо брать справочное значение, и принимать решение о его вводе в таблицу позже, то для этого надо использовать уже DBComboBox. Но вообще лучше выложите код, думаю быстрее найдем ошибку. |
|
#5
|
||||
|
||||
|
При нажатии на кнопку поидее должна быть запись в таблицу. ADOQuery я добавила и связала его с ADOConnection. А в SQL написала SELECT * FROM ...(таблица к которую нужно записать данные).
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
str:string;
begin
ADOQuery1.close;
ADOQuery1.SQL.clear;
str:='insert into [Таблица заказов] values('''+
DBLookupComboBox1.Text+''')';
ADOQuery1.SQL.Add(str);
ADOQuery1.ExecSQL;
ADOQuery1.Open;
end;Не знаю, как сделать так чтобы записывалось в определенный столбец (а то он наверно в первый записывает, а у меня там ключевое поле) P.S. Код скопировала из одной программы (там примерно тоже самое делают, заполняются поля, выбирается из списка, а потом после нажатия на кнопку идет запись в таблицу). Последний раз редактировалось Admin, 18.12.2009 в 14:50. |
|
#6
|
||||
|
||||
|
Ну тут два варианта, либо настраивать по человечески лукап, либо написать правильно запрос
Код:
str:='insert into [Таблица заказов] (fieldname) values('''+
DBLookupComboBox1.Text+''')';Последний раз редактировалось Страдалецъ, 18.12.2009 в 16:49. |
|
#7
|
||||
|
||||
|
Вроде исправила запрос:
Код:
ADOQuery1.close;
ADOQuery1.SQL.clear;
str:='insert into [Таблица заказов] (Платформа) values('''+
DBLookupComboBox1.Text+''')';
ADOQuery1.SQL.Add(str);
ADOQuery1.ExecSQL;
ADOQuery1.Open; |
|
#8
|
||||
|
||||
|
Правильно, потому-что вы пишете текст исполняемого запроса, он у вас отрабатывает:
Код:
ADOQuery1.ExecSQL; Код:
ADOQuery1.Open; Код:
ADOQuery1.close;
ADOQuery1.SQL.Text := 'insert into [Таблица заказов] (Платформа) values('''+DBLookupComboBox1.Text+''')';
ADOQuery1.ExecSQL;
ADOQuery1.SQL.Text := 'select * from [Таблица заказов] where [Платформа]='+QuotedStr(DBLookupComboBox1.Text);
ADOQuery1.Open; |