KeyFieldNames: String;
Свойство KeyFieldNames определяет список ключевых полей по значениям которых, будет осуществляться поиск обновляемых записей.
Поля в списке разделяются знаком ";". Искомые значения будут браться из буфера.
Для выполнения примера предполагается наличие в репозитории таблицы с идентификатором "Table_1". В таблице имеется три целочисленных поля.
Sub Main;
Var
MB: IMetabase;
Dsi: IDatasetInstance;
Fields: IDatasetInstanceFields;
Dbu: IDatasetBatchUpdate;
Vals: Array[0..2] Of Variant;
i: Integer;
Begin
MB := MetabaseClass.Active;
Dsi := MB.ItemById("Table_1").Open(Null) As IDatasetInstance;
Fields := Dsi.Fields;
Dbu := Dsi.CreateBatchUpdate;
Dbu.BatchCommand := DatasetBatchCommand.Update;
Dbu.KeyFieldNames := Fields.Item(0).Id;
Dbu.BeginUpdate;
While Not Dsi.Eof Do
i := Fields.Item(0).Value As Integer;
If i > 100 Then
Vals[0] := i;
Vals[1] := Fields.Item(1).Value;
Vals[2] := (i + (Fields.Item(1).Value As Integer)) * 100;
Dbu.AddRecord(Vals);
End If;
Dsi.Next;
End While;
Dbu.Commit;
End Sub Main;
После выполнения примера в таблице будут обновлены записи, значения первого поля которых, больше 100. Поиск существующих записей будет производиться по значениям первого поля. При обновлении будет изменено значение третьего поля с учетом значений предыдущих двух полей.
См.также: