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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.08.2011, 14:18   #1
yuta_86
Пользователь
 
Регистрация: 06.12.2010
Сообщений: 99
По умолчанию Добавление записи в бд

добрый день, как добавить запись в бд Acceess.

пишу такой код

Код:
procedure TForm3.Button12Click(Sender: TObject);
begin
if not AdoTable1.CanModify then
 begin
   beep;
   MessageDlg('Редактирование запрещено',mtInformation,[mbOK],0);
   exit;
  end;

AdoTable1.InsertRecord([nil,Edit8.Text, Edit8.Text, Edit8.Text, StrToDateTime('01.01.0001') ]);
  AdoTable1.Post;
end;
вот на этом самом AdoTable1.Post; вылетает ошибка

Код:
Adotable1: Dataset not in edit or insert mode
я так понимаю редактирование или вставка запрещено.
а как включить редактирование?


пробовал ещё писать так


Код:
AdoTable1.FieldByName('family').AsString:=Edit8.Text;
AdoTable1.FieldByName('name').AsString:=Edit8.Text;
AdoTable1.FieldByName('year_born').AsDateTime:=StrToDateTime('01.01.0001');
AdoTable1.Post;
в таблице программы отображалось но в самой базе ничего не было.

подскажите, что делаю не так.
спасибо

Последний раз редактировалось Stilet; 08.08.2011 в 14:43.
yuta_86 вне форума Ответить с цитированием
Старый 08.08.2011, 14:32   #2
yuta_86
Пользователь
 
Регистрация: 06.12.2010
Сообщений: 99
По умолчанию

кстати во-втором случае

Код:
AdoTable1.FieldByName('family').AsS tring:=Edit8.Text;
 AdoTable1.FieldByName('name').AsStr ing:=Edit8.Text;
 AdoTable1.FieldByName('year_born'). AsDateTime:=StrToDateTime('01.01.00 01');
 AdoTable1.Post;
всё отображается и в базе верно

а в первом в базе не добавляется

думаю проблема в

Код:
AdoTable1.InsertRecord([nil,Edit8.Text, Edit8.Text, Edit8.Text, StrToDateTime('01.01.0001') ]);
а именно в nil

Последний раз редактировалось Stilet; 08.08.2011 в 14:44.
yuta_86 вне форума Ответить с цитированием
Старый 08.08.2011, 14:45   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а именно в nil
А я думаю что ты просто не перевел в режим вставки или редактирования.
Я так не делаю, так что навскидку выполни AdoTable1.Edit а потом уже и твой InsertRecord.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.08.2011, 14:55   #4
yuta_86
Пользователь
 
Регистрация: 06.12.2010
Сообщений: 99
По умолчанию

попробовал и ничего не изменилось.....
yuta_86 вне форума Ответить с цитированием
Старый 08.08.2011, 16:26   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну ещё раз попробуйте.. так, например:
Код:
procedure TForm3.Button12Click(Sender: TObject);
begin
if not AdoTable1.CanModify then
 begin
   beep;
   MessageDlg('Редактирование запрещено',mtInformation,[mbOK],0);
   exit;
  end;

  AdoTable1.Append;
  AdoTable1.FieldByName('family').AsString:=Edit8.Text;
  AdoTable1.FieldByName('name').AsString:=Edit8.Text;
  AdoTable1.FieldByName('year_born').AsDateTime:=StrToDateTime('01.01.0001');
  AdoTable1.Post;
end;

p.s. если у Вас ключевое поле не счётчик, то его надо обязательно задавать!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.08.2011, 10:21   #6
yuta_86
Пользователь
 
Регистрация: 06.12.2010
Сообщений: 99
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
p.s. если у Вас ключевое поле не счётчик, то его надо обязательно задавать!
в документации сказано что задавать важно только счётчик (nil), а остальные поля можно не заполнять.
в принципе они у меня либо текстовые, либо числовые.

если использовать AdoTable1.FieldByName(.....) то всё работает мне не понятно почему не хочет с AdoTable1.InsertRecord
yuta_86 вне форума Ответить с цитированием
Старый 09.08.2011, 10:51   #7
yuta_86
Пользователь
 
Регистрация: 06.12.2010
Сообщений: 99
По умолчанию

ещё очень интересная вещь выяснилась....

AdoTable1.Insert;
AdoTable1.FieldByName('family').AsS tring:=Edit8.Text;
AdoTable1.FieldByName('name').AsStr ing:=Edit8.Text;
AdoTable1.FieldByName('year_born'). AsDateTime:=StrToDate('11.01.2001') ;


записи во время работы программы добавляются в конец. стоит закрыть приложение и снова его открыть то те записи, которые добавились они вообще где-то посередине. если делать сортировку по индексу то всё нормально. стоит закрыть приложение то же самое.....
yuta_86 вне форума Ответить с цитированием
Старый 09.08.2011, 11:20   #8
yuta_86
Пользователь
 
Регистрация: 06.12.2010
Сообщений: 99
По умолчанию

почему при связывании двух таблиц и добавляя записи в одну из них вторая обновляется только после того как перейти на такую запись в таблице номер которой соответствует первой записи в другой таблице?
yuta_86 вне форума Ответить с цитированием
Старый 09.08.2011, 11:25   #9
yuta_86
Пользователь
 
Регистрация: 06.12.2010
Сообщений: 99
По умолчанию

Цитата:
Сообщение от yuta_86 Посмотреть сообщение
почему при связывании двух таблиц и добавляя записи в одну из них вторая обновляется только после того как перейти на такую запись в таблице номер которой соответствует первой записи в другой таблице?
решилось обновлением другой таблицы..... другого способа не нашёл
yuta_86 вне форума Ответить с цитированием
Старый 31.05.2013, 12:06   #10
ТрофимоваО
Новичок
Джуниор
 
Регистрация: 17.05.2013
Сообщений: 2
По умолчанию

procedure TForm9.Label4Click(Sender: TObject);
begin
ADOTable1.insert;
ADOTable1.FieldByName('Фамилия'). AsString:=form8.Edit1.Text; // добавляем в поле фамилии значение из текстового поля
ADOTable1.FieldByName('Имя'). AsString:=form8.Edit2.Text;
ADOTable1.FieldByName('Отчество'). AsString:=form8.Edit3.Text;
ADOTable1.FieldByName('Группа'). AsString:=form8.Edit4.Text;
ADOTable1.Post;
ADOTable1.Close;
form10.Show;
form9.Hide;
end;
ТрофимоваО вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление записи в бд Lokos БД в Delphi 8 15.12.2009 16:36
Добавление записи gitzzz Microsoft Office Access 2 23.06.2009 19:30
Добавление записи LLIYT БД в Delphi 15 09.06.2009 18:25
Добавление записи rn6hac БД в Delphi 3 02.06.2009 10:26
Добавление записи.... Droid БД в Delphi 2 04.06.2008 15:50