2009-02-25 4 views
1

Я пытаюсь использовать авто дополнительных полей в DBX4 с черной базой рыбы У меня есть простая структура таблицы:Как я могу использовать Integer Auto Increment Field в DBx4 с помощью BlackFish?

CREATE TABLE tblTABname (
    ID int AUTOINCREMENT Primary Key, 
    Description varchar(100) NOT NULL); 

Перед Open я делаю:

qryTAB.FieldByName(‘ID’).AutoGenerateValue := arAutoInc; 
cdsTAB.FieldByName(‘ID’).AutoGenerateValue := arAutoInc; 

После Open:

qryTab.FieldByName('ID').ProviderFlags := [pfInWhere, pfInKey]; 
cdsTab.FieldByName('ID').ProviderFlags := [pfInWhere, pfInKey]; 

Если я:

cdsTAB.Edit; 
cdsTAB.FieldByName(‘Description’).value := ‘Test’; 
cdsTAB.Post; 

Или, если я использую это в DBGrid, он терпит неудачу с ошибкой:

«Поле„ID“должны иметь значение»

Ведьма должна была сгенерирована.

Если я запускаю запрос INSERT, он отлично работает с линиями AutoGenerateValue: = arAutoInc или без них.

Как я могу решить эту проблему?

ответ

0

Вместо вызова CDSTab.EDIT вызовите CDSTab.INSERT, чтобы добавить новую строку, вызовите только CDSTab.EDIT, когда ваш курсор уже записан, и отредактируйте значение этой записи.