我有一个TClientDataSet,它与字段编辑器中定义的所有字段耦合到查询中。
在运行时,我添加三个fkInternalCalc字段:
class procedure TTaskIndexCalculator.Setup(AClientDataSet: TClientDataSet);
var
lCalcIntField : TIntegerField;
lCalcStrField : TStringField;
begin
CDS := AClientDataSet;
CDS.DisableControls;
CDS.Close;
lCalcIntField := TIntegerField.Create(CDS);
with lCalcIntField do
begin
Name := 'CalcFldLevel';
FieldKind := fkInternalCalc;
FieldName := 'TT_LEVEL';
DataSet := CDS;
end;
lCalcIntField := TIntegerField.Create(CDS);
with lCalcIntField do
begin
Name := 'CalcFldDateOrder';
FieldKind := fkInternalCalc;
FieldName := 'TT_DATEORDER';
DataSet := CDS;
end;
lCalcStrField := TStringField.Create(CDS);
with lCalcStrField do
begin
Name := 'CalcFldSortString';
FieldKind := fkInternalCalc;
FieldName := 'TT_SORTSTRING';
Size := 200;
DataSet := CDS;
end;
CDS.Open;
end;我使用这些附加字段进行一些计算,更新一个“真实”字段,然后我就完成了:
class procedure TTaskIndexCalculator.TearDown;
begin
with CDS do
begin
Close;
Fields[CDS.FieldCount-1].Free;
Fields[CDS.FieldCount-1].Free;
Fields[CDS.FieldCount-1].Free;
Filter := '';
Filtered := false;
Open;
EnableControls;
end;
end;然而,在最后的'Open‘语句中,我得到了TT_SORTSTRING字段的“not”错误(可能其他两个也是错误的)。
TClientDataSet连接到TDBGrid。
我在移除这三个字段(或之前)时做错了什么?
阅读优秀的Cary Jensen文章对我没有帮助;我有设计时和运行时字段的混合情况。
发布于 2014-10-01 14:19:28
啊,这其中的一件事-)
我不仅在计算期间使用筛选器设置,而且还使用属性IndexFieldNames。最后一个IndexFieldNames内容包含TT_SORTSTRING。
我的TearDown例程也必须重新设置:
IndexFieldNames := '';https://stackoverflow.com/questions/26143378
复制相似问题