要求:当输入一条主数据集数据时,与之对应的模版中的数据自动能够填充,代码如下(这些代码是在业务信息中),但是过滤条件代码应如何写?(即输入的主数据集和模版中的主键相同时,其所对应的信息,自动填充)
procedure TCHEANALYZEINFO.GetCheAnaSta1Data; //取计划书模版
begin
DataSetMXB.Open; //打开检修目标明细表
DataSetCheAnaSta1.Open; //打开检修目标模版
if not DataSetMXB.IsEmpty then exit;
DataSetMXB.DisableControls;
DataSetCheAnaSta1.DisableControls;
DataSetMXB.First; //跳到检修目标明细表的第一条数据
DataSetCheAnaSta1.First; //跳到检修目标模版的第一条数据
while not DataSetCheAnaSta1.Eof do
begin
DataSetMXB.Append;
DataSetMXB.FieldByName('SerialNo').Assign(DataSetCheAnaSta1.FieldByName('SerialNo'));
DataSetMXB.FieldByName('EquName').Assign(DataSetCheAnaSta1.FieldByName('EquName'));
DataSetMXB.FieldByName('GuiName').Assign(DataSetCheAnaSta1.FieldByName('GuiName'));
DataSetMXB.FieldByName('RatNum').Assign(DataSetCheAnaSta1.FieldByName('RatNum'));
procedure TCheAnalyzeRepInfo.AutoFillDetailData(Sender: TDataField); //项目字段变化自动填充从表
begin
if IsStart then
begin
GetPlanTempletData;
end;
end;
procedure TCheAnalyzeRepInfo.GetPlanTempletData; //取计划书模版
begin
DataSetCheAnalyzeRepDetail.Open;
DataSetModel.Open;
DataSetCheAnalyzeRepDetail.DisableControls;
DataSetModel.DisableControls;
DataSetCheAnalyzeRepDetail.First;
DataSetModel.First;
if not DataSetCheAnalyzeRepDetail.IsEmpty then
begin
while not DataSetCheAnalyzeRepDetail.Eof do
begin
DataSetCheAnalyzeRepDetail.Delete;
end;
end;
while not DataSetModel.Eof do
begin
DataSetCheAnalyzeRepDetail.Append;
DataSetCheAnalyzeRepDetail.FieldByName('StaName').Assign(DataSetModel.FieldByName('StaName'));
DataSetCheAnalyzeRepDetail.FieldByName('StaValue').Assign(DataSetModel.FieldByName('StaValue'));
DataSetCheAnalyzeRepDetail.Post;
DataSetModel.Next;
end;
try
DataSetCheAnalyzeRepDetail.First;
finally
DataSetCheAnalyzeRepDetail.EnableControls;
DataSetModel.EnableControls;
end;
end;
procedure TCheAnalyzeRepInfo.DataSetCheAnalyzeRepMasterAfterOpen(DataSet: TDataSet);
begin
DataSet.FieldByName('KKS').OnChange := AutoFillDetailData;
end;