第8章報表與標簽設計_第1頁
第8章報表與標簽設計_第2頁
第8章報表與標簽設計_第3頁
第8章報表與標簽設計_第4頁
第8章報表與標簽設計_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第第8章:報表、標簽設計章:報表、標簽設計 學習要點學習要點1、報表設計器和標簽設計器的使用方法。、報表設計器和標簽設計器的使用方法。2、報表域控件的使用方法及頁面設置。、報表域控件的使用方法及頁面設置。3、報表與應用程序的集成與數(shù)據(jù)查詢。、報表與應用程序的集成與數(shù)據(jù)查詢。4、報表和標簽的輸出。、報表和標簽的輸出。8.1 創(chuàng)建報表和標簽創(chuàng)建報表和標簽報表和標簽的建立方法基本上是相同的,它們都可以通過向導或設計器來創(chuàng)建,即創(chuàng)建報表可以使用“報表設計器”、創(chuàng)建標簽可以使用“標簽設計器”。用向導創(chuàng)建報表和標簽只需按提示一步一步地執(zhí)行即可,本章不再介紹。8.1.1創(chuàng)建快速報表創(chuàng)建快速報表首先打開報表設

2、計器,并向數(shù)據(jù)環(huán)境添加報表數(shù)據(jù)源,然后選擇【報表】|【快速報表】VFP6會打開“快速報表”,如圖8-1所示。圖8-1 快速報表在這里可以選擇字面布局和選擇是否包含標題,如果要在報表中對表中的字段有所選擇,還可以單擊【字段】,打開“字段選擇器”選擇所需包含的字段。如圖8-2所示。圖8-2 快速報表的“字段選擇器 設置完成后,快速報表如圖8-3所示。保存該報表,則創(chuàng)建快速報表完成。 圖8-3 生成的快速報表 8.1.2 利用報表設計器設計報表標簽利用報表設計器設計報表標簽 如果用戶不想使用“報表向導”,也可以用報表設計器生成一個新的報表。如果已有一個空白報表或標簽,或者已由“報表設計器”生成了一個

3、報表,但它不十分適合要求,則可以在“報表設計器”中修改它。下面將介紹報表設計器的使用方法。 1、進入報表設計器、進入報表設計器 進入報表設計器的方法與前面介紹的“表設計器”、“表單設計器”基本相同,其步驟如下:選定一個項目文件打開項目管理器,選擇“文檔”選項卡中的“報表”,再單擊【新建】|【新建報表】,彈出“報表設計器”窗口。帶區(qū)頁標頭帶區(qū)細節(jié)帶區(qū)頁注腳帶區(qū) 窗口中包含“頁標頭”、“細節(jié)”和“頁注腳”三個帶區(qū),若使用【新建】|【報表向導】方法進入報表向導,則還會在報表的最上面增加一個“標題”帶區(qū),若在向導中加入了數(shù)據(jù)分組,還會有“組標頭”和“組注腳”等帶區(qū)。在“報表設計器”的帶區(qū)中,可以插入各

