關鍵詞:動態報表切換
7.4 動態報表切換面板的製作
繼續上一節的操作,切換到報表窗格,參照7.1節靜態報表的製作,再利用嚮導建立一個新報表,執行到圖7-4時,字段選“ygxm”和“bxje”,除了所選的兩個字段與之前不一樣外,其他的全部一樣,完成之後,修改報表的頁眉,並將報表名稱命名爲: rptBxmxYg ,完成之後,如下圖所示 :
圖7-28按員工統計報表
關閉報表,這樣就有了兩個報表,分別爲rptBxmx(即按報銷類別統計)和rptBxmxYg(按員工姓名統計),如下圖7-29所示:
圖7-29兩個報表
下面,我們就來設計一個切換窗體,該窗體的作用是在預覽報表之前,操作者可以選擇“按報銷類別統計”或是“按員工統計”,以打開相應的報表。
新建一個窗體,如下圖7-30所示:
圖7-30設計切換窗體(1)
選中圖7-30中的“設計視圖”,單擊【確定】按鈕,出現畫面如下圖7-31所示:
圖7-31設計切換窗體(2)
單擊圖7-31中工具欄上的“保存”圖標(左上角紅框處)或是在菜單欄上選擇文件(F)à保存(S)來保存這個新窗體,將其名稱定義爲 frmRptSelect,保存後,如下圖7-32所示:
圖7-32設計切換窗體(3)
雙擊圖7-32處左上角紅框處的小黑方塊,進入窗體屬性(若未顯示窗體屬性則再次雙擊一次),進行該窗體以下屬性設置:
格式選項卡:
標題:無默認值,輸入以下字符:請選擇您所要瀏覽的報表;
滾動條:默認值爲兩者都有,修改爲:兩者均無;
記錄選擇器:默認爲是,修改爲:否;
導航按鈕:默認爲是,修改爲:否;
分隔線:默認爲是,修改爲:否;
自動調整:默認爲是,修改爲:否;
自動居中:默認是否,修改爲:是;
邊框樣式:默認爲可調邊框,修改爲:對話框邊框;
控制框:默認爲是,修改爲:否;
最大化最小化按鈕:默認爲兩者都有,修改爲:無。
如下圖7-33所示:
圖7-33設計切換窗體(4)
其他選項卡:
彈出方式:默認爲否,修改爲:是。
保存窗體的設計,關閉屬性窗口,然後單擊工具箱上的選項組按鈕,如下圖7-34所示:
圖7-34設計切換窗體(5)
圖7-35設計切換窗體(6)
圖7-36設計切換窗體(7)
由於單選按鈕默認帶了一個標籤控件,我們就先修改其攜帶的兩個標籤,將第一個名爲 Option2標籤修改爲:按報銷類別統計報表瀏覽,將第二個名爲 Option4標籤修改爲:按員工姓名統計報表瀏覽,並調整各個控件在窗體上的佈局,如下圖7-37所示:
圖7-37設計切換窗體(8)
單擊圖7-37工具箱紅框處的命令按鈕,在選項組控件下面放置兩個命令按鈕,將第一個命令按鈕命名爲確定,將第二個命令按鈕命名爲取消,如下圖7-38所示:
圖7-38設計切換窗體(9)
基本佈局已經基本完成,現在進行屬性修改:
第一:打開選項組的屬性,選擇“其他”選項卡,如下圖7-39所示:
圖7-39設計切換窗體(10)
將圖7-39中“其他”選項卡中的“名稱”項中默認的 Frame0名稱修改爲 sRpt ,如下圖7-40所示:
圖7-40設計切換窗體(11)
在“數據”選項卡中的“默認值”項中輸入:1(即默認爲按報銷類別統計),如下圖7-41所示:
圖7-41設計切換窗體(12)
圖7-42設計切換窗體(13)
同理,將“按員工姓名統計報表瀏覽”單選按鈕的該選項值修改爲2;
第三:打開命令按鈕【取消】的屬性,選擇“其他”選項卡,將名稱屬性修改爲: cmdClose,如下圖7-43所示:
7-43 設計切換窗體(14)
之後切換到“事件”選項卡,在“單擊”項選擇:[事件過程],如下圖
7-44所示:
圖7-44設計切換窗體(15)
單擊“單擊”事件右邊的“…”按鈕,進入單擊事件的代碼編輯頁面,如下圖7-45所示:
圖7-45設計切換窗體(16)
在代碼光標處輸入以下代碼: DoCmd.Close,如下圖7-46所示:
圖7-46設計切換窗體(17)
輸入之後保存,並關閉代碼輸入頁面,關閉【取消】的控件屬性窗口。
打開【確定】按鈕的屬性,將“其它”選項卡的名稱修改爲cmdOK ,如下圖所示:
圖7-47 設計切換窗體(18)
之後切換到“事件”選項卡,在“單擊”項選擇:[事件過程],單擊“單擊”事件右邊的“…”按鈕,進入單擊事件的代碼編輯頁面,如下圖7-48所示:
圖7-48 設計切換窗體(19)
在cmdOK單擊事件中輸入以下代碼:
Select Case Me.sRpt
Case 1
'預覽報表 - 按報銷類別
DoCmd.OpenReport "rptBxmx", acViewPreview, , g_strWhere
Case 2
'預覽報表 - 按員工姓名
DoCmd.OpenReport "rptBxmxYg", acViewPreview, , g_strWhere
End Select
DoCmd.Close acForm, "frmRptSelect"
代碼輸入後如下圖7-49所示:
圖7-49 設計切換窗體(20)
保存輸入,之後關閉代碼輸入界面,並關閉屬性對話框,之後按之前所學的方法,調整窗體運行時的實際顯示大小,如下圖7-50所示:
圖7-50 設計切換窗體(21)
注意:圖7-50看似調整好了,運行時未必一定如此大小,所以需要在調整好外觀尺寸後,移動一下某個控件,再保存一下窗體,就會調整成功。
從圖7-49可以看出,在代碼的最右邊有一個g_strWhere變量條件,這個變量條件是用來根據操作員查詢條件顯示相應的統計結果,那麼該變量條件值從哪裏來呢?請接着往下進行學習。
首先雙擊模塊Module1,在該模塊聲明一個全局變量g_strWhere,代碼如下:
Public g_strWhere As String
聲明後代碼區如下圖7-51所示:
圖7-51 設計切換窗體(22)
再進入frmBxmx的窗體模塊,修改btnPrintPreview事件和btnPrint事件的VBA代碼如下:
Public Sub btnPrintPreview_Click()
On Error GoTo ErrorHandler
' If ObjectExists(acReport, "rptBxmx") = True Then
' DoCmd.OpenReport "rptBxmx", acViewPreview, , mclsQuery.WhereSQL
' End If
g_strWhere = mclsQuery.WhereSQL
DoCmd.OpenForm "frmRptSelect"
ExitHere:
Exit Sub
ErrorHandler:
Select Case Err.Number
Case errOpenActionWasCanceled, errOperationCanceledByUser
Case Else
MsgBoxEx Err.Description, vbCritical
End Select
Resume ExitHere
End Sub
Public Sub btnPrint_Click()
On Error GoTo ErrorHandler
' DoCmd.OpenReport "rptBxmx", , mclsQuery.WhereSQL
g_strWhere = mclsQuery.WhereSQL
DoCmd.OpenForm "frmRptSelect"
ExitHere:
Exit Sub
ErrorHandler:
Select Case Err.Number
Case errOpenActionWasCanceled, errOperationCanceledByUser
Case Else
MsgBoxEx Err.Description, vbCritical
End Select
Resume ExitHere
End Sub
代碼修改後如下圖7-52所示:
圖7-52
設計切換窗體(23)
執行保存,然後關閉VBA代碼界面和所有窗體。
運行SysFrmLogin窗體登錄系統,雙擊導航菜單中的“報銷明細”,如下圖7-53所示:
圖7-53 設計切換窗體(24)
單擊圖7-53中的“打印預覽”按鈕,就可以看到不同報表的切換效果了,這裏不作詳述。