Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.94/95: Рейтинг темы: голосов - 95, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 13.01.2011
Сообщений: 19
1

Как добавлять данные в базу данных ADO?

13.01.2011, 14:17. Показов 18685. Ответов 25
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
База данных Access состоит из двух таблиц.
На первой форме расположен ADOConnection
На второй ADOQuery который соединяет эти данные в один DBGrid
Третья форма нужна для добавления данных (на ней только Labelы и Editы). Как правильно соединить Edit-ты с БД? Или лучше использовать DBEdit? Может быть не хватает еще чего то?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.01.2011, 14:17
Ответы с готовыми решениями:

Delphi, ADO- Как вставить и сохранить фото (Jpeg) в базу данных
Ни где не могу найти конкретного ответа : Как всавить и сохранить в базу данных ADO Access фото...

Сделать кнопки которые будут удалять и добавлять строки в базу данных.
не могу сделать кнопки которые будут удалять и добавлять строки в базу данных, кто шарит, помогите....

Изменить базу данных ADO MS Access в MS SQL Server 2008R
Добрый день! Имеется программа написанная в Delphi7 с базой данных по технологии ADO в Microsoft...

Помогите как создать базу через ADO
Помогите как создать базу через ADO, внести в нее записи, и произвести поиск в ней

25
126 / 126 / 24
Регистрация: 14.02.2010
Сообщений: 289
13.01.2011, 14:27 2
используйте еще SQL запрос на добавление
SQL
1
2
INSERT INTO имя таблицы(список столбцов таблицы)
 VALUES (а тут уже значения через запятую)
В вашем случае это Edit-ы. Но лучше посмотрите запросы с параметрами! типа:

SQL
1
2
INSERT INTO имя таблицы(список столбцов таблицы)
 VALUES (:P1, :P2, и т.д.)
0
0 / 0 / 0
Регистрация: 13.01.2011
Сообщений: 19
13.01.2011, 21:06  [ТС] 3
чтобы мне использовать SQL на форму надо кинуть ADOQuery? Извините за глупый вопрос!
0
126 / 126 / 24
Регистрация: 14.02.2010
Сообщений: 289
13.01.2011, 21:21 4
Цитата Сообщение от Choovak Посмотреть сообщение
чтобы мне использовать SQL на форму надо кинуть ADOQuery? Извините за глупый вопрос!
да и SQL прописать запрос!
0
0 / 0 / 0
Регистрация: 13.01.2011
Сообщений: 19
13.01.2011, 21:45  [ТС] 5
Например:
SQL
1
2
INSERT INTO Info_reisa, Punkt_naznachenia (№_Reisa, Marshrut, Cena_bileta, ... и т.д.)
VALUES  (EditReis, EditMarshrut, EditCena_bileta, ....)
Правильно????

Добавлено через 19 минут
Ошибка синтаксиса в инструкции INSERT INTO
Почему???
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
13.01.2011, 23:48 6
Choovak, потому что нельзя одновременно добавлять в несколько таблиц этим запросом
0
0 / 0 / 0
Регистрация: 13.01.2011
Сообщений: 19
14.01.2011, 21:47  [ТС] 7
нельзя одновременно добавлять в несколько таблиц этим запросом
А как правильно? Добавить еще одно ADOQuery?

Добавлено через 2 часа 3 минуты
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TDobavlenie.BitBtnDobavlenieClick(Sender: TObject);
begin
  ADOQuery1.Active:=false;
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('INSERT INTO Info_reisa');
  ADOQuery1.SQL.Add('(¹_Reisa_I, Marshrut)');
  ADOQuery1.SQL.Add('VALUES('+EditReis.Text+', '+EditMarshrut.Text+')');
  ADOQuery1.ExecSQL;
  ADOQuery1.SQL.Text:='SELECT * FROM Info_reisa';
  ADOquery1.Open;
end;
 
end.
А когда вписываю данные и нажимаю кнопку. Пишет что какой то параметр не имеет значения по умолчанию
0
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 3
14.01.2011, 22:52 8
Люди, похожая проблема. Через Дельфи7 пытаюсь добавить запись в таблицу аксесс. Подключение к базе через АДО. Таблица из трех полей ID - числовое поле (первичный ключ), Date дата время, Mess поле мемо.
Delphi
1
2
3
4
5
6
7
      ADOCommand := TADOCommand.Create(nil);
      ADOCommand.Connection := ADOConnection1;
      ADOCommand.CommandText :='INSERT INTO ServerMessenger(ID, Date, Mess) VALUES (:ID,:Date,:Mess)';
     ADOCommand.Parameters.ParamByName('ID').Value := Counter+1;
     ADOCommand.Parameters.ParamByName('Date').Value :=  FormatDateTime('yyyy.mm.dd hh:mm:ss', Now); 
    ADOCommand.Parameters.ParamByName('Mess').Value := Memo.Text;
   ADOCommand.Execute;
