Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.06.2015, 09:14   #1
sergeykom
Пользователь
 
Регистрация: 10.04.2014
Сообщений: 16
По умолчанию Как записать данные в таблицу БД Access

Здравствуйте! Подскажите код записи данных из ADOQuery в БД Access 2003. Суть проблемы: Есть форма с 5-ю ComboBox'ами. По нажатию на кнопку "Записать" данные из всех ComboBox-ов должны записаться в одну из таблиц БД Access (таблица Equipment). Таблица Equipment является дочерней к 2-м таблицам Brand и Type (содержит вторичные ключи их IDType и IDName). Таблицы Brand и Type имеют по 2 поля каждая - IDBrand и NameBrand, IDType и NameType. Из 5-ти ComboBox 3 заполнены данными непосредственно из этой-же таблицы Equipment. А 2 ComboBox отображают NameBrand и TypeBrand соответственно. В таблицу Equipment нужно записать IDType и IDBrand, соответствующие указанным в ComboBox NameType и NameBrand, а также данные 3-х других ComboBox. Пробовал записывать через ADOTable, однако данные Combobox, содержащие поля непосредственно из этой же таблицы, куда и записываю, вставляются просто, а как "вытянуть" IDType и IDBrand из NameBrand и NameType и вставить их в этом же запросе - не пойму. Аналогично через ADOQuery - данные Combobox, содержащие поля непосредственно из этой же таблицы, куда и записываю, вставляются просто, а для того, чтобы узнать IDType и IDBrand, нужно придумать, наверное, "запрос в запросе". Как?
sergeykom вне форума Ответить с цитированием
Старый 11.06.2015, 10:41   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Пробовал записывать через ADOTable, однако данные Combobox, содержащие поля непосредственно из этой же таблицы, куда и записываю, вставляются просто, а как "вытянуть" IDType и IDBrand из NameBrand и NameType и вставить их в этом же запросе - не пойму.
В этом случае нужно не Combobox а DBLoockUpComboBox использовать.
Если уж речь идет о ADOTable конечно )

Вообще ответ банален и обиден: Записывай как полагается.
Другое дело что сложно понять что у тебя за структура по такому описанию, и непонятно как ты наполняешь свои КомбоБоксы.
Приведи что-ли скрин базы со связями, и код наполнения комбиков, может тогда станет понятнее.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.06.2015, 15:25   #3
sergeykom
Пользователь
 
Регистрация: 10.04.2014
Сообщений: 16
По умолчанию

я использовал Combobox и заполнил их без проблем. Теперь нужно на основе заполненных ComboBox внести новые данные в таблицу. Combobox заполнял следующим образом:
Код:
  with DM do
  begin
    ADOQSelType.Close;
    ADOQSelType.SQL.Clear;
    ADOQSelType.SQL.Add('SELECT TypeName FROM Type');
    ADOQSelType.Open;
    cbSelType.Items.Clear;
    while not ADOQSelType.Eof do
    begin
      cbSelType.Items.Add(ADOQSelType['TypeName']);
      ADOQSelType.Next;
    end;
  end;

Последний раз редактировалось Stilet; 11.06.2015 в 19:10.
sergeykom вне форума Ответить с цитированием
Старый 11.06.2015, 16:14   #4
sergeykom
Пользователь
 
Регистрация: 10.04.2014
Сообщений: 16
По умолчанию

Проблема решена! Все просто: сначала через ADOQuery вытягиваем нужный ID, а затем через ADOTable вставляем данные, например, как здесь:
ADOTAddEq['EqType']:=ADOQSelIDType.FieldByName('TypeID ').AsVariant;
sergeykom вне форума Ответить с цитированием
Старый 11.06.2015, 19:12   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
сначала через ADOQuery вытягиваем нужный ID, а затем через ADOTable вставляем данные
А еще лучше:
Код:
  with DM do
  begin
    ADOQSelType.Close;
    ADOQSelType.SQL.Clear;
    ADOQSelType.SQL.Add('SELECT ID,TypeName FROM Type');
    ADOQSelType.Open;
    cbSelType.Items.Clear;
    while not ADOQSelType.Eof do
    begin
      cbSelType.AddItem(ADOQSelType['TypeName'],TObject(ADOQSelType.FieldByName('ID').AsInteger));
      ADOQSelType.Next;
    end;
  end;
А в ADOTable подставлять integer(cbSelType.Objects[cbSelType.ItemIndex]); не забывая проверять ItemIndex на -1
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавить данные в таблицу Access ара Помощь студентам 19 14.05.2011 18:09
Как списать данные в таблицу через кнопку БД cделана с Access MikaS007 БД в Delphi 4 07.06.2010 12:46
Как записать данные в таблицу полученные методом расчета? GenaRu Microsoft Office Access 3 18.12.2009 20:52
Как добавлять данные в таблицу выведенную из ACCESS в DBGrid (Delphi ADO) Ce4kok БД в Delphi 26 26.01.2009 20:35
Из Access записать данные в файл Ecxel roland_12 Microsoft Office Access 1 09.09.2008 05:51