![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
HELP!!! DataSet при Insert ругается, что база read-only. [D7, IB6.x]
Muzzy © (2006-06-01 08:17:00)Ругается на строке с
FieldByName('npp').AsInteger:=StrToInt(edNpp.Text);
говорит следующее:
Cannnot modify a read-only dataset.
Что это такое? Я все проверил на 1024 раза. Может что в real-time нужно делать? И в IB настройки смотрел.
Делаю все по книжке вот так:
with IBDataSetJOTKL do
begin
IBDataSetJOTKL.Active:=True;
try
Insert;
FieldByName('npp').AsInteger:=StrToInt(edNpp.Text);
FieldByName('fidname').AsString:=edFidname.Text;
FieldByName('dateotkl').AsDateTime:=edDateotkl.Date;
FieldByName('timeotkl').AsDateTime:=edTimeotkl.Time;
FieldByName('datevkl').AsDateTime:=edDatevkl.Date;
FieldByName('timevkl').AsDateTime:=edTimevkl.Time;
FieldByName('lengthotkl').AsDateTime:=edLengthotkl.Time;
FieldByName('priotkl').AsString:=edPriotkl.Text;
FieldByName('npo').AsString:=edNpo.Text;
FieldByName('katpotr').AsString:=edKatpotr.Text;
FieldByName('klassif').AsInteger:=StrToInt(edKlassif.Text);
FieldByName('nedootp').AsInteger:=StrToInt(edNedootp.Text);
FieldByName('datepered').AsDateTime:=edDatepered.Date;
FieldByName('timepered').AsDateTime:=edTimepered.Time;
FieldByName('peredkomu').AsString:=edPeredkomu.Text;
FieldByName('commentmemo').AsString:=edCommentmemo.Text;
Post;
finally
IBDataSetJOTKL.Active:=False;
end;
end;
В чем проблема?
dolmat (2006-06-02 09:30:00) [1]Возможно свойство Fieds не заполнено
Щелкнуть по IBDataset правой кнопкой мышки, выбрать Fiels editor, потом тойже кнопкой мышки Add All ..
Desdechado (2006-06-01 13:41:00) [2]судя по скрипту таблицы - БД в 3-м диалекте
а в нем важен регистр символов для имен, если они стоят в кавычках
поэтому нет поля NPP, но есть "npp"
подправь INSERT кавычками для полей
Muzzy (2006-06-01 13:38:00) [3]
> В данном случае ничего и писать то не надо. Надо кликнуть
> правой кнопкой на датасете и в редакторе правильно указать
> ключевые и обновляемые поля, после чего сгенерировать (кнопку
> нажать) модифицирующие запросы.
Ну сгенерил, вот что получилось:
insert into JOTKL
(npp, fidname, dateotkl, timeotkl, datevkl, timevkl, lengthotkl, priotkl,
npo, katpotr, klassif, nedootp, datepered, timepered, peredkomu, commentmemo)
values
(:npp, :fidname, :dateotkl, :timeotkl, :datevkl, :timevkl, :lengthotkl,
:priotkl, :npo, :katpotr, :klassif, :nedootp, :datepered, :timepered,
:peredkomu, :commentmemo)
Выдает:
Column unknow NPP'
SQL error code = -206.
И что дальше?
Muzzy (2006-06-01 12:15:00) [4]
> В данном случае ничего и писать то не надо. Надо кликнуть
> правой кнопкой на датасете и в редакторе правильно указать
> ключевые и обновляемые поля, после чего сгенерировать (кнопку
> нажать) модифицирующие запросы.
Блин! А про это в книжке не сказано!
Sergey13 (2006-06-01 12:12:00) [5]2[6] Muzzy (01.06.06 12:03)
> Да читал я.
Да ладно заливать то. 8-)
>Ну подскажите че написать-то
В данном случае ничего и писать то не надо. Надо кликнуть правой кнопкой на датасете и в редакторе правильно указать ключевые и обновляемые поля, после чего сгенерировать(кнопку нажать) модифицирующие запросы.
Сергей М. (2006-06-01 12:11:00) [6]Замени IBDataset на IBTable и не мучайся.
Muzzy (2006-06-01 12:11:00) [7]Было в FAQ, но что это и куда пихать???
http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988623447&n=14
Muzzy (2006-06-01 12:07:00) [8]Ну подскажите идиоту где еще порыть. Прогу срочно делать надо. Простая ведь. Того и надо, что записи вствлять.
Вот и база:
CREATE TABLE "JOTKL"
(
"npp" INTEGER,
"fidname" VARCHAR(64),
"dateotkl" DATE,
"timeotkl" TIME,
"datevkl" DATE,
"timevkl" TIME,
"lengthotkl" TIME,
"priotkl" VARCHAR(254),
"npo" VARCHAR(254),
"katpotr" VARCHAR(12),
"klassif" SMALLINT,
"nedootp" SMALLINT,
"datepered" DATE,
"timepered" TIME,
"peredkomu" VARCHAR(64),
"commentmemo" VARCHAR(254)
);
Muzzy (2006-06-01 12:03:00) [9]> Похоже, прежде чем написать что то, тебе придется еще многое прочитать. ИМХО.
Да читал я. Тогда уж проще через IBSQL. Но хотелось-то попроще, через DataSet. Ну подскажите че написать-то поля-то в коде есть. И вопрос-то в другом. Почему недает вставить запись? Ладно если другая ошибка, дело-то в этом.
Sergey13 (2006-06-01 11:41:00) [10]2 [4] Muzzy (01.06.06 11:39)
>А что там написать-то?
Похоже, прежде чем написать что то, тебе придется еще многое прочитать. ИМХО.
Muzzy (2006-06-01 11:39:00) [11]>> Заполни свойство InsertSQL
А что там написать-то?
INSERT и иже с ним? А зачем тогда FieldByName ?
Sergey13 (2006-06-01 09:05:00) [12]>Делаю все по книжке вот так:
Выкинь такую книжку или почитай внимательнее. ИМХО.
Зачем открывать датасет только для того что бы вставить одну запись!
dolmat (2006-06-01 09:03:00) [13]
> Ругается на строке с
> FieldByName('npp').AsInteger:=StrToInt(edNpp.Text);
Возможно для этого лучше генератор привязать
ANB (2006-06-01 08:28:00) [14]Заполни свойство InsertSQL