На выполнение выдает Ошибка синтаксиса в инструкции INSERT INTO. Если дату не писать проблем нет, пишется нормально. Как записать дату в формате yyyy.mm.dd hh:mm:ss? Пробывал к примеру так
Delphi
1
ADOCommand.Parameters.ParamByName('Date').Value :=  Strtodatetime('09.10.2010');
тоже самое. Через TADOQuery, также. Помогите.
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,255
15.01.2011, 07:49 9
Цитата Сообщение от Cav Посмотреть сообщение
ADOCommand.Parameters.ParamByName('Date').Value := FormatDateTime('yyyy.mm.dd hh:mm:ss', Now);
FormatDateTime никогда не использовал, но с полями и параметрами типа дата-время, естественно, работаю. Всегда использую
Delphi
1
ADOCommand.Parameters.ParamByName('Date').ASDateTime := Strtodatetime('09.10.2010');
ВАм надо убедиться, что поле и параметр у Вас действительно имеют тип TDateTime
0
0 / 0 / 0
Регистрация: 13.01.2011
Сообщений: 19
15.01.2011, 20:29  [ТС] 10
А мне чё делать?

Добавлено через 1 час 12 минут
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TDobavlenie.BitBtnDobavlenieClick(Sender: TObject);
begin
  if ((EditReis.Text='') or (EditMarshrut.Text='')) then
  MessageDlg('Вы не заполнили необходимые поля', mtWarning, [mbOk], 0)
  else
  ADOQuery1.Insert;
  ADOQuery1.FieldByName('№_Reisa_I').AsString:= EditReis.Text;
  ADOQuery1.FieldByName('Marshrut').AsString:= EditMarshrut.Text;
  ADOQuery1.Post;
end;
Переделал свой код вот так, только при нажатии кнопки прога виснет, а при следующем запуске видно что добавила данные. Как исправить зависание???

Добавлено через 3 часа 48 минут
И почему после добавления данные сразу не отображаются в таблице, а лишь после перезагрузки проги???
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,255
16.01.2011, 06:51 11
Цитата Сообщение от Choovak Посмотреть сообщение
И почему после добавления данные сразу не отображаются в таблице
Какая СУБД?
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
16.01.2011, 10:26 12
Choovak, не советую использовать dbedit-ы, проще всего назвать эдиты аналогично названиям полей таблицы и потом с помощью findcomponent найти указатели на них и записать данные
0
0 / 0 / 0
Регистрация: 13.01.2011
Сообщений: 19
18.01.2011, 14:41  [ТС] 13
Цитата Сообщение от SAMZ Посмотреть сообщение
Какая СУБД?
Access

Добавлено через 22 часа 39 минут
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
procedure TDobavlenie.BitBtnDobavlenieClick(Sender: TObject);
begin
if ((EditReis.Text='') or (EditMarshrut.Text='')) then
  MessageDlg('Вы не заполнили необходимые поля', mtWarning, [mbOk], 0)
  else
  ADOQuery1.Insert;
  ADOQuery1.FieldByName('¹_Reisa_I').AsString:= EditReis.Text;
  ADOQuery1.FieldByName('Marshrut').AsString:= EditMarshrut.Text;
  ADOQuery1.Post;
  EditReis.Clear;
  EditMarshrut.Clear;
  MessageDlg('Рейс успешно добавлен', mtInformation, [mbOk], 0);
     Poisk.ADOQuery1.Close;
    Poisk.ADOQuery1.SQL.Clear;
    Poisk.ADOQuery1.SQL.Add('select * from Info_reisa, Punkt_naznachenia');
    Poisk.ADOQuery1.Open;
  end;

Еще мне надо чтобы добавляла на форму Raspisanie (на ней 2 ADOTable, ADOConnection, 2 DataSource и 2 DBGrid)
И еще. Если в одно поле не ввел какое нибудь значение, мне выдает предупреждение "Вы не заполнили необходимые поля" нажимаю Ок и приложение выдает ошибку. Из-за чего?

Добавлено через 18 минут
Почему на форме Poisk он обновляет, а при новом запуске то что добавляли не видно?
0
0 / 0 / 0
Регистрация: 13.01.2011
Сообщений: 19
19.01.2011, 20:58  [ТС] 14
С добавление вроде разобрался но только: Почему на форме Poisk он обновляет, а при новом запуске то что добавляли не видно? (что там надо делать?)
И еще: Что надо чтобы все Editы были заполнены? Код написал:
Delphi
1
2
3
4
5
6
if ((EditReis.Text='') or (EditMarshrut.Text='') or (MaskEditVrema_otpravlenia.Text='')
or (EditDni_otpravlenia.Text:='') or (EditKolich_mest.Text:='')
or (ComboBoxTip.Items.Text:='') or (EditMarka.Text:='') or (EditVoditel.Text:='')
or (EditGos_nomer.Text:='')) then
  MessageDlg('Вы не заполнили необходимые поля', mtWarning, [mbOk], 0)
  else .....
Но стопарится в районе or (EditKolich_mest.Text:=''). До этого я пробовал всего с двумя Editами - работало
0
126 / 126 / 24
Регистрация: 14.02.2010
Сообщений: 289
20.01.2011, 10:49 15
Цитата Сообщение от Choovak Посмотреть сообщение
С добавление вроде разобрался но только: Почему на форме Poisk он обновляет, а при новом запуске то что добавляли не видно? (что там надо делать?)
И еще: Что надо чтобы все Editы были заполнены? Код написал:
if ((EditReis.Text='') or (EditMarshrut.Text='') or (MaskEditVrema_otpravlenia.Text='')
or (EditDni_otpravlenia.Text:='') or (EditKolich_mest.Text:='')
or (ComboBoxTip.Items.Text:='') or (EditMarka.Text:='') or (EditVoditel.Text:='')
or (EditGos_nomer.Text:='')) then
MessageDlg('Вы не заполнили необходимые поля', mtWarning, [mbOk], 0)
else .....
Но стопарится в районе or (EditKolich_mest.Text:=''). До этого я пробовал всего с двумя Editами - работало
для проверки нужно использовать знак равенства "=", а не знак присвоения ":="
0
0 / 0 / 0
Регистрация: 13.01.2011
Сообщений: 19
20.01.2011, 14:55  [ТС] 16
Цитата Сообщение от sanya0107 Посмотреть сообщение
для проверки нужно использовать знак равенства "=", а не знак присвоения ":="
Прошу прощения! Я переписал:
Delphi
1
2
3
4
5
6
if EditReis.Text<>'' or EditMarshrut.Text<>'' or MaskEditVrema_otpravlenia.Text<>''
or EditDni_otpravlenia.Text<>'' or EditKolich_mest.Text<>''
or ComboBoxTip.Items.Text<>'' or EditMarka.Text<>'' or EditVoditel.Text<>''
or EditGos_nomer.Text<>'' then
  MessageDlg('Вы не заполнили необходимые поля', mtWarning, [mbOk], 0)
  else....
но всё равно не работает (так же символы <> я менял на =)

Добавлено через 1 час 11 минут
всё спасибо разобрался )))
0
0 / 0 / 0
Регистрация: 13.01.2011
Сообщений: 19
23.01.2011, 19:19  [ТС] 17
Подскажите еще. Как лучше организовать добавление нескольких данных.
Например: Рейс 1, а вот населенных пунктов через которые он проходит - несколько, и не всегда одинаковое число, по этому на форму Добавления, бессмысленно размещать кучу Editов.
Я думаю воспользоваться DBGrid - это реально?
Или что-то другое лучше применить?
0
116 / 58 / 6
Регистрация: 16.12.2009
Сообщений: 204
24.01.2011, 09:26 18
Цитата Сообщение от Choovak Посмотреть сообщение
Рейс 1, а вот населенных пунктов через которые он проходит - несколько, и не всегда одинаковое числ
нужно добавить еще одну таблицу в которой будет хранится список населенных пунктов (либо названия городов, либо их идентификаторы, если есть таблица городов) для каждого рейса (связыватся по идентификатору рейса). Это что касается структуры БД, а в интерфейсе программы уже можно сделать по всякому, как будет удобней.
0
0 / 0 / 0
Регистрация: 13.01.2011
Сообщений: 19
24.01.2011, 12:21  [ТС] 19
Цитата Сообщение от _victor Посмотреть сообщение
нужно добавить еще одну таблицу в которой будет хранится список населенных пунктов (либо названия городов, либо их идентификаторы, если есть таблица городов) для каждого рейса (связыватся по идентификатору рейса). Это что касается структуры БД, а в интерфейсе программы уже можно сделать по всякому, как будет удобней.
В структуре базы данных это уже есть. И ключевое поле тоже. Только через какие компоненты лучше сделать добавление?
0
0 / 0 / 0
Регистрация: 13.01.2011
Сообщений: 19
25.01.2011, 12:56  [ТС] 20
А есть например такой код, который добавляет на форму дополнительные Editы?
К примеру: заполнил ряд Editов для одного проходящего населенного пункта, но мне надо ввести еще один населенный пункт. Нажимаю на кнопку и появляется еще ряд Editов.
?????????
0
25.01.2011, 12:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.01.2011, 12:56
Помогаю со студенческими работами здесь

Как экспортнуть данные из ADO в файл Excel?
Вопрос собственно простой... Delphi7 - пользуясь прочитанным на этом форуме пытаюсь экспортнуть...

Как добавлять данные в базу данных localDB?
Всем привет, база данных с расширением .sdf Вот как я получаю данные с бд ...

Как добавлять записи в таблицу базы данных Access программно через ADO?
Как добавлять записи в таблицу базы данных Access программно через ADO?:yahoo:

Как добавлять в базу данных sql и сохранять изменения
Всем доброго времени суток,нужна помощь,подскажите пожалуйста как добавить запись в базу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru