VFP在各企事業(yè)單位中有著廣泛的應用,我用它開發(fā)了本單位使用的元器件檢測信息管理系統(tǒng),現(xiàn)在是本單位日常工作中不可缺少的管理工具。開發(fā)中自有許多心得,但最想跟大家談的是在報表中實現(xiàn)每頁打印指定記錄數(shù)這個問題。
方法一
在VFP的報表生成器中,編制報表,用調整報表頁頭帶和頁腳帶高度的方法來控制每頁要打印的記錄數(shù)據(jù),這是一種比較簡單、容易實現(xiàn)的方法。但是由于不同的計算機中默認的紙張大小不一樣,或者相同的紙型中的頁邊距設置不一樣而使得每頁打印的記錄數(shù)發(fā)生改變。這對于固定的用戶和固定的打印機、紙張來講,沒有什么問題,但如果軟件要運行于多臺電腦上或推廣到更廣泛的用戶中,就要考慮不同的打印機及紙張的問題了。此時可以用下面介紹的方法二和方法三來實現(xiàn)。
另外,有很多用戶要求當表中的記錄數(shù)不是整頁數(shù)時在最后一頁中以空的表格填滿報表,也只有在下面的兩種方法中才能實現(xiàn)。
方法二
以下過程中假設報表中使用的表名為 TEMP.DBF
在報表設計器中:
1、將報表中的打印字段前面的別名前綴全部刪除。
2、將報表數(shù)據(jù)環(huán)境中原來的表從數(shù)據(jù)環(huán)境中移去。
3、在報表的數(shù)據(jù)環(huán)境的 Init 中放入以下代碼:
*-- DetailNum 是細節(jié)帶中要打印的記錄數(shù),可在這里按需要進入修改
local DetailNum
DetailNum = 17
*-- 以下 SQL語句消除刪除記錄對分組字段的影響及對數(shù)據(jù)進行適當?shù)呐判?BR> SELECT * FROM TempsintosTABLE TMP1swheresNOT DELETED() &&&&sgroupsby 排序條件
SELECT int((recno()-1)/DetailNum) as GroupCount, * ;
FROM Tmp1 ;
sintosCURSOR Temp2
USE IN TMP1
*-- 為保持一個干凈的環(huán)境,刪除剛剛建立的臨時過渡表
delete file TMP1.dbf
if file("TMP1.fpt")
delete file TMP1.fpt
endif
*-- 注:你可以在上面的代碼中設置 DetailNum 的值為你所希望每頁報表要打印的記錄數(shù)。
*-- 你也可以在第一句 SQL Select 中按你的需要設置sgroupsby 子句來排序數(shù)據(jù)。
4、在報表中增加一個分組并設置分組表達式為 GroupCount(即上面第二個 SQL Select 語句中的第一個字段名), 并選擇每組從新的一頁上開始復選框。
5、運行你的報表。
6、最后要說明的是:在運行報表前應設置正確的路徑以便 VFP 可以找到報表所使用的表。
方法一
在VFP的報表生成器中,編制報表,用調整報表頁頭帶和頁腳帶高度的方法來控制每頁要打印的記錄數(shù)據(jù),這是一種比較簡單、容易實現(xiàn)的方法。但是由于不同的計算機中默認的紙張大小不一樣,或者相同的紙型中的頁邊距設置不一樣而使得每頁打印的記錄數(shù)發(fā)生改變。這對于固定的用戶和固定的打印機、紙張來講,沒有什么問題,但如果軟件要運行于多臺電腦上或推廣到更廣泛的用戶中,就要考慮不同的打印機及紙張的問題了。此時可以用下面介紹的方法二和方法三來實現(xiàn)。
另外,有很多用戶要求當表中的記錄數(shù)不是整頁數(shù)時在最后一頁中以空的表格填滿報表,也只有在下面的兩種方法中才能實現(xiàn)。
方法二
以下過程中假設報表中使用的表名為 TEMP.DBF
在報表設計器中:
1、將報表中的打印字段前面的別名前綴全部刪除。
2、將報表數(shù)據(jù)環(huán)境中原來的表從數(shù)據(jù)環(huán)境中移去。
3、在報表的數(shù)據(jù)環(huán)境的 Init 中放入以下代碼:
*-- DetailNum 是細節(jié)帶中要打印的記錄數(shù),可在這里按需要進入修改
local DetailNum
DetailNum = 17
*-- 以下 SQL語句消除刪除記錄對分組字段的影響及對數(shù)據(jù)進行適當?shù)呐判?BR> SELECT * FROM TempsintosTABLE TMP1swheresNOT DELETED() &&&&sgroupsby 排序條件
SELECT int((recno()-1)/DetailNum) as GroupCount, * ;
FROM Tmp1 ;
sintosCURSOR Temp2
USE IN TMP1
*-- 為保持一個干凈的環(huán)境,刪除剛剛建立的臨時過渡表
delete file TMP1.dbf
if file("TMP1.fpt")
delete file TMP1.fpt
endif
*-- 注:你可以在上面的代碼中設置 DetailNum 的值為你所希望每頁報表要打印的記錄數(shù)。
*-- 你也可以在第一句 SQL Select 中按你的需要設置sgroupsby 子句來排序數(shù)據(jù)。
4、在報表中增加一個分組并設置分組表達式為 GroupCount(即上面第二個 SQL Select 語句中的第一個字段名), 并選擇每組從新的一頁上開始復選框。
5、運行你的報表。
6、最后要說明的是:在運行報表前應設置正確的路徑以便 VFP 可以找到報表所使用的表。