Additional
dbCAP
AnyDAC
ThinDAC
NCOCI8
Topic: Проблема с InsertSQL полей имеющих признак NotNull
Проблема с InsertSQL полей имеющих признак NotNull
Posted: 2007/06/11 03:19
 
Здравствуйте, Дмитрий!

Подскажите пожалуйста, как решить следующую проблему:

Пример:

Имеется таблица TABLE1:

ID [pk, int(1,1)]
FIELD1 [int, Allow Nulls=False] – Это поле является обязательным и имеет параметр Not Null (Allow Nulls=False)
FIELD2 [int, Allow Nulls=True]

В приложении есть два компонента:

TADQuery
TADUpdateSQL

TADQuery связан с TADUpdateSQL

В свойстве TADUpdateSQL.InsertSQL:

INSERT INTO [DBO].[TABLE1]
([FIELD1],
[FIELD2])
VALUES
(1,
:FIELD2);

SELECT SCOPE_IDENTITY() AS
[ID],
[FIELD1],
[FIELD2]
FROM [DBO].[TABLE1]
WHERE [ID] = SCOPE_IDENTITY();

У компонента TADQuery Свойство UpdateOptions.UpdateChangedFields=False.

Проблема заключается в следующем:

При добавлении новой записи возникает ошибка:

EDatabaseError with message ‘Field ‘FIELD1’ must have a value’.

Не пойму в чем проблема ведь в InsertSQL явно указано значение этого поля.
Если снять у поля FIELD1 признак обязательного поля (AllowNulls=True), то вставка записи проходит успешно и ошибка не возникает.

Почему возникает ошибка, ведь значение для поля в InsertSQL указано явно.

Заранее спасибо за ответ!
Re:Проблема с InsertSQL полей имеющих признак NotNull
Posted: 2007/06/21 08:33
 
Привет

Вам необходимо установить в редакторе полей датасета Required = False для поля Field1.

Удачи,
Дмитрий