Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.016 c
3-15404
OlkaGTS
2003-01-21 16:42
2003.02.06
Дать возможность повторно вводить пароль при ошибках соединения


1-15661
vvolkov
2003-01-29 16:52
2003.02.06
Перекомпиляция VCL


1-15652
sancho
2003-01-28 21:52
2003.02.06
Гиф формат :(


7-15954
Александр
2002-12-01 11:15
2003.02.06
Работа с мышкой и клавой


1-15641
SONY
2003-01-29 12:37
2003.02.06
Как Canvas сохранить на диск в метафайле ?