Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

FireBird и инкрементные поля

2.2K
28 июня 2005 года
Dani
51 / / 22.09.2004
Перехожу с БДЕ на FireBird. И вот возникла проблема с инкрементными полями.
Компонент IBTable. При добавлении в него новой записи инкремент почему-то не генерируется автоматически. Генерируется лишь только если сделать Рефреш. Но это очень не удобно. Мне кажется, что не должно так быть, что я что-то упустил. Хотя вроде все сделал правильно - в IBExperte сказал, что поле инкрементное и что увеличивать его нужно на 1.
Может, указать еще что-то?
4.2K
29 июня 2005 года
Крыс
98 / / 06.05.2005
Цитата:
Originally posted by Dani
Перехожу с БДЕ на FireBird. И вот возникла проблема с инкрементными полями.
Компонент IBTable. При добавлении в него новой записи инкремент почему-то не генерируется автоматически. Генерируется лишь только если сделать Рефреш. Но это очень не удобно. Мне кажется, что не должно так быть, что я что-то упустил. Хотя вроде все сделал правильно - в IBExperte сказал, что поле инкрементное и что увеличивать его нужно на 1.
Может, указать еще что-то?


При создании инкрементного поля в IbExpert при выборе соотв флажка Expert предлагает сделать генератор и готовый тригер.
Никаких проблем с этим быть не должно.

Другое дело что при работе в билдере нужно поменять свойство соотв. поля компоненты IBDataSet с "Required" на "false"
Хотя лично я препочитаю прописывать генератор в свойстве GeneratorField

2.2K
29 июня 2005 года
Dani
51 / / 22.09.2004
Цитата:
Originally posted by Крыс
При создании инкрементного поля в IbExpert при выборе соотв флажка Expert предлагает сделать генератор и готовый тригер.
Никаких проблем с этим быть не должно.

Другое дело что при работе в билдере нужно поменять свойство соотв. поля компоненты IBDataSet с "Required" на "false"
Хотя лично я препочитаю прописывать генератор в свойстве GeneratorField



Так я не с IBDataSet парюсь, а с IBTable! Потому что я переношу свой проект с БДЕ на ИБ. Заменяю TTable на IBTable - так в коде менять придется меньше. Но вот возникла проблема с инкрементами.. :(

4.2K
29 июня 2005 года
Крыс
98 / / 06.05.2005
Цитата:
Originally posted by Dani
Так я не с IBDataSet парюсь, а с IBTable! Потому что я переношу свой проект с БДЕ на ИБ. Заменяю TTable на IBTable - так в коде менять придется меньше. Но вот возникла проблема с инкрементами.. :(


у полей IBTable тоже есть такие свойства

2.2K
30 июня 2005 года
Dani
51 / / 22.09.2004
Цитата:
Originally posted by Крыс
у полей IBTable тоже есть такие свойства



Установил у поля это свойство - и перед постом вылазит эксепшн "типа это поле (как раз инкрементное) не должно быть пустое"..
Может, я чего-то не понимаю?
Вот гляди. В ИБЭксперте я указал, что поле инкрементное, создал генератор и триггер. Когда я вставляю в IBTable новую запись (IBTable->Insert() ) в DBGrid'е появляется новая строчка, но инкремент в соответствующем поле автоматически не появляется (в БДЕ-то было не так! там сразу по создании новой записи появлялся инкремент). Теперь же чтобы он там появился, нужно сделать рефреш. Но это очень неудобно - после обновления таблица переходит на другую запись.
Я тут полазил и уже прихожу к выводу, что, похоже, придется как-нибудь вручную обращаться к базе, запрашивать значение инкремента и при новой записи в таблице его ручками подставлять.. Неужели действительно придется делать сей изврат???

4.2K
30 июня 2005 года
Крыс
98 / / 06.05.2005
Цитата:
Originally posted by Dani
Установил у поля это свойство - и перед постом вылазит эксепшн "типа это поле (как раз инкрементное) не должно быть пустое"..
Может, я чего-то не понимаю?
Вот гляди. В ИБЭксперте я указал, что поле инкрементное, создал генератор и триггер. Когда я вставляю в IBTable новую запись (IBTable->Insert() ) в DBGrid'е появляется новая строчка, но инкремент в соответствующем поле автоматически не появляется (в БДЕ-то было не так! там сразу по создании новой записи появлялся инкремент). Теперь же чтобы он там появился, нужно сделать рефреш. Но это очень неудобно - после обновления таблица переходит на другую запись.
Я тут полазил и уже прихожу к выводу, что, похоже, придется как-нибудь вручную обращаться к базе, запрашивать значение инкремента и при новой записи в таблице его ручками подставлять.. Неужели действительно придется делать сей изврат???


да, есть такая фишка, поэтому я предпочтиаю пользоваться IBDataSet, и прописывать там генератор

2.2K
30 июня 2005 года
Dani
51 / / 22.09.2004
Цитата:
Originally posted by Крыс
да, есть такая фишка, поэтому я предпочтиаю пользоваться IBDataSet, и прописывать там генератор



Мне сейчас ДатаСэт никак не подойдет.. Вот ведь блин.. Придется извращаться.
Но все равно спасибо за уделенное внимание!

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог