Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.02.06;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
3-15413
Andy Eremin
2003-01-21 11:59
2003.02.06
Расчет


1-15718
REA
2003-01-27 19:00
2003.02.06
Как сложить динамические массивы?


14-15910
kull
2003-01-18 17:05
2003.02.06
Приколись, народ!


1-15579
TAN
2003-01-28 17:26
2003.02.06
FileListBox и копирование


3-15420
cranium
2003-01-21 22:40
2003.02.06
Параметр SQL запроса....





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский