FireBird и инкрементные поля
Компонент IBTable. При добавлении в него новой записи инкремент почему-то не генерируется автоматически. Генерируется лишь только если сделать Рефреш. Но это очень не удобно. Мне кажется, что не должно так быть, что я что-то упустил. Хотя вроде все сделал правильно - в IBExperte сказал, что поле инкрементное и что увеличивать его нужно на 1.
Может, указать еще что-то?
Перехожу с БДЕ на FireBird. И вот возникла проблема с инкрементными полями.
Компонент IBTable. При добавлении в него новой записи инкремент почему-то не генерируется автоматически. Генерируется лишь только если сделать Рефреш. Но это очень не удобно. Мне кажется, что не должно так быть, что я что-то упустил. Хотя вроде все сделал правильно - в IBExperte сказал, что поле инкрементное и что увеличивать его нужно на 1.
Может, указать еще что-то?
При создании инкрементного поля в IbExpert при выборе соотв флажка Expert предлагает сделать генератор и готовый тригер.
Никаких проблем с этим быть не должно.
Другое дело что при работе в билдере нужно поменять свойство соотв. поля компоненты IBDataSet с "Required" на "false"
Хотя лично я препочитаю прописывать генератор в свойстве GeneratorField
При создании инкрементного поля в IbExpert при выборе соотв флажка Expert предлагает сделать генератор и готовый тригер.
Никаких проблем с этим быть не должно.
Другое дело что при работе в билдере нужно поменять свойство соотв. поля компоненты IBDataSet с "Required" на "false"
Хотя лично я препочитаю прописывать генератор в свойстве GeneratorField
Так я не с IBDataSet парюсь, а с IBTable! Потому что я переношу свой проект с БДЕ на ИБ. Заменяю TTable на IBTable - так в коде менять придется меньше. Но вот возникла проблема с инкрементами.. :(
Так я не с IBDataSet парюсь, а с IBTable! Потому что я переношу свой проект с БДЕ на ИБ. Заменяю TTable на IBTable - так в коде менять придется меньше. Но вот возникла проблема с инкрементами.. :(
у полей IBTable тоже есть такие свойства
у полей IBTable тоже есть такие свойства
Установил у поля это свойство - и перед постом вылазит эксепшн "типа это поле (как раз инкрементное) не должно быть пустое"..
Может, я чего-то не понимаю?
Вот гляди. В ИБЭксперте я указал, что поле инкрементное, создал генератор и триггер. Когда я вставляю в IBTable новую запись (IBTable->Insert() ) в DBGrid'е появляется новая строчка, но инкремент в соответствующем поле автоматически не появляется (в БДЕ-то было не так! там сразу по создании новой записи появлялся инкремент). Теперь же чтобы он там появился, нужно сделать рефреш. Но это очень неудобно - после обновления таблица переходит на другую запись.
Я тут полазил и уже прихожу к выводу, что, похоже, придется как-нибудь вручную обращаться к базе, запрашивать значение инкремента и при новой записи в таблице его ручками подставлять.. Неужели действительно придется делать сей изврат???
Установил у поля это свойство - и перед постом вылазит эксепшн "типа это поле (как раз инкрементное) не должно быть пустое"..
Может, я чего-то не понимаю?
Вот гляди. В ИБЭксперте я указал, что поле инкрементное, создал генератор и триггер. Когда я вставляю в IBTable новую запись (IBTable->Insert() ) в DBGrid'е появляется новая строчка, но инкремент в соответствующем поле автоматически не появляется (в БДЕ-то было не так! там сразу по создании новой записи появлялся инкремент). Теперь же чтобы он там появился, нужно сделать рефреш. Но это очень неудобно - после обновления таблица переходит на другую запись.
Я тут полазил и уже прихожу к выводу, что, похоже, придется как-нибудь вручную обращаться к базе, запрашивать значение инкремента и при новой записи в таблице его ручками подставлять.. Неужели действительно придется делать сей изврат???
да, есть такая фишка, поэтому я предпочтиаю пользоваться IBDataSet, и прописывать там генератор
да, есть такая фишка, поэтому я предпочтиаю пользоваться IBDataSet, и прописывать там генератор
Мне сейчас ДатаСэт никак не подойдет.. Вот ведь блин.. Придется извращаться.
Но все равно спасибо за уделенное внимание!