#delphi #tclientdataset
#delphi #набор данных tclientdataset
Вопрос:
Я использую 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
отображается новое значение, присвоенное после объединения записей…
Обновление здесь используется только для упрощения этого примера… Проблемы возникают, когда мы вставляем запись, применяем обновления и снова редактируем запись.
Я что-то упускаю при использовании ResolveToDataset
опции или мне следует явно повторно открыть запрос с новым параметром?
У меня никогда раньше не возникало этой проблемы при использовании ResolveToDataset = False
в других проектах…
Комментарии:
1. Почему
Edit
а неInsert
илиAppend
добавить запись? Является ли ваш ClientDataSet1.Params[0].ParamType = ptInputOutput?2. При редактировании возникла проблема с копированием и вставкой… Та же проблема с append. Странно, что IBCQuery (от Devart) не поддерживает параметры ptInputOutpout… это выдает: Динамическая ошибка SQL Код ошибки SQL = -804 SQLDA отсутствует или неправильная версия, или неправильное количество / тип переменных’