軟件首頁 |  文章首頁
最新更新 軟件分類 設(shè)為首頁 加入收藏 聯(lián)系我們
當(dāng)前位置:首頁文章首頁 IT學(xué)院 Delphi

Delphi中數(shù)據(jù)的自動(dòng)錄入

作者:東坡下載  來源:uzzf  發(fā)布時(shí)間:2010-10-14 10:10:46  點(diǎn)擊:

      在Delphi數(shù)據(jù)庫應(yīng)用系統(tǒng)的數(shù)據(jù)錄入過程中,有些數(shù)據(jù)是保存在Excel中的;有些是保存在紙張上的;還有一些是需要新增加的,由于各條記錄之間有大量的重復(fù)數(shù)據(jù),如果每條記錄都讓錄入人員全部手工錄入,其間的重復(fù)勞動(dòng)是相當(dāng)大的,還降低了工作效率。下面就這個(gè)問題進(jìn)行論述。
  1、利用Delphi調(diào)用Excel
  Delphi中已經(jīng)帶了Word與PowerPoint的例子,因?yàn)镋xcel的調(diào)用與這兩個(gè)應(yīng)用服務(wù)器的調(diào)用略有不同,所以也可以利用Delphi調(diào)用Excel。
  步驟如下:
  (1) 創(chuàng)建一個(gè)普通Application.
  (2) 在Form中分別放入ExcelApplication, ExcelWorkbook和ExcelWorksheet.
  (3) 連接Excel.
  打開Excel.

Try
ExcelApplication1.Connect;
Except
End; ExcelApplication1.Visible[0]:=True;
  增加一個(gè)Workbook.
ExcelWorkbook1.ConnectTo(ExcelApplication1 Workbooks.Add(EmptyParam,0));
  添加一個(gè)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;
  關(guān)閉Excel.
Try
ExcelApplication1.Quit;
ExcelWorksheet1.Disconnect;
ExcelWorkbook1.Disconnect;
ExcelApplication1.Disconnect;
Except
End;
End;
  (4) 對(duì)Excel的一些操作:
  選擇某一工作簿中的一個(gè)工作表,然后對(duì)某一單元格進(jìn)行賦值及取值。最后選擇某一區(qū)域作以下操作:
ExcelWorkSheet1.Range[′A1′,′C1′].Select;
  打開一個(gè)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識(shí)別掃描
  OCR可以識(shí)別一頁A4大小的印刷體中英文混排的純文本文件只用幾秒鐘,所以我們可以把掃描的圖像進(jìn)行識(shí)別處理、保存。然后通過添加記錄或批復(fù)制的操作將得到的數(shù)據(jù)轉(zhuǎn)入數(shù)據(jù)庫的相應(yīng)的表中。具體實(shí)現(xiàn)如下:
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數(shù)據(jù)錄入時(shí)自動(dòng)復(fù)制原記錄,然后做很少的修改,就完成了一條新記錄的編輯,最后直接保存。
使用 ADO 方法存取 Access數(shù)據(jù)庫中的表 test,表的第一個(gè)字段是“自動(dòng)編碼”字段,在記錄復(fù)制時(shí)要跳過。首先在 Form1 上添加 ADOConnection1、ADODataSet1、DataSource1、DBGrid1 等數(shù)據(jù)庫相關(guān)組件,使用連接向?qū)О?ADOConnection1 與 Access 數(shù)據(jù)庫連接起來,把 ADOConnection1 的 LoginPrompt 屬性設(shè)置為 False,其它組件的對(duì)應(yīng)屬性設(shè)置如下:
ADODataSet1.Connection :=ADOConnection1;
ADODataSet1.CommandText :=select * from test;
ADODataSet1.Active :=True;
DataSource1.DataSet :=ADODataSet1;
DBGrid1.DataSource :=DataSource1;
  在 DBGrid 中看到數(shù)據(jù)庫表 test 中的數(shù)據(jù),后在窗體上添加一些數(shù)據(jù)敏感的數(shù)據(jù)輸入控件(如 DBEdit 等),將其 DataSource 屬性設(shè)為 DataSource1,再分別與各字段綁定起來。
  在窗體上添加 2 個(gè)按鈕 Button1 和Button2,設(shè)計(jì)相應(yīng)的觸發(fā)事件。
  程序編譯運(yùn)行后,按 Button1 按鈕,就會(huì)添加一條新的記錄,記錄的內(nèi)容為添加前記錄指針指向的記錄的內(nèi)容.然后對(duì)現(xiàn)有數(shù)據(jù)做些改動(dòng),按 Button2 按鈕保存新記錄。
  4、結(jié)論
  通過對(duì)上面部分代碼的修改,可以實(shí)現(xiàn)數(shù)據(jù)的自動(dòng)錄入,極大的提高了數(shù)據(jù)的錄入速度。

文章評(píng)論

欄目導(dǎo)航

本類推薦文章

關(guān)于本站 | 網(wǎng)站幫助 | 廣告合作 | 下載聲明 | 友情連接 | 網(wǎng)站地圖
Copyright © 20098-2010 uzzf下載站. All Rights Reserved .