Delphi: проблема с ResolveToDataset
Я использую TClientDataset
со следующими опциями для провайдера:
ResolveToDataSet = True
Options = [poPropogateChanges, poUseQuoteChar]
UpdateMode = upWhereKeyOnly
AfterUpdateRecord = DataSetProvider1AfterUpdateRecord
Поставщик подключен к TIBCQuery, который управляет генератором для ключа NO_INVOICE.
В AfterUpdateRecord выполняется следующий код (который можно найти во многих местах в группах для реального распространения изменения ключа при публикации в базе данных).
DeltaDS.FieldByName(ClientDataSet1NO_INVOICE.FieldName).NewValue
:= SourceDS.FieldByName(ClientDataSet1NO_INVOICE.FieldName).NewValue
Затем для добавления записи используется следующий код:
ClientDataSet1.Params[0].AsInteger := -1;
ClientDataSet1.Open;
ClientDataSet1.Edit;
ClientDataSet1NO_INVOICE.AsInteger := -1;
ClientDataSet1NO_STORE.AsInteger := 1;
ClientDataSet1.Post;
ClientDataSet1.ApplyUpdates(-1);
Если я позвоню ClientDataSet1.Refresh
после ApplyUpdate
базовый TIBCQuery открывается с исходным параметром -1, а не с новым ключом... даже если ClientDataSet1NO_INVOICE.AsInteger
показывает новое значение, назначенное после слияния записей... Использование Refresh здесь только для упрощения этого примера... Проблемы возникают, когда мы вставляем запись, применяем обновления и снова редактируем запись.
Я что-то пропустил с использованием ResolveToDataset
вариант или я должен заново открыть запрос с новым параметром?
У меня никогда не было этой проблемы раньше при использовании ResolveToDataset = False
на других проектах...