|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Вопрос по Delphi и Access
Здравствуйте. У меня такая проблема: мне надо из нескольких 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; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |