|
@@ -90,39 +90,37 @@ begin
|
|
FCalcFieldsSize := 0;
|
|
FCalcFieldsSize := 0;
|
|
FBlobFieldCount := 0;
|
|
FBlobFieldCount := 0;
|
|
for i := 0 to Fields.Count - 1 do
|
|
for i := 0 to Fields.Count - 1 do
|
|
- with Fields[i] do begin
|
|
|
|
|
|
+ with Fields[i] do
|
|
|
|
+ begin
|
|
FFieldDef:=Nil;
|
|
FFieldDef:=Nil;
|
|
- if Binding then begin
|
|
|
|
- if FieldKind in [fkCalculated, fkLookup] then begin
|
|
|
|
- FFieldNo := -1;
|
|
|
|
- FOffset := FCalcFieldsSize;
|
|
|
|
- Inc(FCalcFieldsSize, DataSize + 1);
|
|
|
|
- if FieldKind in [fkLookup] then begin
|
|
|
|
- if ((FLookupDataSet = nil) or (FLookupKeyFields = '') or
|
|
|
|
- (FLookupResultField = '') or (FKeyFields = '')) then
|
|
|
|
- DatabaseErrorFmt(SLookupInfoError, [DisplayName]);
|
|
|
|
- FFields.CheckFieldNames(FKeyFields);
|
|
|
|
- FLookupDataSet.Open;
|
|
|
|
- FLookupDataSet.Fields.CheckFieldNames(FLookupKeyFields);
|
|
|
|
- FLookupDataSet.FieldByName(FLookupResultField);
|
|
|
|
- if FLookupCache then RefreshLookupList;
|
|
|
|
- end
|
|
|
|
- end else begin
|
|
|
|
- FFieldDef := nil;
|
|
|
|
- FieldIndex := FieldDefs.IndexOf(Fields[i].FieldName);
|
|
|
|
- if FieldIndex <> -1 then begin
|
|
|
|
- FFieldDef := FieldDefs[FieldIndex];
|
|
|
|
- FFieldNo := FFieldDef.FieldNo;
|
|
|
|
- if FieldDef.InternalCalcField then FInternalCalcFields := True;
|
|
|
|
- if IsBlob then begin
|
|
|
|
- FSize := FFieldDef.Size;
|
|
|
|
- FOffset := FBlobFieldCount;
|
|
|
|
- Inc(FBlobFieldCount);
|
|
|
|
|
|
+ if not Binding then
|
|
|
|
+ FFieldNo := 0
|
|
|
|
+ else if FieldKind in [fkCalculated, fkLookup] then
|
|
|
|
+ begin
|
|
|
|
+ FFieldNo := -1;
|
|
|
|
+ FOffset := FCalcFieldsSize;
|
|
|
|
+ Inc(FCalcFieldsSize, DataSize + 1);
|
|
|
|
+ end
|
|
|
|
+ else
|
|
|
|
+ begin
|
|
|
|
+ FFieldDef := nil;
|
|
|
|
+ FieldIndex := FieldDefs.IndexOf(Fields[i].FieldName);
|
|
|
|
+ if FieldIndex <> -1 then
|
|
|
|
+ begin
|
|
|
|
+ FFieldDef := FieldDefs[FieldIndex];
|
|
|
|
+ FFieldNo := FFieldDef.FieldNo;
|
|
|
|
+ if FieldDef.InternalCalcField then
|
|
|
|
+ FInternalCalcFields := True;
|
|
|
|
+ if IsBlob then
|
|
|
|
+ begin
|
|
|
|
+ FSize := FFieldDef.Size;
|
|
|
|
+ FOffset := FBlobFieldCount;
|
|
|
|
+ Inc(FBlobFieldCount);
|
|
end;
|
|
end;
|
|
- end else FFieldNo := 0;
|
|
|
|
|
|
+ end
|
|
end;
|
|
end;
|
|
- end else FFieldNo := 0;
|
|
|
|
- end;
|
|
|
|
|
|
+ Bind(Binding);
|
|
|
|
+ end;
|
|
end;
|
|
end;
|
|
|
|
|
|
function TDataSet.BookmarkAvailable: Boolean;
|
|
function TDataSet.BookmarkAvailable: Boolean;
|