======================================================
注:本文源代码点此下载======================================================
在delphi数据库应用系统的数据录入过程中,有些数据是保存在excel中的;有些是保存在纸张上的;还有一些是需要新增加的,由于各条记录之间有大量的重复数据,如果每条记录都让录入人员全部手工录入,其间的重复劳动是相当大的,还降低了工作效率。下面就这个问题进行论述。
1、利用delphi调用excel
delphi中已经带了word与powerpoint的例子,因为excel的调用与这两个应用服务器的调用略有不同,所以也可以利用delphi调用excel。
步骤如下:
(1) 创建一个普通application.
(2) 在form中分别放入excelapplication, excelworkbook和excelworksheet.
(3) 连接excel.
打开excel.
try
excelapplication1.connect;
except
end; excelapplication1.visible[0]:=true;
增加一个workbook.
excelworkbook1.connectto(excelapplication1 workbooks.add(emptyparam,0));
添加一个worksheet.
var temp_worksheet: _worksheet;
begin
try
temp_worksheet:=excelworkbook1.
worksheets.add(emptyparam,
emptyparam,emptyparam,emptyparam,0)
as _worksheet;
excelworksheet1.connectto(temp_workshee);
except
showmessage(′failure′); end;
关闭excel.
try
excelapplication1.quit;
excelworksheet1.disconnect;
excelworkbook1.disconnect;
excelapplication1.disconnect;
except
end;
end;
(4) 对excel的一些操作:
选择某一工作簿中的一个工作表,然后对某一单元格进行赋值及取值。最后选择某一区域作以下操作:
excelworksheet1.range[′a1′,′c1′].select;
打开一个excel文件.
if opendialog1.execute then
begin
try
excelworkbook1.connectto(excel
application1.workbooks.open(opendialog1filename,emptyparam,emptyparam,empty param, emptyparam, emptyparam,
emptyparam,emptyparam,emptyparam, emptyparam,emptyparam,
emptyparam,emptyparam,0));
excelworksheet1.connectto(excelworkbook1.activesheet as _worksheet);
except;
end;
2、利用ocr识别扫描
ocr可以识别一页a4大小的印刷体中英文混排的纯文本文件只用几秒钟,所以我们可以把扫描的图像进行识别处理、保存。然后通过添加记录或批复制的操作将得到的数据转入数据库的相应的表中。具体实现如下:
procedure tform1.buttonclick(sender:tobject);
begin
shellexecute(handle,'open','
c:\sh60\sh60.exe',',',sw-shownormal);
button3.enabled:=false;
end;
procedure tform1.formcreat(sender:tobject);
var i:integer:
begin
chdir('c:\sh60');
form1.edit1.clear;
form1.memo1.clear;
assignfile(textid,form1.opendialog1.filename);
for i:=1 to form1.adoquery1.sql.count do
begin
form1.adoquery1.close;
form1.adoquery1.clear;
form1.adoquery1.sq1.add('select 表名
from formname')close;
form1.adoquery1.open;
form1.dbcombox1.datafield:='表名';
end;
3、利用原记录更改
delphi数据录入时自动复制原记录,然后做很少的修改,就完成了一条新记录的编辑,最后直接保存。
使用 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,设计相应的触发事件。
程序编译运行后,按 button1 按钮,就会添加一条新的记录,记录的内容为添加前记录指针指向的记录的内容.然后对现有数据做些改动,按 button2 按钮保存新记录。
4、结论
通过对上面部分代码的修改,可以实现数据的自动录入,极大的提高了数据的录入速度。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicGcq5SO1MDO4UDN0YzMyYTNzYDO0UDNvw1ZuVGajlWe49CXt92YfN3ZvxmYuN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmL3d3dvw1LcpDc0RHaiojIsJye.jpg)
作者:易简.道
出处:http://www.cnblogs.com/xyicheng/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
绿色通道:好文要顶关注我收藏该文与我联系
======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/