如何在Delphi中自動錄入數(shù)據(jù)
如何在Delphi中自動錄入數(shù)據(jù),下面就這個問題進行論述。
1、利用Delphi調(diào)用Excel
Delphi中已經(jīng)帶了Word與PowerPoint的例子,因為Excel的調(diào)用與這兩個應用服務器的調(diào)用略有不同,所以也可以利用Delphi調(diào)用Excel。
步驟如下:
(1) 創(chuàng)建一個普通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的一些操作:
選擇某一工作簿中的一個工作表,然后對某一單元格進行賦值及取值。最后選擇某一區(qū)域作以下操作:
- 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大小的印刷體中英文混排的純文本文件只用幾秒鐘,所以我們可以把掃描的圖像進行識別處理、保存。然后通過添加記錄或批復制的操作將得到的數(shù)據(jù)轉(zhuǎn)入數(shù)據(jù)庫的相應的表中。具體實現(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ù)錄入時自動復制原記錄,然后做很少的修改,就完成了一條新記錄的編輯,最后直接保存。
使用 ADO 方法存取 Access數(shù)據(jù)庫中的表 test,表的第一個字段是“自動編碼”字段,在記錄復制時要跳過。首先在 Form1 上添加 ADOConnection1、ADODataSet1、DataSource1、DBGrid1 等數(shù)據(jù)庫相關組件,使用連接向?qū)О?ADOConnection1 與 Access 數(shù)據(jù)庫連接起來,把 ADOConnection1 的 LoginPrompt 屬性設置為 False,其它組件的對應屬性設置如下:
- 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 屬性設為 DataSource1,再分別與各字段綁定起來。
在窗體上添加 2 個按鈕 Button1 和Button2,設計相應的觸發(fā)事件。
程序編譯運行后,按 Button1 按鈕,就會添加一條新的記錄,記錄的內(nèi)容為添加前記錄指針指向的記錄的內(nèi)容.然后對現(xiàn)有數(shù)據(jù)做些改動,按 Button2 按鈕保存新記錄。
4、結論
通過對上面部分代碼的修改,可以實現(xiàn)數(shù)據(jù)的自動錄入,極大的提高了數(shù)據(jù)的錄入速度。
【編輯推薦】