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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2009, 22:16   #1
girz
Пользователь
 
Регистрация: 12.05.2009
Сообщений: 43
По умолчанию Добовление в таблицу access

Есть код
Код:
procedure TfrmAddTovar.Button2Click(Sender: TObject);
var
  lADOQuery: TADOQuery;
  lUniqueNumber,lUniqueNumberMethod: Integer;
  str:string;
begin
  str:=cbType.text;
  Delete(str,Pos('.',str),length(str));
  if (edMarka.Text<>'') AND (edDescript.Text<>'') AND (edSerial.text<>'')
    AND (edPrice.Text<>'') AND (edSrok.text<>'') AND (edMethod.Text<>'') then
  begin
    lADOQuery := TADOQuery.Create(nil);
    with lADOQuery do
    begin
      ConnectionString:=frmMain.GetConnectionString;
      try
        SQL.Text:='SELECT КодТовара from Товары ORDER BY Товары.КодТовара;';
        Open;
        Last;
        lUniqueNumber:=1+StrToInt(FieldByName('КодТовара').AsString);
      except
        lUniqueNumber:=1;
      end;
      Close;
      SQL.Text:='INSERT INTO Доставка Values ('+IntToSTr(lUniqueNumber)+','
      +#39+edMethod.Text+#39+');';
      ExecSQL;
      SQL.Text:='INSERT INTO Товары Values ('+IntToSTr(lUniqueNumber)+','
      +#39+edMarka.Text+#39+','+#39+edDescript.Text+#39+','+str+','+#39+edSerial.Text+#39
      +','+#39+edPrice.Text+#39+','+IntToStr(seCount.Value)+','+#39+edSrok.Text+#39+');';
      ExecSQL;
      frmAddTovar.Close;
    end;
  end else
    ShowMessage('Ошибка! Все поля должны быть заполнены.');
end;
-----------------------------
Нужно переделать под ado
то есть было типо
\\точно незнаю но примерно так, технология ado+delphi+Access
Код:
adoquery1.active:=false;
 adoquery1.sql.clear;
 adoquery1.sql.text:='INSERT INTO Товары Values ('+#39+edMarka.Text+#39+','+#39+edDescript.Text+#39+')';
 adoquery1.ExecSQL;
girz вне форума Ответить с цитированием
Старый 06.06.2009, 22:20   #2
girz
Пользователь
 
Регистрация: 12.05.2009
Сообщений: 43
По умолчанию

В общеем задача следующая. (Ado+delphi+access)
Есть Form1 с dbgrid, где есть таблица товар, в которой два поля марка и вид.(пример)
На ней кнопка добавить, после открывается form2 где есть два edita и кнопка ок.
По нажатию на кнопку должны данные добовлятся в таблицу.
girz вне форума Ответить с цитированием
Старый 07.06.2009, 08:54   #3
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

заводишь вспомогательный query, если при при помощи первого данные отображаются.
При нажатии на кнопку пишешь код:
adoquery2.close;
adoquery2.sql.text:='insert into t_tovar (marka,vid) values (:marka,:vid)';
adoquery2.Parametrs.ParanByName('ma rka').value:=Edit1.text;
adoquery2.Parametrs.ParanByName('vi d').value:=Edit2.text;
adoquery2.execSQL;
//далее для обновления даных в гриде необходимо сделать так:
adoquery1.close;
adoquery1.open;
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 07.06.2009, 20:20   #4
girz
Пользователь
 
Регистрация: 12.05.2009
Сообщений: 43
По умолчанию

Цитата:
Сообщение от Sparky Посмотреть сообщение
заводишь вспомогательный query, если при при помощи первого данные отображаются.
При нажатии на кнопку пишешь код:
adoquery2.close;
adoquery2.sql.text:='insert into t_tovar (marka,vid) values (:marka,:vid)';
adoquery2.Parametrs.ParanByName('ma rka').value:=Edit1.text;
adoquery2.Parametrs.ParanByName('vi d').value:=Edit2.text;
adoquery2.execSQL;
//далее для обновления даных в гриде необходимо сделать так:
adoquery1.close;
adoquery1.open;
спасибо код работает отлично, а как сделать так чтобы можно добавлять в разные таблицы выбирая их в комбобоксе.
girz вне форума Ответить с цитированием
Старый 07.06.2009, 20:31   #5
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

insert into :<tablename> (marka,vid) values (:marka,:vid)
если поля в таблицах разные тогда типа этого:
Код:
  adoquery2.Clear;
  case ComboBox.ItemIndex of
    0: begin
          adoquery2.sql.Add('insert into t_tovar (marka,vid) values (:marka,:vid)');
          adoquery2.Parametrs.ParanByName('ma rka').value:=Edit1.tex t;
          adoquery2.Parametrs.ParanByName('vi d').value:=Edit2.text;
      end;
    1: //Соответствующие данные для соответствующей таблице.
  end;
  adoquery2.execSQL;

Последний раз редактировалось Evgeniy26; 07.06.2009 в 20:40.
Evgeniy26 вне форума Ответить с цитированием
Старый 08.06.2009, 15:15   #6
girz
Пользователь
 
Регистрация: 12.05.2009
Сообщений: 43
По умолчанию

А как загрузить данные в Combobox из одного столбика таблицы базы данных, с помощью какого запроса через ado.
Спасибо.
girz вне форума Ответить с цитированием
Старый 08.06.2009, 15:55   #7
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

Компонент DBLookupComboBox - стандартный компонент. Я пользуюсь компоненто DBLookupComboboxEh из билиотеки EhLib - данную библиотеку можно скачать сдесь http://torrents.ru/forum/index.php. Указываете в них DataSourece необходимой таблице и поле

Последний раз редактировалось Evgeniy26; 08.06.2009 в 15:57.
Evgeniy26 вне форума Ответить с цитированием
Старый 08.06.2009, 16:20   #8
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

DBLookupComboBox не самый лучший компонент!!! Лучше сделать самим при помощи combobox
procedure insertComboBox;
AdoQuery1.first;
while not adoquery.eof do
begin
combobox.items.add(adoquery.fieldBy Name('myfield').value);
adoquery1.next
end;
end;
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 08.06.2009, 16:42   #9
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

Sparky. А если будет 1000 записей? Сколь времени надо ждать для заполнения?

Последний раз редактировалось Evgeniy26; 08.06.2009 в 16:44.
Evgeniy26 вне форума Ответить с цитированием
Старый 08.06.2009, 16:50   #10
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

а ты думаешь DBLookupComboBox подругому работает??? хорошо представим что у нас 1000 записей и нам нужно запись находящаяся в конце ты листать будешь?? или при помощи combobox мы вписываем первую букву и нам подставляется значение.
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление записи через список в связанную таблицу(при связи с Access) megaten БД в Delphi 5 17.05.2009 15:57
Как добавлять данные в таблицу выведенную из ACCESS в DBGrid (Delphi ADO) Ce4kok БД в Delphi 26 26.01.2009 20:35
Добавить таблицу в MS ACCESS Seqular БД в Delphi 5 21.02.2007 02:14
Создать таблицу Access в существующей базе. Nowichok БД в Delphi 6 10.02.2007 18:32