Form1.ADOTable1.Insert;
Form1.ADOTable1.Fields[0].AsInteger:=Form1.ADOTable1.RecordCount+1;//ВОТ СЮДА РУГАЕТСЯ!!!!!!!!!!!!!!!!!
Form1.ADOTable1.Fields[1].AsString:=Edit1.Text;
Form1.ADOTable1.Fields[2].AsString:=Edit2.Text;
Form1.ADOTable1.Fields[3].AsString:=Edit3.Text;
Form1.ADOTable1.Fields[4].AsInteger:=StrTOINt(Edit4.Text);
Form1.ADOTable1.Post;
Занесение данных в Access(ошибка)
Есть созданая в Access БД, там есть таблица, так вот при попытке занести в таблицу значение выдаёт сообшение о не возможности модификации поля.
Поле является ключевым, имеет связь, тип:Числовой
Код:
в чём проблема и как её можно решить?
Заранее спасибо!!!
[highlight=delphi]
with Form1.ADOTable1 do
begin
a := RecordCount + 1;
Insert;
Fields[0].AsInteger := a;
Fields[1].AsString:=Edit1.Text;
Fields[2].AsString:=Edit2.Text;
Fields[3].AsString:=Edit3.Text;
Fields[4].AsInteger:=StrToInt(Edit4.Text);
Post;
end;
[/highlight]
неа не хочет:(
приведите сообщение об ошибке. Ругаеться - на вас мама - система выдает сообщение о ошибке.
Оно, случайно, не автоинкрементальное? Тогда задавать его не надо. Кстати, если там числа идут не по порядку(допустим 1,2,3,5), то RecordCount+1 даст повторение.
[highlight=delphi]
with Form1.ADOTable1 do
begin
insert;
Fields[1].AsString:=Edit1.Text;
Fields[2].AsString:=Edit2.Text;
Fields[3].AsString:=Edit3.Text;
try
Fields[4].AsInteger:=StrToInt(Edit4.Text);
except
ShowMessage('Вы ОБЯЗАНЫ ввести число, неужели не понятно?!');
exit;
end;
post;
end;
[/highlight]
и переименуй эти ужасные EditX, FormX, ADOQueryX. Ведь гораздо удобнее было бы TextEdit, MainForm и т.д.
Посмотрите пожалуйста...
Заранее спасибо!!!
Ошибка - поле не может быть модифицированио. А в структуре мы видим, что поле индексировано - совпадения не допускаются. Что это значит? Ты пытаешься присвоить этой ячейке значение, которое уже имеется в этом поле. попробуй сделать так, как написано в моем посте выше.
ну так эта ошибка вылезла при первом запуске проги, когда таблицы были пусты..
по любому попробуй не изменять это поле. сделай его вообще счетчиком и будет тебе радость. и вообще, ты сам то как-нибудь экспериментируй, котгда ошибки появляются. тычь в небо почаще ;) например выясни после insert'a вставь ShowMessage(IntToStr(Form1.ADOTable1.RecordCount)); посмотри, что там будет
С методом научного тыка знаком давно
Цитата:
ShowMessage(IntToStr(Form1.ADOTable1.RecordCount)) ;
Делал, там всё вроде как гуд...
Ша попробую счётчик, но он мне не очень подойдёт!!!
Код:
Select Ind_Nom From Tab1 Where (Fam="" and Ima="" and Otch="")
и
Код:
Update TabX Set Ind_Nom=""
ну сто-то наподобии, просто под свои нужды сделай, да и всё.