4、種控件,它們包含報表中想要的標簽、字段、變量和表達式。要增強報表的視覺效果和可讀性,還可以添加直線、矩形以及其它一些控件,也可以包含圖片/OLE綁定型控件。使用報表的帶區(qū)可以決定報表的每頁、分組及開始與結尾的式樣??梢哉{整報表的帶區(qū)的大小。在報表的帶區(qū)內,添加報表控件,然后移動、復制、調整大小、對齊方式以及調整它們,從而安排報表中的文本和域控件。可以在任何帶區(qū)中設置任何報表控件。也可以添加運行報表時執(zhí)行的用戶自定義函數(shù)。 2、設計報表、設計報表 仍以建立Student報表為例,先打開“報表設計器”,選定【顯示】|【報表控件工具欄】,將“報表控件”工具欄打開,一般情況下,在打開“報表設計器”時,

5、“報表控件”工具欄會自動打開?!皥蟊砜丶惫ぞ邫谥懈骺丶墓δ苋鐖D 在此工具欄上有八個按鈕,其中:“選定對象”按鈕:用于在報表設計或修改過程中從報表上選定一個對象?!皹撕灐卑粹o:用于在設計時向報表中添加一個標簽對象,用于存放文本?!坝蚩丶卑粹o:用于在設計時向報表中添加一個域控件,在域控件中可以存放任何合法的VFP表達式、內存變量和字段變量等。“線條”按鈕:用于在報表中設計各種分隔線?!熬匦巍?、“圓角矩形”按鈕:用于在報表中畫一個矩形框或圓角矩形框。“圖片/ActiveX綁定控件”按鈕:用于向報表中添加一個圖片或ActiveX綁定控件。“按鈕鎖定”按鈕:使用此按鈕可以鎖定被選定的按鈕。當要向報

6、表中連續(xù)添加幾個相同的控件時,可以利用“按鈕鎖定”功能,即先選定要向報表中添加的對象的按鈕(如矩形),然后再選定“按鈕鎖定”按鈕,這時就可以連續(xù)向報表中添加矩形框對象。 設計Student報表步驟:第第1步:設置報表的數(shù)據(jù)環(huán)境。步:設置報表的數(shù)據(jù)環(huán)境。打開報表設計器后,選擇系統(tǒng)菜單上的【顯示】|【數(shù)據(jù)環(huán)境】在系統(tǒng)菜單上增加【數(shù)據(jù)環(huán)境】菜單 ,然后再選擇【數(shù)據(jù)環(huán)境】|【添加】。在彈出的“添加表或視圖”對話框中先在“選定”下選擇“表”,然后在列表框中選擇Student表,再單擊【添加】,再單擊【關閉】,最后關閉“數(shù)據(jù)環(huán)境設計器”。 選擇【數(shù)據(jù)環(huán)境】在系統(tǒng)菜單上增加了【數(shù)據(jù)環(huán)境】菜單,同時打開了“數(shù)

7、據(jù)環(huán)境設計器”。單擊【數(shù)據(jù)環(huán)境】菜單并選擇【添加】,打開“添加表或視圖”對話框。 在“添加表或視圖”對話框中從“數(shù)據(jù)庫中的表”下選擇Student表,再單擊【添加】,然后單擊【關閉】,即可將Student表添加到“數(shù)據(jù)環(huán)境設計器”中。若要添加視圖,可在“選定”選項組中先選擇“視圖”,再進行上述操作。添加后表或視圖后關閉“數(shù)據(jù)環(huán)境設計器”。 第第2步:為報表添加標題。步:為報表添加標題。選擇菜單上的【報表】|【標題/總結】,彈出的【標題/總結】對話框。選中“標題帶區(qū)”再單擊【確定】按鈕在“報表設計器”中增加了標題帶區(qū)欲在標題帶區(qū)中加入標簽“學生報表”的操作步驟:先單擊“報表控件”工具欄上的(標簽

8、)按鈕;在標題帶區(qū)中單擊出現(xiàn)閃爍的光標。在光標處開始輸入標題名“學生報表”;學生報表字號設置:先選中“學生報表”標簽,再在系統(tǒng)菜單中選擇【格式】|【字體】,在彈出的“字體”對話框中選擇所需要的字體和字號以及字體樣式。如選擇“黑體”、“規(guī)則”、“二號”。接著再進行版面設置,選擇【格式】|【對齊】|【水平居中】。 第第3步:步:設置報表的頁標頭。設置報表的頁標頭與上面設置標題的方法相同。 系部代號班級代號 學號姓名性別出生日期班級宿舍電話年齡新生類別1、在頁標頭中分別添加標簽“系部代號”、“班級代號”、“學號”、“姓名”等。2、按住Shift鍵后分別單擊每一個標簽,將其全部選中。3、用與設置標題相

9、同的方法將頁標頭的字體設為 “黑體” 、“規(guī)則”、 “五號” 。4、標簽布局調整。選中單個標簽后用光標鍵可調整其位置,也可選中一批后使用光標鍵調整位置。第第4步:設置細節(jié)。步:設置細節(jié)。 在第3步設計完成后,可以將“數(shù)據(jù)環(huán)境設計器”打開。將要列在報表中的字段從“數(shù)據(jù)環(huán)境設計器”中逐個拖到細節(jié)帶區(qū)。設置字體字號及調整布局:方法同頁標題。使用報表默認的字體和字號??丶R:選中細節(jié)中的全部域控件,然后在系統(tǒng)菜單中選擇【格式】|【對齊】|【頂邊對齊】。 設置細節(jié)時也可以不從“數(shù)據(jù)環(huán)境設計器”中將字段拖到細節(jié),而使用 報表控件工具欄。單擊工具欄上的“域控件”按鈕,再單擊“按鈕鎖定”按鈕,可以向報表中多

10、次添加域控件。然后在“細節(jié)”帶區(qū)合適的位置單擊添加一個域 控件。在報表上單擊時系統(tǒng)將打開“報表表達式”生成器。“表達式生成器”按鈕“格式”按鈕單擊“表達式生成器”按鈕從“字段”列表框中選擇一個字段雙擊單擊【確定】 設置細節(jié)時也可以不從“數(shù)據(jù)環(huán)境設計器”中將字段拖到細節(jié),而使用 報表控件工具欄。單擊工具欄上的“域控件”按鈕,再單擊“按鈕鎖定”按鈕,可以向報表中多次添加域控件。然后在“細節(jié)”帶區(qū)合適的位置單擊添加一個域 控件。在報表上單擊時系統(tǒng)將打開“報表表達式”生成器?!氨磉_式生成器”按鈕“格式”按鈕單擊【確定】 設置細節(jié)時也可以不從“數(shù)據(jù)環(huán)境設計器”中將字段拖到細節(jié),而使用 報表控件工具欄。單

11、擊工具欄上的“域控件”按鈕,再單擊“按鈕鎖定”按鈕,可以向報表中多次添加域控件。然后在“細節(jié)”帶區(qū)合適的位置單擊添加一個域 控件。在報表上單擊時系統(tǒng)將打開“報表表達式”生成器。采用同樣的方法添加其它域控件并調整域控件到合適的大小。調整域控件大?。好總€域控件都有8個控制柄,按住控制柄拖動鼠標可以調整域控件的大小?,F(xiàn)將“系代號”域控件寬度縮短??刂票诘?步:在頁注腳中設置報表頁碼。步:在頁注腳中設置報表頁碼。方法基本同上一步,只不過在“表達式生成器”對話框中不是從“字段”列表框中選擇,而是從“變量”列表框中選擇“_pageno”。在此報表中,數(shù)據(jù)之間沒有分隔線,若要求要有網(wǎng)格線,也可以用同上的基

12、本方法,在“頁標頭”中的字段名上加上方框線,在“細節(jié)”中的域控件上加分隔線。先選中頁標頭中的所有標簽,并將其移到頁標頭帶區(qū)的頂部,然后對細節(jié)帶區(qū)中的所有域 控件進行同樣的處理。再將鼠標移到頁標頭分隔帶上,按住左鍵向上移動,調整頁標頭帶區(qū)的寬度,用同樣的方法調整細節(jié)帶區(qū)的寬度。若要精確設置寬度,可以雙擊分隔帶彈出對話框。在高度微調框中調整高度。再單【確定】第第5步:在頁注腳中設置報表頁碼。步:在頁注腳中設置報表頁碼。方法基本同上一步,只不過在“表達式生成器”對話框中不是從“字段”列表框中選擇,而是從“變量”列表框中選擇“_pageno”。在此報表中,數(shù)據(jù)之間沒有分隔線,若要求要有網(wǎng)格線,也可以用

13、同上的基本方法,在“頁標頭”中的字段名上加上方框線,在“細節(jié)”中的域控件上加分隔線。在工具欄上單擊“矩形”按鈕,然后在“頁標題”帶區(qū)劃一個矩形框。再單擊工具欄上的“線條”按鈕,然后在標簽間劃豎向分隔線。然后再在細節(jié)帶區(qū)域控件的下部劃一條水平線,再在域控件的中間及前后劃豎向分隔線。 報表設計完成后,可以先單擊系統(tǒng)菜單“常用”工具欄上的打印預覽按鈕,查看報表設計的效果,如果不滿意還可以用上述方法進行修改,如果滿意則可以結束“報表設計器”的設計工作,將報表保存到預定的目錄中。 預覽結果如下:3、修改報表文件、修改報表文件 要修改已生成的報表文件,應先將它打開。 在項目管理器的“文檔”選項卡中選擇“報

14、表”,并在展開的報表列表中選擇要修改的報表,然后單擊項目管理器上的【修改】按鈕。如對剛建立的Student報表。在“報表設計器”中可以用建立報表的方法修改已存在的報表。4、規(guī)劃數(shù)據(jù)位置、規(guī)劃數(shù)據(jù)位置 下圖說明了報表中可能出現(xiàn)的各類帶區(qū)以及每個帶區(qū)應放置的數(shù)據(jù)等典型內容。 用“報表設計器”設計報表時,報表中要用的數(shù)據(jù)以及各數(shù)據(jù)在報表中什么位置顯示和打印,均要在設計時加以考慮,這就是對報表布局的規(guī)劃。通過規(guī)劃報表布局,可以設計和修改數(shù)據(jù)在報表頁面上的位置。將數(shù)據(jù)對象放在報表中的不同的帶區(qū),將有不同的顯示結果,例如,如果將數(shù)據(jù)對象放在報表的“標題”帶區(qū)中,則此數(shù)據(jù)在報表中只顯示或打印一次,但如果將表

15、的字段對象放在報表的“細節(jié)”帶區(qū)中,則可以每條記錄顯示或打印一次。可以用下表決定所要使用的帶區(qū)以及在帶區(qū)中應放入何種控件。 8.2 報表與標簽的布局和數(shù)據(jù)報表與標簽的布局和數(shù)據(jù) 8.2.1 重定義頁面布局重定義頁面布局 在報表中,可以定義多個列,也可以改變頁面中的帶區(qū)的高度,從而重新設計頁面布局。1、在頁面上定義多個列、在頁面上定義多個列若要定義多個列的報表,可以:(1)在【文件】菜單上選擇【頁面設置】,打開“頁面設置”對話框,如圖。輸入頁面所需的數(shù)目,該數(shù)目就是一頁上將要排列顯示和打印的記錄列數(shù)。 輸入列的寬度值。 輸入所需要的列間距,若在“列數(shù)”框中只設1列,則“間隔”框為不可選。 輸入報

16、表的左頁邊距值。 按鈕用于設置報表中多列顯示時數(shù)據(jù)打印的順序 (2)根據(jù)要求在對話框中進行設置,最后選擇【確定】,“報表設計器”將反映出設置的改變。 2、設置報表帶區(qū)高度、設置報表帶區(qū)高度在設計報表時,可以改變報表帶區(qū)的高度。報表帶區(qū)的高度是指一個報表帶區(qū)可用的頁面空間(在頁邊距的范圍內)。例如:如果“標題”帶區(qū)設置為2英寸,則“標題”將在頂部頁邊距下2英寸區(qū)域內顯示和打印?!凹毠?jié)”帶區(qū)指定每個要顯示的記錄所需要的區(qū)域。對于“組標頭”和“頁注腳”帶區(qū),還可以設置附加的參數(shù)。若要精確設置帶區(qū)的高度,可以通過先雙擊相應帶區(qū)的條形欄,在出現(xiàn)的一個與該帶區(qū)對應的對話框中的“高度”框中輸入所需要的高度值

