Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.011 c
1-15606
Dmitry Filippov
2003-01-29 10:59
2003.02.06
Как получить варианты размеров шрифта


3-15526
78125
2003-01-21 11:41
2003.02.06
Как после какого нибудь действия с таблицей отсортировать ее


1-15601
Serghei
2003-01-23 17:01
2003.02.06
Имя ЛЮБОГО обьекта под курсором Application Events


3-15511
Rule
2003-01-21 10:51
2003.02.06
Можно ли разделять права доступа в IB6(FB1)!


1-15558
Masa
2003-01-28 15:56
2003.02.06
CLX и VCL




   Наверх