背景:
record_date表示记录填写时间,data_id表示记录唯一性
现在要用较新的记录汇入,删除旧的记录
运行后:
第一条语句成功执行,但好像第二条sql语句不起作用,结果导致叻双倍的记录
--------------------------------------------代码如下:
。。
。。
if CheckBox1.Checked = True then
begin
wwTable1.Active:=false;
wwTable1.TableName:=curwenjian1;
wwTable1.Active:=true;
Query1.Close;
query1.SQL.Clear;
query1.SQL.Add('insert into '+curwenjian1+' select * from '+curwenjian2+' where data_id in (select data_id from '+curwenjian1+') and record_date > (select record_date from '+curwenjian1+' where data_id='+curwenjian2+'.data_id )');
query1.SQL.Add(' and record_date between :riqi1 and :riqi2 '); //汇入本地存在,但来源数据更新的数据
query1.ParamByName('riqi1').AsDate:=DateTimePicker1.Date;
query1.ParamByName('riqi2').AsDate:=DateTimePicker2.Date;
query1.ExecSQL;
end; if CheckBox1.Checked = True then
begin
wwTable1.Active:=false;
wwTable1.TableName:=curwenjian1;
wwTable1.Active:=true;
Query1.Close;
query1.SQL.Clear;
query1.SQL.Add('delete from '+ curwenjian1 +' where data_id in (select data_id from '+curwenjian2+') and record_date < (select record_date from '+curwenjian2+' where data_id='+curwenjian1+'.data_id ');
query1.SQL.Add(' and record_date between :riqi1 and :riqi2 )'); //删除本地存在,但更旧的数据
query1.ParamByName('riqi1').AsDate:=DateTimePicker1.Date;
query1.ParamByName('riqi2').AsDate:=DateTimePicker2.Date;
query1.ExecSQL;
end;
。。
。
record_date表示记录填写时间,data_id表示记录唯一性
现在要用较新的记录汇入,删除旧的记录
运行后:
第一条语句成功执行,但好像第二条sql语句不起作用,结果导致叻双倍的记录
--------------------------------------------代码如下:
。。
。。
if CheckBox1.Checked = True then
begin
wwTable1.Active:=false;
wwTable1.TableName:=curwenjian1;
wwTable1.Active:=true;
Query1.Close;
query1.SQL.Clear;
query1.SQL.Add('insert into '+curwenjian1+' select * from '+curwenjian2+' where data_id in (select data_id from '+curwenjian1+') and record_date > (select record_date from '+curwenjian1+' where data_id='+curwenjian2+'.data_id )');
query1.SQL.Add(' and record_date between :riqi1 and :riqi2 '); //汇入本地存在,但来源数据更新的数据
query1.ParamByName('riqi1').AsDate:=DateTimePicker1.Date;
query1.ParamByName('riqi2').AsDate:=DateTimePicker2.Date;
query1.ExecSQL;
end; if CheckBox1.Checked = True then
begin
wwTable1.Active:=false;
wwTable1.TableName:=curwenjian1;
wwTable1.Active:=true;
Query1.Close;
query1.SQL.Clear;
query1.SQL.Add('delete from '+ curwenjian1 +' where data_id in (select data_id from '+curwenjian2+') and record_date < (select record_date from '+curwenjian2+' where data_id='+curwenjian1+'.data_id ');
query1.SQL.Add(' and record_date between :riqi1 and :riqi2 )'); //删除本地存在,但更旧的数据
query1.ParamByName('riqi1').AsDate:=DateTimePicker1.Date;
query1.ParamByName('riqi2').AsDate:=DateTimePicker2.Date;
query1.ExecSQL;
end;
。。
。
第2条不起作用,应该是没有满足条件的吧,执行之前先把delete改成select看能查出来吗?