powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FIBDataset и генераторы
10 сообщений из 10, страница 1 из 1
FIBDataset и генераторы
    #39729965
RWolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FIBPlus, Firebird 2.5.
Настраиваю датасет для редактирования таблицы T1(ID, V). Хочу в новой записи заполнять поле ID значением генератора, поэтому пишу такое поле запроса InsertSQL:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
INSERT INTO T1 (
  ID, 
  V
)
VALUES (
  GEN_ID(GEN_T1_ID, 1),
  :V
)



При попытке вставить запись наблюдаю такое содержимое грида:

При этом новое значение ID в таблицу попадает, некорректно только отображение поля в новой записи. При перезапуске программы запись показывается корректно (см. строки в таблице выше курсора).
В чём причина такого поведения?

Про TFIBDataSet.AutoUpdateOptions знаю, вызывать GEN_ID через него мне не подходит, т.к. при вставке записи требуется генерить больше одного поля.
...
Рейтинг: 0 / 0
FIBDataset и генераторы
    #39729971
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RWolfВ чём причина такого поведения?

В том, что ты делаешь отсебятину, компонентописателями не предусмотренную. Надо генерить -
генери. Ручками. В OnNewRecord.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FIBDataset и генераторы
    #39729979
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RWolf,

см. TpFIBDataSet.AutoUpdateOptions.

https://github.com/madorin/fibplus/tree/master/Docs
...
Рейтинг: 0 / 0
FIBDataset и генераторы
    #39729994
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я так и не понял.
Нужно одним генератором заполнять два разных поля?
...
Рейтинг: 0 / 0
FIBDataset и генераторы
    #39730001
RWolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11, нет, разные генераторы для разных полей.
Я рассчитывал на то, что датасет после коммита пишущей транзакции читает новую запись, но, видимо, нет — придётся вызывать генераторы вручную.
...
Рейтинг: 0 / 0
FIBDataset и генераторы
    #39730006
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11А я так и не понял.
Нужно одним генератором заполнять два разных поля?
У него генератор жестко забит в текст запроса, но отсутствует returning. Ни трусов, ни крестика.
Пусть доку читает.
...
Рейтинг: 0 / 0
FIBDataset и генераторы
    #39730019
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RWolf,

команда insert ушла на сервер, генератор вызвался, значение записалось.
Кто теперь знает вставленное значение генератора? Никто, потому что при обычном insert/update сервер ничего не возвращает (кроме ok/error).
Как тут уже сказали, для появления записи в правильном месте значение генератора надо сначала получить с сервера, а потом использовать его ПЕРЕД отправкой записи (insert) на сервер.
Или, надо чтобы компоненты понимали insert returning.
...
Рейтинг: 0 / 0
FIBDataset и генераторы
    #39730099
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvнадо чтобы компоненты понимали insert returning.
ФИБы их прекрасно понимают, Дим. Это ТС доку не читает, а делает все по наитию :)
...
Рейтинг: 0 / 0
FIBDataset и генераторы
    #39730239
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

дык, чтобы вернулось значение, надо чтобы было написано insert returning, а значит надо понимать, как работает клиент-сервер, что такое буфер датасета, и как перечитываются в нем записи.
Так что, можно констатировать отсутствие наития :-)
...
Рейтинг: 0 / 0
FIBDataset и генераторы
    #39730337
RWolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RETURNING решил проблему, теперь можно убрать отдельный запрос к генератору. Спасибо за наводку.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FIBDataset и генераторы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]