mysql定时复制表数据_数据录入时自动复制原记录

在数据库应用系统的数据录入过程中,各条记录之间有大量的重复数据,如果每条记录都让录入人员全部手工录入,其间的重复劳动是相当大的,既降低了工作效率,又显得我们的软件不够“专业”。 其实我们完全可以用代码来实现数据库表记录的自动复制,当客户录入

在数据库应用系统的数据录入过程中,各条记录之间有大量的重复数据,如果每条记录都让录入人员全部手工录入,其间的重复劳动是相当大的,既降低了工作效率,又显得我们的软件不够“专业”。

其实我们完全可以用代码来实现数据库表记录的自动复制,当客户录入一条新的记录的时候,我们可以把当前记录的数据复制到录入界面的各输入框中,客户只需做很少的修改,就完成了一条新记录的编辑,然后直接保存就可以了。

本文的示例用 Delphi5.0 制作,使用 ADO 方法存取 Access 数据库中的表 test,表的第一个字段是“自动编码”字段,在记录复制时要跳过。首先在 Form1 上添加 ADOConnection1、ADODataSet1、DataSource1、DBGrid1 等数据库相关组件,使用连接向导把 ADOConnection1 与 Access 数据库连接起来,把 ADOConnection1 的 LoginPrompt 属性设置为 False,其它组件的对应属性设置如下:

ADODataSet1.Connection :=ADOConnection1;

ADODataSet1.CommandText :='select * from test';

ADODataSet1.Active :=True;

DataSource1.DataSet :=ADODataSet1;

DBGrid1.DataSource :=DataSource1;

这样以来,就可以在 DBGrid 中看到数据库表 test 中的数据了。

然后可以在窗体上添加一些数据敏感的数据输入控件(如 DBEdit 等),将其 DataSource 属性设为 DataSource1,再分别与各字段绑定起来。

再在窗体上添加 2 个按钮 Button1 和 Button2,它们的触发事件如下:

procedure TForm1.Button1Click(Sender: TObject);

var

strList: TStringList; // 声明字符串列表

i: integer;

begin

strList :=TStringList.Create;

for i :=0 to ADODataSet1.FieldCount-1 do

strList.Add(ADODataSet1.Fields[i].AsString);

// 把各字段的值保存到 TStringList 中。不能应用数组,

// 因为数组不能保存不同类型的数据。

ADODataSet1.Insert; // 插入一条新记录

for i :=1 to form1.ADODataSet1.FieldCount-1 do

ADODataSet1.Fields[i].AsString := strList[i];

// 把 TStringList 中的数据写回到新的记录中。

// 注意 TStringList 的下标从 1 开始,跳过了表的“自动编码”字段。

strList.Free;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

ADODataSet1.Post; // 保存新记录

end;

程序编译运行后,按 Button1 按钮,就会添加一条新的记录,记录的内容为添加前记录指针指向的记录的内容。我们可以对现有数据做些改动,然后按 Button2 按钮保存新记录。程序的有关说明在代码中。

张庆 Email: zhangking@263.net Phone: 13152101936 QQ: 9365822

http://soft.why100000.com 2003.8.18

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值