摘要:關系型數據庫Visual FoxPro6.0雖然應用很廣泛,但其也存在不甚完美之處,Visual FoxPro6.0不能有一個通用的,無論數據庫怎樣修改,都能打印出有橫線、豎線的標準報表。本程序用Visual FoxPro6.0的系統語言寫成,使用者不必關心庫中字段的個數及字段長度和字段名,只要輸入庫名及其它一些少許的提示信息,最后都能得到一張滿意的表格。
關鍵詞:數據庫;通用制表程序;程序簡介;程序框圖
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)22-731-02
1 引言
近年來,關系型數據庫Visual FoxPro6.0在我國的推廣應用,已經取得了良好的經濟效益和社會效益。它在企業管理、財務管理、倉庫管理、檔案管理等方面都有獨特的優點。
然而,Visual FoxPro6.0也有不甚完美之處,其報表輸出功能不甚完善就是其中之一。在這方面它的主要缺點是:不能有一個通用的,無論數據庫怎樣修改(比如:增加或減少字段、改變字段長度或字段名稱),都能打印出有橫線、豎線的標準報表。這無疑給眾多的Visual FoxPro6.0用戶在報表輸出方面增加了一些麻煩。
考慮到不同管理甚至同一管理工作中庫結構的多樣性,作者編制了這個數據庫通用制表程序。經過一些單位的試用,反應良好。
該程序對Visual FoxPro6.0的庫文件不管其結構如何都適用。使用者不必關心庫中字段的個數及字段長度和字段名,只要輸入庫名及其它一些少許的提示信息,最后都能得到一張滿意的表格。
2 程序簡介
本程序用Visual FoxPro6.0的系統語言寫成,調試后編譯成了可執行文件(長度為114K)。程序運行后,先出現一些提示信息,諸如:
輸入庫名:若輸入的庫文件不存在,程序將給出信息:“無此文件,繼續嗎?(Y/N)”,等待用戶作出選擇。
輸入表頭名稱:提示用戶從鍵盤上輸入報表的表頭。如附表(在后)中的“部分藥品價目表”。不論表頭長短,它始終被打印在報表上方的中間位置。
輸入表頭字型代碼及正文字型代碼:表頭及正文的字型可以不一樣,一般總是讓表頭的字適當地大一些。
輸入制表單位名稱及制表日期:其中制表單位名稱(或制表人姓名)被打印在表的左上方,制表日期被打印在表的右上方位置。
輸入起始打印記錄號:詢問制表者從哪一個記錄開始打印。
輸入頁記錄數:詢問一頁打印多少條記錄。
輸入打印份數:詢問同一頁需要打印多少份。(每份都打有表頭)
打印是否有條件?(Y/N):詢問是否打印滿足某些條件的記錄。若有條件(鍵入Y或y),隨后程序將提示輸入打印條件。比如:在檔案庫中只打印年齡大于50歲的人員簡況,可輸入條件:年齡>50。若無條件(鍵入N或n),庫中所有的記錄均被打印。
提示信息輸入完后,程序自動地將欲打印庫中的所有字段在C及T上顯示出來,讓制表者選擇哪些字段要打印(用Y或y回答),哪些字段不打?。ㄓ肗或n回答)。經過數據處理后,程序將根據制表者的要求將要打印的字段和記錄分頁打出,直至最后一條記錄。與此同時程序還自動地按字段的長度加畫橫、豎線。每頁的最后還打有“共x頁”“第x頁”,供制表者填寫。下表就是利用本程序打印的一張表格。
表1 部分藥品價目表
■
3 程序的實現方法及程序框圖
本程序主要是將庫文件變換成結構文件,當制表者把要打印的字段選擇好后,程序再將不需打印的字段從結構庫中刪除,隨后,程序再根據結構庫生成一個新的數據庫并將滿足打印條件(如果有條件)的記錄追加到新庫中,后面的操作都是在結構庫和新庫中進行的。程序運行結束后再將結構文件和新庫一并刪除。
程序框圖如下: