表A字段:id(主键),Aname,Bname,C;
表B字段:id(主键),Aname,Bname,D,F;我现在用俩个TADOQuery1,TADOQuery2 和显示到DBgrid1,DBgrid2现在想实现这样功能:
表A一条数据移动到表B 表A中id与表B中的id相同则在表B中的最后一条记录的id号加一,表B其他如有相同字段则直接从表A拷贝到表B,没有的字段表(如表B中的D,F)则显示为空,移动完成之后把表A中的这条数据删除掉请问该怎么做 ?新人刚接触数据库,理解不到位请大家多指教,谢谢!
表B字段:id(主键),Aname,Bname,D,F;我现在用俩个TADOQuery1,TADOQuery2 和显示到DBgrid1,DBgrid2现在想实现这样功能:
表A一条数据移动到表B 表A中id与表B中的id相同则在表B中的最后一条记录的id号加一,表B其他如有相同字段则直接从表A拷贝到表B,没有的字段表(如表B中的D,F)则显示为空,移动完成之后把表A中的这条数据删除掉请问该怎么做 ?新人刚接触数据库,理解不到位请大家多指教,谢谢!
解决方案 »
- 请教cxgrid中粘贴怎么实现
- 灰色的按钮,就是Disable掉的那种按钮的句柄怎么获取?
- 请问TMethod = procedure of object是什么意思
- GOTO语句的小问题
- 任意给出4个数字,要求将他们按不同的顺序排列组合,将组合的结果列出来,怎么写?
- 关于数据库里的查询!?
- 三层问题,客户层一定要clientdataset来连接中间层吗?
- 怎样判断控件是否存在?
- 在一个form上放了10个TEdit控件,怎样把它当作数组操作?
- 如何在delphi中操作SQL SERVER的UniqueIdentifier字段
- DELPHI如何实现IE拨号网络代理IP的设置
- 旷世难题,谁能解之?求答案!!!
declare @MaxID integer
select @MaxID = max(ID) + 1 from B
select @ID = ID from B where ID = A.ID(查询表A中ID的条件语句)
if ( @ID is null)
begin
set @ID = @MaxID
end
insert into B (ID, Aname,Bname) select @ID, Aname,Bname from B where B.ID = A.ID(查询表A中ID的条件语句)将以上语句组成字符串,供一个ADO执行即可。建议:
一、如果不确定字段列表,可以使用查询字段列表的方式,先获取B表中的字段列表,再依次循环比对A中的字段列表,然后组成SQL语句进行执行。
二、强烈建议,插入数据时,不要再使用原来的主键ID,如果万一不小心,造成主键数据混乱,将是很麻烦的一件事情,可以使用自动编号类型,让数据库自动创建。
另: id类型我是用的int 你的建议我有点看不懂(对我来说深奥了)呵呵
ADOdoing.SQL.Clear;
ADOdoing.SQL.Add('declare @ID integer');
ADOdoing.SQL.Add('declare @MAXID integer');
ADOdoing.SQL.Add('select @MAXID=max(ID)+1 From T_doingrd');
ADOdoing.SQL.Add('select @ID=ID From T_doingrd Where ID=T_Waitrd.id '); //这里不对,出现‘无法绑定由多个部分组成的标示符‘T_Waitrd.id ’’ 请问这个是什么原因啊 ADOdoing查询的是T_doingrd 表,而T_Waitrd表是关联ADOwait 请问是这个原因引起的吗?
ADOdoing.SQL.Add('If (@ID is null) begin Set @ID=@MAXID end ');
ADOdoing.SQL.Add('Insert Into T_doingrd (ID,P_name,st_time) select @ID,P_name,st_time From T_doingrd Where T_doingrd.ID=T_Waitrd.ID ');
表A id(主键 int) Aname(char) Bname(char) C(datetime)
1 硬件 张某 2012-7-8
表B id (主键int) Aname(char) Bname(char) E(char) F(char)
1 软件 李四 资料已提交 高
我现在用了俩个ado来连接 显示在俩个DBGrid 要实现的功能:现选中DBGrid1(表A)中的一条记录,然后要把它移到DBGrid2(表B)中,然后把DBGrid1中的要移动的记录删掉
也相当于需要把表A中的记录移到表B ,如果表B中ID与表A中相同,则在表B的最后一条记录的ID加一(现在表B中有一条数据且id为1(冲突),则需要插入表A的数据时在表B中的id为id+1,也就是id为2 现把表A数据插入到表B数据为 2 硬件 张某 )
麻烦大侠们帮帮忙 多谢了
一个表A的记录插入到另一个表B中(通过 DBgrid-》ado来实现),关键点:俩个表的id(主键,自动编号类型)一个表A插入到另一个表B通过比较有冲突的id(俩表存在相同的id),则被插入的这条记录在表A的id为表A的最后一条记录的id加一