关于接收上报数据时如有重复数据就覆盖原有数据的问题 ( 积分: 100 )

  • 主题发起人 主题发起人 yorkjj
  • 开始时间 开始时间
Y

yorkjj

Unregistered / Unconfirmed
GUEST, unregistred user!
我的数据库是paradox,主要的表是djb,即人员登记表
上报的表名为djb_up,结构和主表djb结构完全相同.
其中表中有四个主要字段:姓名(name),出生年月(birth),地市(zd),工作单位(workplace)
当接收上报数据时,我需要根据这四个主要字段来判断是否为重复数据,如为重复将覆盖原
有数据,否则就直接添加到数据库中.该如何写,请赐教.
 
insert djb主表 (姓名(name),出生年月(birth),地市(zd),工作单位(workplace))
select 姓名(name),出生年月(birth),地市(zd),工作单位(workplace)
from djb_up上报表
where 姓名(name)+出生年月(birth)+地市(zd)+工作单位(workplace) not in(
select 姓名(name)+出生年月(birth)+地市(zd)+工作单位(workplace) from djb)
意思就这样,自己想想吧
 
table2.first;
while not table2.Eof do
begin
table1.First ;
while not table1.Eof do
begin
if (table2.FieldByName('name').asstring=table1.FieldByName('name').asstring) and
(table2.FieldByName('birth').asdatetime=table1.fieldbyname('birth').asdatetime) and
(table2.FieldByName('zd').asstring=table1.FieldByName('zd').asstring) and
(table2.FieldByName('workplace').asstring=table1.FieldByName('workplace').asstring)
then
begin
table1.Edit ;
table1.FieldByName('name').asstring:=table2.fieldbyname('name').asstring;
table1.FieldByName('birth').asdatetime:=table2.fieldbyname('birth').asdatetime;
table1.FieldByName('zd').asstring:=table2.fieldbyname('zd').asstring;
table1.FieldByName('workplace').asstring:=table2.fieldbyname('workplace').asstring;
table1.Post;
table1.Next;
end
else
begin
table1.Append ;
table1.FieldByName('name').asstring:=table2.fieldbyname('name').asstring;
table1.FieldByName('birth').asdatetime:=table2.fieldbyname('birth').asdatetime;
table1.FieldByName('zd').asstring:=table2.fieldbyname('zd').asstring;
table1.FieldByName('workplace').asstring:=table2.fieldbyname('workplace').asstring;
table1.Post;
end;
table2.next;
end;
我最初是这么写的,其中table1是djb ,table2是djb_up,可是不好使,还是重复添加数据,没有起到覆盖的目的,请帮助指正.
 
(Round(table2.FieldByName('birth').asdatetime)=Round(table1.fieldbyname('birth').asdatetime)) And
Trim(table1.FieldByName('zd').asstring):=Trim(table2.fieldbyname('zd').asstring)
Trim(table1.FieldByName('workplace').asstring):=Trim(table2.fieldbyname('workplace').asstring)
 
银雨辰:
你写的这是什么意思啊
 
你的条件判断啊 出生日期你定义的是date还是datetime?
if (table2.FieldByName('name').asstring=table1.FieldByName('name').asstring) and (Round(table2.FieldByName('birth').asdatetime)=Round(table1.fieldbyname('birth').asdatetime)) And Trim(table1.FieldByName('zd').asstring):=Trim(table2.fieldbyname('zd').asstring) And Trim(table1.FieldByName('workplace').asstring):=Trim(table2.fieldbyname('workplace').asstring)
then
 
我上面那段代码对吗
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
738
SUNSTONE的Delphi笔记
S
S
回复
0
查看
730
SUNSTONE的Delphi笔记
S
后退
顶部