Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Занесение данных в Access(ошибка)

14K
27 июня 2008 года
Дрон
37 / / 29.06.2007
Здраствуйте, у меня проблема

Есть созданая в Access БД, там есть таблица, так вот при попытке занести в таблицу значение выдаёт сообшение о не возможности модификации поля.

Поле является ключевым, имеет связь, тип:Числовой

 
Код:
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;


в чём проблема и как её можно решить?
Заранее спасибо!!!
6
27 июня 2008 года
George
4.1K / / 05.01.2007
попробуй так:
[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]
14K
27 июня 2008 года
Дрон
37 / / 29.06.2007
неа не хочет:(
1
27 июня 2008 года
kot_
7.3K / / 20.01.2000
приведите сообщение об ошибке. Ругаеться - на вас мама - система выдает сообщение о ошибке.
247
28 июня 2008 года
wanja
1.2K / / 03.02.2003
Оно, случайно, не автоинкрементальное? Тогда задавать его не надо. Кстати, если там числа идут не по порядку(допустим 1,2,3,5), то RecordCount+1 даст повторение.
6
28 июня 2008 года
George
4.1K / / 05.01.2007
если инкрементальное, тогда просто сделать так:
[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 и т.д.
14K
30 июня 2008 года
Дрон
37 / / 29.06.2007
Привожу сообщение структуру таблицы и схему.

Посмотрите пожалуйста...

Заранее спасибо!!!
6
30 июня 2008 года
George
4.1K / / 05.01.2007
Ошибка - поле не может быть модифицированио. А в структуре мы видим, что поле индексировано - совпадения не допускаются. Что это значит? Ты пытаешься присвоить этой ячейке значение, которое уже имеется в этом поле. попробуй сделать так, как написано в моем посте выше.
14K
30 июня 2008 года
Дрон
37 / / 29.06.2007
ну так эта ошибка вылезла при первом запуске проги, когда таблицы были пусты..
6
30 июня 2008 года
George
4.1K / / 05.01.2007
по любому попробуй не изменять это поле. сделай его вообще счетчиком и будет тебе радость. и вообще, ты сам то как-нибудь экспериментируй, котгда ошибки появляются. тычь в небо почаще ;) например выясни после insert'a вставь ShowMessage(IntToStr(Form1.ADOTable1.RecordCount)); посмотри, что там будет
14K
30 июня 2008 года
Дрон
37 / / 29.06.2007
Washington :)

С методом научного тыка знаком давно
Цитата:
ShowMessage(IntToStr(Form1.ADOTable1.RecordCount)) ;



Делал, там всё вроде как гуд...

Ша попробую счётчик, но он мне не очень подойдёт!!!

6
30 июня 2008 года
George
4.1K / / 05.01.2007
почему? просто если ты будешь изменять другие таблицы определяй id этого человека из таблицы Tab1 и вноси его в другие. ну типа
 
Код:
Select Ind_Nom From Tab1 Where (Fam="" and Ima="" and Otch="")

и
 
Код:
Update TabX Set Ind_Nom=""

ну сто-то наподобии, просто под свои нужды сделай, да и всё.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог