Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.22;
Скачать: CL | DM;

Вниз

AutoINC поля и Interbase   Найти похожие ветки 

 
msoftware ©   (2003-05-02 04:54) [0]

Приветствую! В б.д INterBase имеется автоприращаемое поле, для него естественно генератор и триггер. Из компонентов использую TIBTable, TIBUpdateSQl, TIBTransaction,TIBDataBase, TDataSource.
При добавлении новой записи в базу данных, возникает ошибка, которая просит чтобы юзер внес значение в это AutoINC поле, хотя значение этого поля должно само генерироваться. Понятно что генерация происходит только после метода POST, а пока AutoINC поле пусто сервер не дает команду на выполнение POST. Можно было бы сделать генерируемое поле необязательным, но на него ссылается первичный ключ. Посоветуйте как быть


 
Sergey Masloff   (2003-05-02 09:21) [1]

Компоненты доступа закачивают метаданные из бызы и для ключа ставят свойство Required. То есть пока его не введешь... Решение - снять этот флажок вручную.
TField -> property Required: Boolean;


 
Vlad1 ©   (2003-05-02 20:45) [2]

Попробуй TIBQUERY, всё делай через ExecSQL - нахрен тебе TIBTable,TIBUpdateSQL? - и проблем не будет.


 
Zacho ©   (2003-05-02 21:08) [3]


> Vlad1 © (02.05.03 20:45)

Для выполнения запросов есть специальный компонент - TIBSQL, лучше пользоваться им, чем TIBQuery и ExecSQL
А вообще, насколько я понял, msoftware © нужен просто редактируемый DataSet. Для этого лучше использовать TIBDataSet или TIBQuery. Для получения значения первичного ключа новой записи в этом случае можно воспользоваться св-вом GeneratorField.
И еще могу посоветовать автору вопроса прочитать статью http://www.ibase.ru/devinfo/generator.htm


 
Zacho ©   (2003-05-02 21:25) [4]

Еще немного добавлю.
Главная проблема msoftware © в том, что он присваивает значение ПК для новой записи в триггере. Как следствие из этого - приложение не может узнать ПК новой записи. Стандартный подход - значение в поле ПК заносит именно приложение, а не триггер. Это можно сделать с помощью св-ва GeneratorField или, например, в событии OnNewRecord выполнить запрос SELECT GEN_ID(MY_GEN,1) FROM RDB$DATABASE и полученное значение присвоить нужному полю. Впрочем, как именно получать значение ПК и присваивать его есть несколько вариантов, главное - что присвоение происходит именно на клиенте, а не на сервере. Или для вставки новой записи используется ХП, которая и возвращает ПК.



Страницы: 1 вся ветка

Текущий архив: 2003.05.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
1-70222
ctapik-net
2003-05-11 14:34
2003.05.22
Проблема с порядком компонент в ToolBar


1-70393
MAX22
2003-05-10 22:14
2003.05.22
Код для создаваемого объекта


3-70090
filin
2003-05-02 23:16
2003.05.22
Двойной клик на строке DBgrid. Номер строки в датасете???


1-70375
klyonov
2003-05-08 17:19
2003.05.22
WS_EX_TRANSPARENT и не только


1-70339
Le!
2003-05-09 07:25
2003.05.22
Как запустить файл с добавками.