DELPHI下調節器用EXCEL為其編輯和列印 (轉)

gugu99發表於2008-03-20
DELPHI下調節器用EXCEL為其編輯和列印 (轉)[@more@] 

下調節器用為其編輯和列印


  我們在常用的應用中,編寫報表程式比較麻煩,而且delphi中的報表程式由使用者修改也不方便,象一般的資料要加上一個表頭,其中的一些資料要修改或要把幾個表的資料組合成一個資料集後再列印,這些操作對於delphi中的報表程式來說無能為力,而在大多數的上都裝有套件,我們能不能利用EXCEL的表格處理能力和固有的多種列印輸出功能呢?答案是肯定的。我們利用EXCEL能處理aSE的功能,只要我們的資料庫檔案和DBASE相容就可以了。
  在delphi中的database desktop中,新建一個Table表的dbase IV(只能用dabse檔案,因為EXCEL不認其它方式的檔案)檔案sample.dbf,可建立檔案,在這裡應注意的是在database desktop中只能輸入英文欄位,其實我們只用databse desktop建立檔案結構,然後可以到vfp中修改成中文即可,對資料的初始化和欄位的增減可在vfp中完成,大家可能要問為什麼不在vfp中直接建立資料表檔案,因為EXCEL根本不認vfp中的資料表,它讀出的資料是雜亂的。
  建立好資料表sample.dbf後,在delphi中建立一個工程,然後選擇file->new中的data module模組,建立的data module好處是在各個表單可能通用,在datamodule1的components中新增資料來源和資料表,設定相關項,資料表的databasename應設為c:temp(你的dbf檔案的目錄),把tablename設為你所設計的資料表(sample.dbf),在form1上新建一個button按鈕,caption為編輯列印,在它的onclick中加入如下程式碼:
  data.table1.close;//關閉當前資料表,如果不關閉可能造成資料不全
  if fileexists(extractfiledir(application.exename)+‘samplep.dbf') then DeleteFile(extractfiledir(application.exename)+‘samplep.dbf');
  //判斷列印資料表samplep.dbf是否存在,如果存在就刪除它
  copyfile(pchar(extractfiledir(application.exename)+‘sample.dbf'),pchar(extractfiledir(application.exename)+‘samplep.dbf'),true);
  //把sample.dbf複製成列印資料表samplep.dbf,samplep.dbf是編輯列印專用的,如果用sample.dbf則EXCEL會提示sample.dbf是隻讀檔案,修改會當機
  data.table1.open;//開啟當前資料表,使其處於活動狀態
  execute(0,‘open',‘EXCEL.EXE',pchar(extractfiledir(application.exename)+‘samplep.dbf'),pchar(extractfiledir(application.exename)),SW-SHOWMAXIMIZED);//excel並讀取samplep.dbf檔案到excel中,在標頭檔案中要引用Shell.
  這樣就可利用EXCEL的表格功能和多列印功能,不必再去設計繁鎖的報表程式了;我在為我單位編寫的發票統計系統使用了這種方式,使用者感覺到很方便


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1001219/,如需轉載,請註明出處,否則將追究法律責任。

相關文章