17、,然后再單擊【確定】。帶區(qū)高度設置在前文已作說明。8.2.2 在域控件中使用表達式和函數(shù)在域控件中使用表達式和函數(shù) 在報表或者標簽中,可以包含域控件來顯示一些表達式。例如,表或視圖的字段、內存變量,以及它們之間的運算的值等。1、添加域控件、添加域控件用戶可以使用幾種方法向報表中添加域控件,在上一節(jié)的報表設計中介紹了二種方法。一是直接使用工具欄上的域 控件按鈕向報表中添加域 控件;二是從“數(shù)據(jù)環(huán)境設計器”中添加表的字段作為域控件。2、插入字段連接構成的域控件、插入字段連接構成的域控件把表的字段添加到報表之后,在預覽時可能會看到這些字段沒有按照在頁面上所希望的方式顯示。有時想要將幾個字段連在一起顯

18、示,這時可以將這些字段連成一個域表達式,同時刪除多余的空格。每個控件所對應的值所需的空間可能不同,這時可以適當調整控件。若要將幾個字段連接成為一個域表達式,可以按以下步驟進行: (1)選擇“報表控件”工具欄中的“域控件”,在報表中插入一個域控件。將域控件的大小設為表達式求值后所必須的最小值。也可以先雙擊一個選中的域控件,然后在“報表表達式”對話框中的“溢出時伸展”前的復選框中做上選中標記,使它能夠在表達式求值后需要更多的空間時自動伸展;若所需空間較小,則控件不會縮小,但控件的所占的空間不會比在設計時設定的更小。 在帶區(qū)的最上一個域控件可設置為“相對帶區(qū)頂端固定”和“溢出時伸展”。溢出時伸展浮動

19、在帶區(qū)最上一個域 控件下面的其它域控件要設為浮動。(2)在“報表表達式”對話框中,選擇“表達式生成器”按鈕。(3)在彈出的“表達式生成器”中,從“字符串”框中選擇Alltrim(expC)函數(shù)。該字符串出現(xiàn)在“報表字段的表達式”框中,同時選定了expC。(4)在“字段”列表框中雙擊想要在控件中顯示的第一個字段名。該字段名將代替“報表字段表達式”框中的expC。在字段名后輸入一個“+”號也可以從“字符串”函數(shù)框中選擇一個“+”號。(5)重復上面的第三步和第四步來處理其它字段,直至完成表達式,再選擇【確定】。(6)在“報表表達式”對話框中選擇“溢出時伸展”。在顯示報表時,若設計時設定的控件大小不能

20、包含其中的表達式的值,則控件自動向后伸展,直至完全能夠顯示整個值。為了將幾個字段合為一個表達式,對每個字段名前使用ALLTRIM()函數(shù),要注意,此函數(shù)只能用于字符型字段,若字段為非字符型字段,則還要使用轉換函數(shù),將非字符型值轉換為字符型的值。而每個表達式元素之間用“+”號連接。若要在報表中操作數(shù)據(jù)或顯示計算結果,則需要用到報表變量。使用報表變量可以計算與報表數(shù)據(jù)環(huán)境中提供的數(shù)據(jù)有關的各種值,并且可以用這些值來計算其它一些值。如果要使用報表變量,則必須在使用前先定義。 1、定義報表變量、定義報表變量若要定義報表變量可以使用下述方法:(1)若已經(jīng)建立了報表,則先將報表打開;若還沒有建立報表,則創(chuàng)

21、建一個新報表。(2)從系統(tǒng)菜單中選擇【報表】|【變量】,將彈出圖示的“報表變量”對話框。(3)輸入一個變量名(4)輸入一個變量名或一個其它的表達式,也可以單擊后面的按鈕,再在彈出的“表達式生成器”中用前面已經(jīng)介紹過的方法創(chuàng)建一個表達式。 (5)如果需要,還可以從“計算”列出的七種計算方式中任選一種作為該表達式的計算選項。系統(tǒng)默認值為“不計算”。 (6)如果需要,也可以定義一個初始值或初始值的表達式。(7)重復操作定義完成后單擊8.2.3 定義報表變量定義報表變量定義一個報表變量nCount,用存保存表中一個班級的人數(shù)第1步:在項目管理器中選擇“文檔”選項卡中的Student報表后單擊【打開】。

22、第2步:從系統(tǒng)菜單中選擇【報表】|【變量】,打開“報表變量”對話框。 第3步:輸入報表變量名nCount。nCount第4步:輸入一個變量名或一個其它的表達式 第5步:選擇總和作為變量的計算方式第6步:初始值取系統(tǒng)默認值0。第7步:單擊【確定】結束變量定義第8步:在報表的頁注腳區(qū)域添加一個域控件,該域控件的表達式選擇變量中已定義的變量nCount。 2、重新排序報表變量、重新排序報表變量 報表變量是根據(jù)它們出現(xiàn)的先后順序來計算的,并且影響引用這些報表變量的表達式的值。例如,如果定義一個變量時,用到了另外一個變量,那么被引用的報表變量應該在引用之前先出現(xiàn)(先被定義)。 若要更改報表變量的順序,可

23、以先從“報表”菜單中選擇“變量”,打開“報表變量”對話框。 在“報表變量”對話框中的“變量”列表框中拖動其左邊的“移動”按鈕,便可以重新調整所定義的報表變量的順序。 調整完成后按【確定】按鈕。 8.2.4 域控件的格式化域控件的格式化 在插入一個域控件后,可以改變控件的數(shù)據(jù)類型和顯示格式。數(shù)據(jù)類型可為:字符型、數(shù)值型或日期型。每個數(shù)據(jù)類型都有自己的格式選項,其中包括用戶建立自己格式模板的選項。當打印報表或標簽時,格式可以控制字段的顯示??梢栽凇皥蟊肀磉_式”對話框的“表達式”框中直接輸入格式函數(shù),也可以在“格式”對話框中進行選擇。下面列出一些可能遇到的典型情況:可能需要將所有的輸出字母轉化為大寫

24、,也可能需要用逗號或小數(shù)點分隔數(shù)值輸出,或用貨幣格式顯示數(shù)值輸出,將日期類型的輸出轉化為其他格式等等。1、報表控件的格式化選項、報表控件的格式化選項 在域控件中,可以對每種數(shù)據(jù)類型設置不同的格式選項。若要將一個域控件格式化,可以先雙擊“域控件”,然后在“報表表達式”對話框中,選擇“格式”對話框后的按鈕,為該字段選擇數(shù)據(jù)類型:“字符型”、“數(shù)值型”或“日期型”,“編輯選項”區(qū)域將會顯示該數(shù)據(jù)類型下的各種格式選項。如圖8-18所示。最后選擇對齊方式和所需的格式選項。域控件1、雙擊“域 控件”,如“學號”2、單擊“格式”按鈕字段為字符型則自動選定為“字符型”3、取消“左對齊”格式再選擇“居中對齊”4

25、、單擊【確定】1、報表控件的格式化選項、報表控件的格式化選項 在域控件中,可以對每種數(shù)據(jù)類型設置不同的格式選項。若要將一個域控件格式化,可以先雙擊“域控件”,然后在“報表表達式”對話框中,選擇“格式”對話框后的按鈕,為該字段選擇數(shù)據(jù)類型:“字符型”、“數(shù)值型”或“日期型”,“編輯選項”區(qū)域將會顯示該數(shù)據(jù)類型下的各種格式選項。如圖8-18所示。最后選擇對齊方式和所需的格式選項。1、雙擊“域 控件”,如“學號”表示居中對齊單擊【確定】 返回到報表后,在域控件看不到所定義的格式,格式只在顯示或打開時有效。2、在域中對齊文本在域控件中對齊文本不會改變控件在報表上的位置,只是在控件內對其內容進行格式調整

