procedure TZDRSKTJXX.DataSetDLSJJAfterOpen(DataSet: TDataSet);
var
i,j : integer;
s : string;
begin
DataSetZHSJJ.Open;
//清除字段
Business.Forms.Dialogs.ShowMessage(SysUtils.IntToStr(TUserDataSet(DataSetZDYSJJ1).UserFieldCount));
for j := 0 to TUserDataSet(DataSetZDYSJJ1).UserFieldCount-1 do
begin
TUserDataSet(DataSetZDYSJJ1).UserFields[j].Free;
end;
lBizField := TUserDataField.Create(DataSetZDYSJJ1);
lBizField.DataSet := DataSetZDYSJJ1;
lBizField.ID := 'ZYBH';
lBizField.DataType := TDataType.dtString;
lBizField.Size := 32;
lBizField.DisplayName := '职员编号';
lBizField := TUserDataField.Create(DataSetZDYSJJ1);
lBizField.DataSet := DataSetZDYSJJ1;
lBizField.ID := 'ZYQM';
lBizField.DataType := TDataType.dtString;
lBizField.Size := 32;
lBizField.DisplayName := '职员全名';
lBizField := TUserDataField.Create(DataSetZDYSJJ1);
lBizField.DataSet := DataSetZDYSJJ1;
lBizField.ID := 'SKZE';
lBizField.DataType := TDataType.dtNumber;
lBizField.DisplayName := '收款总额';
DataSetZHSJJ.First;
while not DataSetZHSJJ.Eof do
begin
//动态创建自定义数据集的字段
try
lBizField := TUserDataField.Create(DataSetZDYSJJ1);
lBizField.DataSet := DataSetZDYSJJ1;
lBizField.ID := DataSetZHSJJ.FieldByName['KMXX_PYM'].AsString;
lBizField.DataType := TDataType.dtNumber;
lBizField.DisplayName := DataSetZHSJJ.FieldByName['KMXX_KMQM'].AsString;
except
DataSetZDYSJJ1.Free;
DataSetZDYSJJ1 := nil;
raise;
end;
DataSetZHSJJ.Next;
end;
DataSetZDYSJJ1.Open;
end;
我测了好久了,都没测出来,为什么老是超出范围!是不是代码写错了?帮我看一下,谢谢 |