Страница 1 из 1

FB 2.0 + TIBDataSet + TDBGrid проблема InsertSQL?

Добавлено: 30 янв 2011, 05:42
sdsfy
Имеется некоторая таблица с четырьмя полями (все существенные структуры и код описаны ниже).
При попытке ввода новой записи через DBGrid, без явного указания значения (абсолютно любого, хоть 0, хоть 100, хоть любое дублирование уже хрянящегося в одной из записи) "автоинкрементного" поля, значение в которое заносится Before Insert Триггером, выдается ошибка - Field 'CLASSID' must have a value.. Самое интересное, что в InsertSQL это поле вообще пропущено, но если вписать значение в DBDrid в это поле явно, то ошибка не выдается, а фактическое значение будет взято от Триггера.

Я вообще не пойму, откуда (на каком уровне) инициируется эта ошибка? 99% процентов уверен, что это не сервер. Тогда кто? IBX компонент? Который? TDBGrid? или TDataSource?

Кто может подсказать?

Код: Выделить всё

CREATE TABLE DeviceClasses (
       ClassID UID /*Integer NOT NULL*/ NOT NULL,
       ClassName VChar256 /*Varchar(256) */ NOT NULL,
       RegisteringTime TDateTime /*TimeStamp NOT NULL*/ NOT NULL,
       Comment Comment /*Blob SUB_TYPE 0 */,
       CONSTRAINT PK_DeviceClasses PRIMARY KEY (ClassID),
       CONSTRAINT UNQ_DeviceClasses_1 UNIQUE (ClassName)
);
Триггер

Код: Выделить всё

CREATE TRIGGER TR_GEN_DeviceClasses_ID FOR DeviceClasses
ACTIVE BEFORE INSERT POSITION 0
AS

begin
  IF (NEW.ClassID IS NULL) THEN 
    NEW.ClassID=GEN_ID(GEN_DeviceClasses_ID,1);

end

InsertSQL

Код: Выделить всё

insert into DEVICECLASSES (CLASSNAME, COMMENT) VALUES (:CLASSNAME, :COMMENT);

Re: FB 2.0 + TIBDataSet + TDBGrid проблема InsertSQL?

Добавлено: 30 янв 2011, 14:29
Dimitry Sibiryakov
RTFM TField.Required