26、。有兩種方法可以調整控件中內容的位置。要直接在域控件中調整文本對齊,可以:選擇要操作的控件。在VFP系統(tǒng)菜單上選擇【格式】|【文本對齊方式】。從該子菜單中選擇合適的選項。 要在域中調整文本對齊,可以按上例的方法在“格式”選項中調整文本對齊方式。 3、定義域格式模板、定義域格式模板格式模板允許自己定義域中數(shù)據(jù)的格式。在“報表表達式”對話框的“格式”框或者“格式”對話框里輸入一系列普通字符或代碼,就可以建立各種打印格式。所輸入的普通字符將與域中的值一同出現(xiàn)在域中,而輸入的代碼則用來確定字段輸出的外觀。例如,如果為一個十位數(shù)的數(shù)值字段指定如(999) 999-9999所示的格式模板,那么,像括號、空

27、格和破折號這樣的字符將和數(shù)值型數(shù)據(jù)一起打印。4、改變字體、改變字體對于每個域控件或標簽控件,可以改變字體和文本的大小,還可改變整個報表的默認字體。要在一個報表中改變字體和字號,可以:選擇控件。從系統(tǒng)菜單中選擇【格式】|【字體】,這時出現(xiàn)“字體”對話框。選擇合適的字體和大小,然后單擊【確定】。若要改變默認的字體,可以:從系統(tǒng)菜單中選擇【報表】|【默認字體】。在“字體”對話框中,選擇需要作為默認值的合適字體和大小,然后單擊【確定】。只有在改變默認的字體后插入的控件才反映出新的字體設置。對于已存在的對象,須將它們全部選定,然后再使用【格式】菜單上的【字體】選項修改設置。8.3 集成查詢和報表集成查詢

28、和報表 8.3.1 集成查詢的報表集成查詢的報表 在創(chuàng)建好了應用程序的各個組件之后,就可以將它們集成起來。下圖顯示了將查詢和報表添加到應用程序的一些方法。VFP中的報表在一般情況下總是和其它應用程序一同使用的,對于利用VFP開發(fā)的應用系統(tǒng)而言更是如此。提供給用戶的是一些簡單、明了、易操作的表單界面,只是由用戶根據(jù)自己要達到的目的在表單上選擇不同的對象達到各種要求。這就要求應用程序設計人員將報表和標簽功能有機地集成到其它應用程序中。為了達到上述要求,可以將執(zhí)行查詢或報表的代碼添加到應用程序的表單按鈕、菜單上的一個選項或工具欄上的一個按鈕等對象中。若要添加查詢、視圖或程序,可將DO或USE等命令添

29、加到表單命令按鈕、工具欄按鈕或菜單項的相關代碼中。例如,如果想在一個表單中由用戶通過單擊表單上的按鈕來運行一個查詢、程序或打開一個視圖,則可以建立如圖所示的表單: 在Click事件代碼中添加DO Myqu-ery.qpr(Myquer-y.qpr用實際要運行的查詢文件替換) 。在Click事件代碼中添加DO MyProgram(MyProgram要用實際要運行的程序文件替換) Click事件代碼中添加USE MyView(Myview要用實際要打開的視圖文件替換) 若將報表加入到應用程序時,有以下幾種選擇:如果只是想讓用戶簡單地啟動報表并得到打印結果,可以把REPORT命令添加到表單控件、菜單

30、命令或工具欄按鈕中。如果報表中用到的某些變量允許用戶輸入,則可以像參數(shù)化查詢那樣從用戶那里獲得變量的值,或從表單中某些文本框獲得變量值等。如果想讓用戶創(chuàng)建自定義報表,可以向用戶提供使用報表設計器創(chuàng)建新報表或修改已有報表的能力。若要運行報表和標簽,則要使用REPORT或LABEL命令。1、REPORT命令命令 格式:格式:REPORT FORM / FOR WHILE HEADING PREVIEW WIINDOW TO PRINTER PROMPT/TO FILE ASCII SUMMARY 功能功能:根據(jù)報表定義文件顯示或打印報表。 參數(shù)描述:參數(shù)描述:指定報表定義文件的名稱。:顯示“打開”

31、對話框,從中可以選擇報表文件。HEADING :指定放在報表每頁上的附加標題文本。PREVIEW WIINDOW :以頁面預覽方式顯示報表,而不把報表送到打印機中打印。TO PRINTER PROMPT:把報表送到打印機打印。包含PROMPT子句在打印前顯示設置打印機的對話框。可調整的打印設置取決于當前安裝的打印機驅動程序。TO FILE ASCII:指定報表要送往的文本文件。包含ASCII子句可用報表定義文件創(chuàng)建一個ASCII文本文件。SUMMARY:不打印細節(jié)行,只打印總計和分類總計信息。例如,要將當前目錄中的Student報表送到打印機打印出來,可使用下面的命令:REPORT FORM

