2010-06-28 129 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