Форум: "Базы";
Текущий архив: 2006.06.11;
Скачать: [xml.tar.bz2];
ВнизTIBDataSet.Refresh Найти похожие ветки
← →
Vasilisk (2006-04-20 00:18) [0]Delphi 7. Interbase 6.1
Есть TIBDataSet. В котором свойства выглядит так
SelectSQLSELECT
ID,
field1,
field2,
field3
FROM
VW_VIEW
ModifySQLSELECT
ID,
field1,
field2,
field3
FROM
VW_VIEW
WHERE
ID = :old_id
InsertSQLEXECUTE PROCEDURE sp_e_ins(
:field1
)
Идея следующая:
ID и field3 заполняются в тригере (один по генератору, а второй как Now), а field2 джойнится во вьюхе из другой таблицы по полю field1.
Есть DBGrid (ReadOnly), связанный с этим датасетом, а кроме этого есть такой кусок кодаDataSet.Insert;
DataSet.FieldByName("field1").AsInteger := Val;
DataSet.Post;
Так вот, после этого в Grid"е добавляется одна запись где заполнено только поле field1.
Вызов Refresh после Post не имеет результата. Перенос генератора с сервера на клиент не желательна, но тоже не приносит никакой пользы. Единственное, что помогает - Close/Open, но это неправильно, т.к. в датасете может быть порядка 10 тысяч записей.
Что делать, чтобы заставить Refresh работать?
PS Все происходит в одной транзакции. Вызов между Post и Refresh CommitRetaining тоже не спасает.
← →
Johnmen © (2006-04-20 09:16) [1]Так это происходит потому, что рефрешу неоткуда взять значение ключа для обновления одной записи. Кстати, а где сам РефрешСКЛ???
Поэтому грамотный выход - получить значение генератора джля ID, а потом вставить его в инсерте.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.06.11;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.013 c