32、Student TO PRINTER PROMPT功能:功能:根據(jù)表文件和標簽文件打印標簽。參數(shù)描述:參數(shù)描述:FORM :指定要打印的標簽所對應的標簽定義文件名。若標簽定義文件不在當前目錄中,則必須指定目錄。FORM :顯示“打開”對話框,從中可以選擇一個已經(jīng)定義了的標簽定義文件。PREVIEW :在預覽窗口中顯示標簽而不打印。若包含可選項NOWAIT,則在運行時VFP將不等待關閉“頁面預覽”窗口,而是在該窗口打開的情況下繼續(xù)往下執(zhí)行。SAMPLE:顯示并打開一個樣本來檢驗標簽的對齊方式。TO PRINTER PROMPT:把標簽送到打印機打印。包含PROMPT子句在打印前顯示設置打印機的對

33、話框。2、LABEL命令命令 格式:格式:LABEL FORM /FORM FOR WHILE PREVIEW SAMPLE TO PRINTER PROMPT8.3.2 用查詢收集用戶輸入用查詢收集用戶輸入 以打印學生情況報表為例,說明用查詢收集用戶輸入的方法。在Student.dbf表中如果有很多的記錄,而在打印報表時又不想一次將所有記錄打印出來,而只想以班級為單位有選擇性的打印,則可以先建立表單如圖所示。 在Combo1組合框中,將RowSourceType屬性設置為3-SQL語句,將RowSo-urce屬性設置為:SELECT DISTINCT 班級 FROM STUDENT INTO

34、 CURSOR BJCX 通過SQL查詢語句,將Student表中所有的班級在Combo1組合框中列出來供用戶操作時進行選擇。其中BJCX為保存查詢結果的臨時表文件名,若省略INTO CURSOR BJCX子句,則在執(zhí)行表單時,SELECT命令執(zhí)行的結果將會在瀏覽窗口中顯示。 在【打印】按鈕的Click事件中添加如下代碼:SELECT * FROM STUDENT WHERE STUDENT.班級=THISFORM.;COMBO1.VALUE INTO CURSOR CURSOR_BJ &用查詢收集用戶的輸入*以下程序是由用戶選擇是預覽報表還是要打印報表*MM=MESSAGEBOX(想要預覽“

35、STUDENT”報表嗎?,35,打印Student報表)IF MM=6 REPORT FORM D:XSGLXTREPORTSSTUDENT PREVIEWELSE IF MM=2RETURN ENDIFENDIFMM=MESSAGEBOX(想要打印“STUDENT”報表嗎?,33,打印Student報表)IF MM=1REPORT FORM D:XSGLXTREPORTSSTUDENT TO PRINTER PROMPT*上一行命令中加下劃線的部分是指定要運行的報表文件名,若不在當前*目錄下,則要加上路徑。ELSE RETURNENDIF要注意:建立的Student報表要將其中數(shù)據(jù)環(huán)境中的表

36、移去,即在報表的數(shù)據(jù)環(huán)境中不含有任何表。對于本例,也可以不用SQL查詢語句而直接使用REPORT命令,即將SELECE命令刪除,在REPORT語句中增加下列可選項:FOR 班級=THISFORM.COMBO1.VALUE其中:THISFORM.COMBO1.VALUE是對用戶選擇的引用。即通過REPORT命令的條件子句,對表中的記錄進行篩選,從而達到按用戶選擇的班級輸出報表的目的。8.4 報表和標簽的輸出報表和標簽的輸出 8.4.1 為控件設置打印選項為控件設置打印選項 總的來說,控件的位置和它所處的帶區(qū)的位置決定了它打印時的位置和時間。除此之外,還可以為每個控件設置特定的打印選項。每個控件都

37、有一個默認的尺寸,該尺寸或是由它的值(對于字段或標簽來說)決定,或是在創(chuàng)建該控件的時候確定(對于線條、矩形或者圖形來說)??丶陧撁嫔系拈L度指定了該控件的顯示寬度。由于有些控件的值根據(jù)記錄的不同而不同,可將控件的高度設置為可向下伸展,以顯示整個的值,否則,有些數(shù)據(jù)將在顯示的時候被截斷。除了標簽控件之外,所有的控件的大小均可變。1、打印變長度值的控件、打印變長度值的控件為了使控件盡可能少的占用報表的地方,可將其設置為可伸展的。例如,一個表達式的值可能依記錄的不同而不同,這時,最好不要在報表上為這個控件分配一個固定的可容最長記錄值的空間,而應將控件設置為可伸展,即可容納所有的數(shù)值。對于該控件下方的

