如何在同一个表中复制数据(200分)

  • 主题发起人 主题发起人 jf_163
  • 开始时间 开始时间
J

jf_163

Unregistered / Unconfirmed
GUEST, unregistred user!
大家好!
我想问两个问题:
1、在同一个表中复制数据,要求是这样的:
A表的E字段与B表的C字段建立连接(年度),A表
中有12个字段,我想把A表中去年的数据复制到A表
今年来,但我不想直接复制到表中,而是复制到
DBGrid中,然后再写入A表,如何实现。
2、能否给指定的DBGrid中记录赋值,例如为
网格的第二列的第三行赋值或第六列的第五行赋值。
恳请老师们给予指点。谢谢!

jf_163@163.net
 
“但我不想直接复制到表中,而是复制到DBGrid中,然后再写入A表",不明白你的意思,
复制和在DbGrid显示的先后顺序有什么区别?
网格的第二列的第三行赋值 dbgrid.Columns[1].items[2].DisplayName=xx
第六列的第五行赋值 dbgrid.Columns[5].items[4].DisplayName=xx


 
David Jiang:
谢谢你的指点!!
这样行不行,A表中去年的所有数据复制到A表
中,使之为今年的数据,因为每年的数据绝大多数
是相同的,这样该如何实现?
 
David Jiang:
“网格的第二列的第三行赋值 dbgrid.Columns[1].items[2].DisplayName=xx
第六列的第五行赋值 dbgrid.Columns[5].items[4].DisplayName=xx”
我怎么用不上?是不是我搞错了还是你这两句有错误。请指点!!
 
对不起,我搞错了。不能这样做,dbgrid.Columns[5] 只包含栏的信息,至于栏的数据好像
只有访问栏所指向的Field的数据。
 
1、“复制到 DBGrid 中”:这个说法是错误的,DBGrid 只是一个用于显示和编辑的 Grid ,它的
内容来自与之相关的 DataSet ,正确的说法应该是把上年数据取出到 DataSet 中,这时
DBGrid 就会把数据显示出来,然后再把数据写回到表中去。可以这样做:
Query1.SQL.Add('Select * From A Where Year=:Last_Year');
Query1.ParamByName('Last_Year').AsString := '1999';
Query1.Open; // 这是第一步,下面是添加操作
Query2.SQL.Add('Insert Into A Year, Field1, Field2, ...');
Query2.SQL.Add('Select :New_Year, Field1, Field2, ... From A Where Year=:Last_Year');
Query2.ParamByName('Last_Year').AsString := '1999';
Query2.ParamByName('New_Year').AsString := '2000';
Query2.ExecSQL; // 添加操作

2、道理相同,不能对 DBGrid 直接赋值,而是要对数据集中的字段赋值。
如果数据集是 TQuery ,在 Open 之前需要把 RequestLive 赋为 True 。
至于指定某一行,可以先 First ,然后循环 Next 定位到需要的记录,列就是字段了。
 
这样行不行,A表中去年的所有数据复制到A表
中,使之为今年的数据,因为每年的数据绝大多数
是相同的,这样该如何实现?
insert into B SELECT '今年',fied2,field3,... from A.
 
jf_163:如果你还要继续讨论请定期提前你的帖子,如果不想继续讨论请结束帖子。
 
多人接受答案了。
 
后退
顶部