我试图计算字段添加到使用下面的代码与我的几个网站,包括堆栈溢出,发现了许多变化与fieldDefs.add
创建的现有数据集。无法添加计算领域的ClientDataSet
但由fieldDefs
行或dataSet
行创建的fieldDefs
在更新FieldDefs.count
时丢失。
Fields.counts
坚持但不保存为XML文件。
没有异常升高。
有没有人有任何想法是怎么回事? 感谢
MYclientDataSet.CreateDataSet;
MYclientDataSet.open;
MYclientDataSet.FieldDefs.Update;
MYclientDataSet.Active := False;
for i := 0 to MYclientDataSet.FieldDefs.Count - 1 do
MYclientDataSet.FieldDefs[i].CreateField(MYclientDataSet);
fld := TStringField.Create(MYclientDataSet);
with fld do begin
FieldName := 'PartSummary';
FieldKind := fkCalculated;
Calculated := True;
Name := cds.Name + FieldName;
DataSet := MYclientDataSet;
MYclientDataSet.FieldDefs.Add('PartSummary', ftString, 30, false);
MYclientDataSet.FieldDefs.update;
end;
MYclientDataSet.active := true;
MYclientDataSet.open;
MYclientDataSet.edit;
为什么你需要打开两次?这可能不是问题,可能需要或无害。但这似乎很奇怪。 –
在调用'CreateDataSet'之前,您应该添加所需的所有字段,包括计算的字段。 – MartynA
我从来没有叫'update'加入后再次计算field..I相信'update'打开表,并将其关闭,所以在这一个程序,你打开表三次......不要打开它,直到你完成了。和'active:= true'和'open'做同样的事情,所以选择一个(我更喜欢'open')。 –