======================================================
注:本文源代碼點此下載下傳======================================================
在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^)/