38、控件,可將其設置為可向下浮動的。注意:注意:在如下情況下,某些數(shù)據(jù)在打印時會被覆蓋:(1)將一個域設置為相對于帶區(qū)底端固定,同時在這個域的下面還有一個域,設置為相對于帶區(qū)頂端固定并且選擇了溢出時伸展選項;設置為相對帶區(qū)底端固定高度就被固定了帶區(qū)向下浮動時沒有空間(2)將一個域設置為相對于帶區(qū)頂端固定,同時在這個域的上面還有一個域,設置為相對于帶區(qū)頂端固定并且選擇了溢出時伸展選項。 設置為相對帶區(qū)底端固定帶區(qū)高度被固定沒有溢出時伸展的空間2、不輸出重復值、不輸出重復值對于域控件,可以不輸出連續(xù)記錄的重復值。也就是說,如果某域中的同一個值在連續(xù)的記錄中重復出現(xiàn),則只須在第一次出現(xiàn)時打印該值,在后面

39、的記錄中不打印該值,直至數(shù)值發(fā)生改變。若要不輸出重復值,可以先雙擊該控件,在顯示控件的對話框中選擇“打印條件”以顯示“打印條件”對話框,在該對話框中的“打印重復值”區(qū)域,選擇“否”,然后選擇【確定】。1、雙擊域 控件如“系部代號”2、單擊【打印條件】6、在“文本”對話框中單擊【確定】7、預覽顯示報表數(shù)據(jù)3、選擇“否”5、單擊【確定】4、選擇“在新頁/列的第一個完整信息帶內打開”和“當細節(jié)區(qū)數(shù)據(jù)溢出到新頁/列時打印”系部代號與上一條記錄相同不打印選擇“在新頁列的第一個完整信息帶內打印”指定換頁(或列)后,遇到第一個新記錄時,打印重復值。選擇“當細節(jié)區(qū)數(shù)據(jù)溢出到新頁列時打印”指定當細節(jié)帶區(qū)內容溢出

40、到新頁(或列)中時,輸出重復值。3、建立打印表達式、建立打印表達式可以為控件設置表達式,該表達式在打印之前被計算出來。如果表達式的值為“假”,則不打印該字段。添加表達式之后,在“打印條件”對話框中除了“若是空白行則刪除”選項外,其他選項全部無效。若要添加一個打印表達式,可以先雙擊該控件,再選擇“打印條件”,然后在“僅當下列表達式為真時打印”框中,輸入一個表達式?;蛘邌螕魧υ挵粹o,使用“表達式生成器”建立一個表達式,最后選擇【確定】。4、不打印空行、不打印空行對于報表中的某些域控件,記錄中往往會沒有數(shù)值。默認情況下,VFP將為那些空的域保留區(qū)域。可以將這些空白的區(qū)域清除,使所顯示的信息更為理想、

41、更為連續(xù)。若要不打印空行,可以先雙擊在報表中可能會引起空行的控件,再選擇“打印條件”,然后選擇“若是空白行則刪除”,最后選擇【確定】。如果一行中所有域的值經(jīng)計算后都為空,則VFP從報表中刪除此行。如果不打印該域,或者域中的值為空,VFP將會檢查該行的其他控件:找不到的話,此行被刪除。如果沒有選擇該選項,而且該行中沒有其他的控件,那么會打印一個空行。 8.4.2 為組設置打印選項為組設置打印選項 在報表中,可以對組的打印方式進行控制。有時可能希望同一個組中的內容不要跨頁顯示;有時可能希望控制是否打印組標頭。1、設置組的分頁及組標頭選項、設置組的分頁及組標頭選項 (1)在系統(tǒng)菜單中選擇【報表】|【

42、數(shù)據(jù)分組】 在“數(shù)據(jù)分組”對話框中,除了可選擇(或輸入)用于分組的域或表達式外,還可以對組的分頁選項進行設置 。如:Left(學號,2)對組(及其標頭)的顯示可能有特別的要求。比如,可能希望一個組不要橫跨兩列(對于多列的報表);不要縱跨兩頁;或者每一組的頁碼都從1開始重編。該對話框提供了四個選項來完成這些任務。2、防止出現(xiàn)孤立的組標頭、防止出現(xiàn)孤立的組標頭設置合適的值,可以防止出現(xiàn)孤立的防止出現(xiàn)孤立的組標頭組標頭如果標頭和底部的相對位置比所規(guī)定的尺寸(用英寸或厘米表示)要小,VFP會將標頭移到新的一頁中打印。注意:為了給孤立控件確定一個比較理想的值,可以將組標頭帶區(qū)的高度擴大到細節(jié)帶區(qū)高度的一至三倍。在組縱跨兩頁時,可能需要在新的一頁中重復打印組標頭,將其顯示在連續(xù)信息的頂部。如果報表中存在嵌套的多個數(shù)據(jù)組,那么在連續(xù)頁中,標頭應是嵌套結構中最內層的組的標頭

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論