procedure TForm1.Button2Click(Sender: TObject);
var
pwh,k:String;
begin
adoquery1.Active :=true;
adoquery2.Active :=true;
adoquery3_pwb.Active :=true;
k:='2006-1';
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from pw where 状态=:t_jt');
adoquery1.Parameters.ParamValues['t_jt']:='出租中';
adoquery1.Open ;
adoquery1.First; ShowMessage(inttostr(ADOQuery1.RecordCount));
while not adoquery1.Eof do
begin
// if (adoquery1.FieldByName('出租日期').AsDateTime <date) and (adoquery1.FieldByName('状态').AsString ='出租中') then
// if (adoquery1.FieldByName('状态').AsString ='出租中') then
// begin pwh:=adoquery1.FieldValues['铺位号'];
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add('select 铺位号,交费月份2,客户号 from dh2 where 铺位号='''+pwh+''' and 交费月份2=:dat and 客户号=:t_kh');
adoquery2.Parameters.ParamValues['t_kh']:=adoquery1.FieldValues['客户号'];
adoquery2.Parameters.ParamValues['dat']:=k;
adoquery2.Open;
if adoquery2.RecordCount=0 then
begin
//把它放到临界BWB表中.
adoquery3_pwb.Edit;
adoquery3_pwb.Append;
adoquery3_pwb.FieldByName('铺位号').AsString :=pwh;
adoquery3_pwb.FieldByName('客户名称').AsString :=adoquery1.FieldValues['客户名称'];
adoquery3_pwb.FieldByName('客户号').AsString :=adoquery1.FieldValues['客户号'];
adoquery3_pwb.FieldByName('费用收取总数').AsString :=adoquery1.FieldValues['费用收取总数'];
if not adoquery1.FieldByName('状态').IsNull then
adoquery3_pwb.FieldByName('状态').AsString :=adoquery1.FieldValues['状态'];
if not adoquery1.FieldByName('面积').IsNull then
adoquery3_pwb.FieldByName('面积').AsString :=adoquery1.FieldValues['面积'];
if not adoquery1.FieldByName('位置').IsNull then
adoquery3_pwb.FieldByName('位置').AsString :=adoquery1.FieldValues['位置'];
if not adoquery1.FieldByName('用途').IsNull then
adoquery3_pwb.FieldByName('用途').AsString :=adoquery1.FieldValues['用途'];
if not adoquery1.FieldByName('出租日期').IsNull then
adoquery3_pwb.FieldByName('出租日期').AsString :=adoquery1.FieldValues['出租日期'];
if not adoquery1.FieldByName('到期日期').IsNull then
adoquery3_pwb.FieldByName('到期日期').AsString :=adoquery1.FieldValues['到期日期'];
if not adoquery1.FieldByName('备注').IsNull then
adoquery3_pwb.FieldByName('备注').AsString :=adoquery1.FieldValues['备注'];
end;
// end ;
adoquery1.Next;
end;
adoquery3_pwb.Post;
ShowMessage('ok');
//如果查不到铺位出租.就提示
if ADOQuery3_pwb.RecordCount=0 then
ShowMessage('没有铺位在出租状态或该月份所有铺位已交租');end;***********从ADO1中查ADO2中没有的,如果ADO2中没有的,就把ADO1付给ADO3,但这循环速度好慢,有什么办法解实?
var
pwh,k:String;
begin
adoquery1.Active :=true;
adoquery2.Active :=true;
adoquery3_pwb.Active :=true;
k:='2006-1';
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from pw where 状态=:t_jt');
adoquery1.Parameters.ParamValues['t_jt']:='出租中';
adoquery1.Open ;
adoquery1.First; ShowMessage(inttostr(ADOQuery1.RecordCount));
while not adoquery1.Eof do
begin
// if (adoquery1.FieldByName('出租日期').AsDateTime <date) and (adoquery1.FieldByName('状态').AsString ='出租中') then
// if (adoquery1.FieldByName('状态').AsString ='出租中') then
// begin pwh:=adoquery1.FieldValues['铺位号'];
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add('select 铺位号,交费月份2,客户号 from dh2 where 铺位号='''+pwh+''' and 交费月份2=:dat and 客户号=:t_kh');
adoquery2.Parameters.ParamValues['t_kh']:=adoquery1.FieldValues['客户号'];
adoquery2.Parameters.ParamValues['dat']:=k;
adoquery2.Open;
if adoquery2.RecordCount=0 then
begin
//把它放到临界BWB表中.
adoquery3_pwb.Edit;
adoquery3_pwb.Append;
adoquery3_pwb.FieldByName('铺位号').AsString :=pwh;
adoquery3_pwb.FieldByName('客户名称').AsString :=adoquery1.FieldValues['客户名称'];
adoquery3_pwb.FieldByName('客户号').AsString :=adoquery1.FieldValues['客户号'];
adoquery3_pwb.FieldByName('费用收取总数').AsString :=adoquery1.FieldValues['费用收取总数'];
if not adoquery1.FieldByName('状态').IsNull then
adoquery3_pwb.FieldByName('状态').AsString :=adoquery1.FieldValues['状态'];
if not adoquery1.FieldByName('面积').IsNull then
adoquery3_pwb.FieldByName('面积').AsString :=adoquery1.FieldValues['面积'];
if not adoquery1.FieldByName('位置').IsNull then
adoquery3_pwb.FieldByName('位置').AsString :=adoquery1.FieldValues['位置'];
if not adoquery1.FieldByName('用途').IsNull then
adoquery3_pwb.FieldByName('用途').AsString :=adoquery1.FieldValues['用途'];
if not adoquery1.FieldByName('出租日期').IsNull then
adoquery3_pwb.FieldByName('出租日期').AsString :=adoquery1.FieldValues['出租日期'];
if not adoquery1.FieldByName('到期日期').IsNull then
adoquery3_pwb.FieldByName('到期日期').AsString :=adoquery1.FieldValues['到期日期'];
if not adoquery1.FieldByName('备注').IsNull then
adoquery3_pwb.FieldByName('备注').AsString :=adoquery1.FieldValues['备注'];
end;
// end ;
adoquery1.Next;
end;
adoquery3_pwb.Post;
ShowMessage('ok');
//如果查不到铺位出租.就提示
if ADOQuery3_pwb.RecordCount=0 then
ShowMessage('没有铺位在出租状态或该月份所有铺位已交租');end;***********从ADO1中查ADO2中没有的,如果ADO2中没有的,就把ADO1付给ADO3,但这循环速度好慢,有什么办法解实?
adoquery1.SQL.Add('select * from pw where 状态=:t_jt');
adoquery1.Parameters.ParamValues['t_jt']:='出租中';
// if (adoquery1.FieldByName('出租日期').AsDateTime <date) and (adoquery1.FieldByName('状态').AsString ='出租中') then
// if (adoquery1.FieldByName('状态').AsString ='出租中') then
这些代码用一条select 语句即可完成,没有判断,执行速度会快很多
adoquery1.SQL.Add('select * from pw where 状态=''出租中'' and 出租日期=getdate()');所有的
if not adoquery1.FieldByName('状态').IsNull then
adoquery3_pwb.FieldByName('状态').AsString :=adoquery1.FieldValues['状态'];
都可以用
adoquery3_pwb.FieldByName('状态').AsString :=adoquery1.Fieldbyname('状态').asstring;//无需判断这两句是有区别的,只需一句即可
adoquery3_pwb.Edit; //修改当前记录
adoquery3_pwb.Append; //新增记录if adoquery2.RecordCount=0 then
begin
中的主体部分可以用insert pw (字段名) values (值)来执行,效率更高