我的代码很简单,而且有释放对象。
procedure TLRZJQBXX.DataNavigatorBeforeAction(Sender: TObject; var Accept: Boolean);
var
lDept:string;
lQuery:TQuery;
lDlg:TQBXXXZ;
i :integer;
begin
lDlg := TQBXXXZ.Create(Context);
lQuery := TQuery.Create(nil);
lDept := TContextUtils.GetDept(Context).DisplayName;
case (Sender as TBizDataSetAction).ID of
BizActnConsts.ActionDataSetAppend : // 新增
begin
try
lQuery.ConnectionString := TPublicFuncLib.GetSMBDBConnectionStr;
lQuery.CommandText :='select a.guid,a.fwdw,a.zjbh,qblx,jhrq ,khxm '+
'from ZJQBXXB a inner join ZJXXB b on a.zjbh=b.zjbh inner join '+
' (select khbm,khxm from fl_grkh '+
' union all '+
' select khbm,gsmc from fl_gskh ) as c '+
'on b.yhbh=c.khbm '+
'where a.fwdw='''+lDept+''' and a.jhrq <= getdate() and a.SFTGSH=''否'' ';
lQuery.Open;
lQuery.First;
dsbZJQBXZ.DataSet.Open;
for i:=1 to dsbZJQBXZ.DataSet.RecordCount do
begin
dsbZJQBXZ.DataSet.Delete;
end;
while not lQuery.Eof do
begin
dsbZJQBXZ.DataSet.Append;
dsbZJQBXZ.DataSet.FieldByName('guid').AsString :=lQuery.FieldByName('guid').AsString;
dsbZJQBXZ.DataSet.FieldByName('TYFWZX').AsString :=lQuery.FieldByName('fwdw').AsString;;
dsbZJQBXZ.DataSet.FieldByName('ZJBH').AsString :=lQuery.FieldByName('ZJBH').AsString;
dsbZJQBXZ.DataSet.FieldByName('QBLX').AsString :=lQuery.FieldByName('QBLX').AsString;
dsbZJQBXZ.DataSet.FieldByName('JHRQ').AsString:=lQuery.FieldByName('JHRQ').AsString;
dsbZJQBXZ.DataSet.FieldByName('KHMC').AsString :=lQuery.FieldByName('KHXM').AsString;
dsbZJQBXZ.DataSet.Post;
lQuery.Next;
end;
finally
//lQuery.Close;
lQuery.Free;
end;
try
lDlg.ShowModal;
dsbZJQBXZ.DataSet.Open;
if dsbZJQBXZ.DataSet.RecordCount >0 then
begin
if lDlg.FFlag=1 then
begin
dsbZJQBSJJ.DataSet.Filtered := false;
TSQLDataset(dsbZJQBSJJ.DataSet).close;
TSQLDataset(dsbZJQBSJJ.DataSet).SQL.Text :=
'select * from ZJQBXXB where guid =' + sysutils.QuotedStr(dsbZJQBXZ.DataSet.FieldByName('guid').AsString);
TSQLDataset(dsbZJQBSJJ.DataSet).open;
if dsbZJQBSJJ.DataSet.RecordCount>0 then
begin
dsbZJQBSJJ.DataSet.Edit;
dsbZJQBSJJ.DataSet.FieldByName('khmc').AsString:=dsbZJQBXZ.DataSet.FieldByName('KHMC').AsString;
end;
{dsbZJQBSJJ.DataSet.Open;
if dsbZJQBSJJ.DataSet.Locate('zjbh;jhrq',Variants.VarArrayOf([dsbZJQBXZ.DataSet.FieldByName('ZJBH').AsString,
dsbZJQBXZ.DataSet.FieldByName('JHRQ').AsString]),[]) then
begin
dsbZJQBSJJ.DataSet.Edit;
dsbZJQBSJJ.DataSet.FieldByName('khmc').AsString:=dsbZJQBXZ.DataSet.FieldByName('KHMC').AsString;
end;}
end;
end;
finally
lDlg.Free;
end;
Accept := false;
end;
end;
end;
procedure TLRZJQBXX.BizFormShow(Sender: TObject);
var
lDept :string;
begin
lDept := TContextUtils.GetDept(Context).DisplayName;
dsbZJQBSJJ.DataSet.Filter:='FWDW='''+lDept+''' ';
dsbZJQBSJJ.DataSet.Filtered :=true;
dsbZJQBSJJ.DataSet.Open;
dsbZJQBSJJ.DataSet.Filter:='1<>1';
dsbZJQBSJJ.DataSet.Filtered :=true;
end; |