Текущий архив: 2003.02.06;
Скачать: CL | DM;
ВнизAutoIncrement firebird dbExpress Найти похожие ветки
← →
CashDi (2003-01-22 12:23) [0]Уважаемые мастера - вопрос в следующем. Имеется TSQLDataSet, в CommandText прописано
select * from table, commandtype = ctQuery. Поскольку заинтересован в наборе данных по которому можно перемещаться в обеих направлениях, то имеется также TDataSetProvider и TClientDataSet. Для TClientDataSet созданы поля, одно из них
table_id является primary key и в базе соответствено определен
генератор. Так вот устанавливаю свойство AutoGenerateValue для поля table_id в qrAutoInc (причем я не понимаю как это провайдер свяжет поле с генератором в базе) и при insert мне вываливается сообщение о том что table_id не должно быть null :(. Как бороться?
← →
Johnmen (2003-01-22 12:42) [1]Потрясающе ! Работать с IB, используя ADO и dbExpress !
Я такого еще не встречал......:))))))
← →
Johnmen (2003-01-22 12:44) [2]Виноват...Предыдущий пост не читать...:)
← →
don-do (2003-01-22 12:48) [3]Если в InsertSql не использовать поле table_id а присвоение делать в триггере BeforeInsert: new.table_id=GenId("GenTable_id") все заработает но можно нарваться на ошибку обновления, поэтому присваивать table_id нужно на локалке
← →
Johnmen (2003-01-22 12:48) [4]Просто забей нулем (если конечно значение определяется в триггере (что настоятельно рекомендую в данном случае))
← →
Johnmen (2003-01-22 12:50) [5]>don-do (22.01.03 12:48)
>но можно нарваться на ошибку обновления, поэтому присваивать
>table_id нужно на локалке
Какую ошибку ?
Полностью не согласен.
← →
don-do (2003-01-22 12:55) [6]Johnmen
Если TIBDataSet обновляет данные по ключу, а DBKey-я в момент инсерта не существует появиться ошибка - типа "Запись изменена или удалена другим пользователем"
← →
CashDi (2003-01-22 13:05) [7]Когда то работал через BDE и там у меня был класс реализованный на основе компонента RxQuery из библиотеки RxLib позволяющий инкрементировать любой генератор базы данных по его имени, получить инкрементированное значение и далее использовать обработчики событий AfterInsert или BeforePost. Это было на BDE.
Это было давно. Затем использовал IBX и там эти проблеммы решены через использование свойства GeneratorField. Очень удобно, не надо писать триггер, подключать класс и т.д. Я думал что для dbExpress это решено в том же ключе, но насколько понял это не так и придется вернуться к тому варианту инкрементирования что использовался для BDE. Я правильно понял ваши рекомендации?
← →
Alexandr (2003-01-22 13:07) [8]поцаны, вы статью про Dbexpress на www.ibase.ru читали?
← →
Johnmen (2003-01-22 13:11) [9]>don-do (22.01.03 12:55)
1. Не понял...Зачем существовать значению ID поля, если оно будет определено в триггере. Кстати, лично у меня никаких проблем нет с использованием IBX и FIBPlus (в данном контексте)
2. Автор не работает с IBX.
← →
CashDi (2003-01-22 13:26) [10]Для Johnmen "Зачем существовать значению ID поля" - для дочерних наборов данных мне нужно передать это значение иначе references error.
Alezandr - вы имеете ввиду статью "Перенос приложений с BDE на dbExpress"? Я ее читал, но пример у меня не заработал, вываливается после insert на ApplyUpdates :<
← →
Alexandr (2003-01-22 13:31) [11]если пример не заработал, то обрати внимание, у статьи есть автор, а у автора e-mail я думаю он не будет против письма с указанием ошибок в статье.
← →
CashDi (2003-01-22 13:32) [12]Alexandr Ok, посмотрю подробнее.
← →
Johnmen (2003-01-22 13:34) [13]>CashDi (22.01.03 13:26)
В таком случае надо получить значение ID предварительно, используя запрос или ХП.
Страницы: 1 вся ветка
Текущий архив: 2003.02.06;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.01 c