
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
08.11.2018, 14:57
|
|||
|---|---|---|---|
FIBDataset и генераторы |
|||
|
#18+
FIBPlus, Firebird 2.5. Настраиваю датасет для редактирования таблицы T1(ID, V). Хочу в новой записи заполнять поле ID значением генератора, поэтому пишу такое поле запроса InsertSQL: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. При попытке вставить запись наблюдаю такое содержимое грида: При этом новое значение ID в таблицу попадает, некорректно только отображение поля в новой записи. При перезапуске программы запись показывается корректно (см. строки в таблице выше курсора). В чём причина такого поведения? Про TFIBDataSet.AutoUpdateOptions знаю, вызывать GEN_ID через него мне не подходит, т.к. при вставке записи требуется генерить больше одного поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2018, 15:04
|
|||
|---|---|---|---|
|
|||
FIBDataset и генераторы |
|||
|
#18+
RWolfВ чём причина такого поведения? В том, что ты делаешь отсебятину, компонентописателями не предусмотренную. Надо генерить - генери. Ручками. В OnNewRecord. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2018, 15:29
|
|||
|---|---|---|---|
FIBDataset и генераторы |
|||
|
#18+
А я так и не понял. Нужно одним генератором заполнять два разных поля? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2018, 15:34
|
|||
|---|---|---|---|
FIBDataset и генераторы |
|||
|
#18+
X11, нет, разные генераторы для разных полей. Я рассчитывал на то, что датасет после коммита пишущей транзакции читает новую запись, но, видимо, нет — придётся вызывать генераторы вручную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2018, 15:45
|
|||
|---|---|---|---|
FIBDataset и генераторы |
|||
|
#18+
X11А я так и не понял. Нужно одним генератором заполнять два разных поля? У него генератор жестко забит в текст запроса, но отсутствует returning. Ни трусов, ни крестика. Пусть доку читает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2018, 16:12
|
|||
|---|---|---|---|
FIBDataset и генераторы |
|||
|
#18+
RWolf, команда insert ушла на сервер, генератор вызвался, значение записалось. Кто теперь знает вставленное значение генератора? Никто, потому что при обычном insert/update сервер ничего не возвращает (кроме ok/error). Как тут уже сказали, для появления записи в правильном месте значение генератора надо сначала получить с сервера, а потом использовать его ПЕРЕД отправкой записи (insert) на сервер. Или, надо чтобы компоненты понимали insert returning. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2018, 18:24
|
|||
|---|---|---|---|
FIBDataset и генераторы |
|||
|
#18+
kdvнадо чтобы компоненты понимали insert returning. ФИБы их прекрасно понимают, Дим. Это ТС доку не читает, а делает все по наитию :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.11.2018, 00:42
|
|||
|---|---|---|---|
FIBDataset и генераторы |
|||
|
#18+
Док, дык, чтобы вернулось значение, надо чтобы было написано insert returning, а значит надо понимать, как работает клиент-сервер, что такое буфер датасета, и как перечитываются в нем записи. Так что, можно констатировать отсутствие наития :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=58&tablet=1&tid=2040149]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
165ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 486ms |

| 0 / 0 |
