2010-06-28 67 views
1

任何人都可以幫助我創建一個代碼限制,這將允許我使用下面的sQ語句創建報告嗎?我遇到的問題是我的表單允許您輸入成本中心,但是當我點擊命令按鈕執行代碼時,它會要求我在再次向成本中心顯示報告之前輸入成本中心。我想要消除必須再次進入成本中心,並在它進入表單時從它取出。在MS Access中創建報告的VBA代碼

私人小組CmdCC_Click()

Set mydb = CurrentDb 

myCC = txtCC.Value 

If IsNull(myCC) Or myCC = "" Then 
    MsgBox "Please enter a Cost Center!", vbCritical + vbOKOnly, pTitle 

End If 

sQ = "SELECT ZBASED.ACCT_UNIT, CenterName, ZBASED.ACCOUNT, ZBASED.ACCOUNT_DESC " & _ 
    "FROM ZBASED, CCtable " & _ 
    "WHERE (ZBASED.ACCT_UNIT = " & myCC & ") And (CenterNo = " & myCC & ") " & _ 
    "ORDER BY ZBASED.ACCOUNT;" 
+0

請求您再次輸入成本中心時的提示是什麼?這可能是由錯誤的字段名造成的,例如,如果您的數據表實際上沒有包含名爲「CenterNo」的字段,那麼Access將假定它是查詢的參數並要求您提供。 – 2010-06-28 10:37:24

回答

0

所有你需要做的就是引用您呼叫從SQL報告的形式,例如

SELECT富FROM酒吧其中foo = [表格] [frmReporting]![txtFoo]

然後,您可以在frmFoo上打開報告的按鈕,您可以在docmd.OpenReport調用之前包含一些邏輯以驗證輸入,即確保它們已輸入成本中心

1

如果報告已基於發言權,

SELECT ZBASED.ACCT_UNIT, CenterName, 
ZBASED.ACCOUNT, ZBASED.ACCOUNT_DESC 
FROM ZBASED, CCtable 

(沒有使用ORDER BY與報表沒有意義的,你必須使用報告自己的奧德&分組屬性)

您可以使用OpenReport的Where參數:

DoCmd.OpenReport "ReportName", acViewPreview, , "ZBASED.ACCT_UNIT = " & myCC _ 
     & " And CenterNo = " & myCC 
+0

我會說,使用OpenReport命令的WHERE參數是迄今爲止所有這一切的上級解決方案。 – 2010-06-28 21:38:09