• Delphi中数据的自动录入


    Delphi数据库应用系统的数据录入过程中,有些数据是保存在Excel中的;有些是保存在纸张上的;还有一些是需要新增加的,由于各条记录之间有大量的重复数据,如果每条记录都让录入人员全部手工录入,其间的重复劳动是相当大的,还降低了工作效率。下面就这个问题进行论述。

      1、利用Delphi调用Excel

      Delphi中已经带了WordPowerPoint的例子,因为Excel的调用与这两个应用服务器的调用略有不同,所以也可以利用Delphi调用Excel

      步骤如下:

      (1) 创建一个普通Application

      (2) Form中分别放入ExcelApplication ExcelWorkbookExcelWorksheet

      (3) 连接Excel

      打开Excel

    Try
    ExcelApplication1.Connect;
    Except
    End; ExcelApplication1.Visible[0]:=True;


      增加一个Workbook

    ExcelWorkbook1.ConnectTo(ExcelApplication1 Workbooks.Add(EmptyParam0));


      添加一个Worksheet

    Var Temp_Worksheet: _WorkSheet;
    Begin
    Try
    Temp_Worksheet:=ExcelWorkbook1.
    WorkSheets.Add(EmptyParam

    EmptyParam
    EmptyParamEmptyParam0)
    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 上添加 ADOConnection1ADODataSet1DataSource1DBGrid1 等数据库相关组件,使用连接向导把 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、结论

      通过对上面部分代码的修改,可以实现数据的自动录入,极大的提高了数据的录入速度。

     
     
    作者:易简.道    
     
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    linux常用命令(持续更新)
    nginx和redis
    网络编程BIO、NIO、AIO
    同步和异步、阻塞和非阻塞
    执行一条sql语句过程
    InnoDB 的B+树索引原理
    InnoDB 为啥要选择B+树来存储数据
    MySQL数据库引擎简介
    java并发编程(同步、同步容器、线程池)
    putty登录linux遭refuse
  • 原文地址:https://www.cnblogs.com/xyicheng/p/1678580.html
Copyright © 2020-2023  润新知