Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 艾丽,所以我必须道歉。我希望发生的是,在报表的打开事件中,仅当数据输入表单未打开时,才发出报表记录源查询的参数提示。如果数据输入表单是打开的,只需从表单本身获取供应商ID即可。我仍然被卡住了,因为无论我做什么,参数提示仍然显示,或者它完全爆炸。我已经尝试了_Ms Access_Parameters_Report - Fatal编程技术网

Ms access 艾丽,所以我必须道歉。我希望发生的是,在报表的打开事件中,仅当数据输入表单未打开时,才发出报表记录源查询的参数提示。如果数据输入表单是打开的,只需从表单本身获取供应商ID即可。我仍然被卡住了,因为无论我做什么,参数提示仍然显示,或者它完全爆炸。我已经尝试了

Ms access 艾丽,所以我必须道歉。我希望发生的是,在报表的打开事件中,仅当数据输入表单未打开时,才发出报表记录源查询的参数提示。如果数据输入表单是打开的,只需从表单本身获取供应商ID即可。我仍然被卡住了,因为无论我做什么,参数提示仍然显示,或者它完全爆炸。我已经尝试了,ms-access,parameters,report,Ms Access,Parameters,Report,艾丽,所以我必须道歉。我希望发生的是,在报表的打开事件中,仅当数据输入表单未打开时,才发出报表记录源查询的参数提示。如果数据输入表单是打开的,只需从表单本身获取供应商ID即可。我仍然被卡住了,因为无论我做什么,参数提示仍然显示,或者它完全爆炸。我已经尝试了您建议的代码行,但仍然会提示我输入供应商ID。但是,我不熟悉OpenArgs。我建议您完全从报表的recordsource中删除参数,而是收集所需的值,并在DoCmd.OpenReport的where条件下提供它们。这非常简单,并且从报告中删除


艾丽,所以我必须道歉。我希望发生的是,在报表的打开事件中,仅当数据输入表单未打开时,才发出报表记录源查询的参数提示。如果数据输入表单是打开的,只需从表单本身获取供应商ID即可。我仍然被卡住了,因为无论我做什么,参数提示仍然显示,或者它完全爆炸。我已经尝试了您建议的代码行,但仍然会提示我输入供应商ID。但是,我不熟悉OpenArgs。我建议您完全从报表的recordsource中删除参数,而是收集所需的值,并在DoCmd.OpenReport的where条件下提供它们。这非常简单,并且从报告中删除了对外部对象的任何依赖。它允许您打开报告以显示所有记录,或在运行时将其筛选为您喜欢的任何记录集。艾伯特在他的回答中解释得很好。谢谢大卫。我和我的导师(我是一名从事暑期合作职位的大学生)一起提出了这个问题,尽管消除目前存在的依赖关系是有意义的,但解决方案是创建两个查询,并根据数据输入表单是否打开,相应地应用报告的记录源。它很难看,但这个应用程序也很难看。目前还没有任何命名标准,如果一开始就命名的话。处理一大堆文本39和命令按钮291让事情变得足够困难。但最后,我还是按照别人说的做了……我也是这里的新成员,所以我现在还没有能力投票支持你,所以我现在只能表达我的感激之情。再次感谢!我不是在挖信誉点,只是想帮你,所以你的感谢已经足够了。我想你的建议是永远不要硬连接到OnOpen中的标准表被夸大了。我总是这样做。在少数情况下,我还想提供一些方法来绕过条件表单,我在A2003和更高版本中使用OpenArgs,并在OnOpen中提供where条件并检查报告的.Filter属性以跳过表单的打开。谢谢。你的建议很好,但最后,我被告知按照我在给大卫的评论中提到的解决方案行事。无论如何,在为这张票工作了一段时间后,它达到了一个时间点,使它工作,因为它应该是太多的票。再说一次,这个应用程序应该被废弃和重做,因为它是一个可怕的混乱。。。无论如何,再次感谢你的建议。正如我在回复David时提到的,我是新来的,所以我现在也不能投票支持你。老实说,我不太喜欢“重构你的整个应用程序,让它按照我认为应该的方式完成”的答案。这可能是对最佳实践的一个很好的评论,但它根本不能回答问题。
Dim intSupplierCode As Integer

'Check to see if the data entry form is open
If CurrentProject.AllForms("frmExample").IsLoaded = True Then

    'Retrieve the SupplierID from the data entry form
    intSupplierCode = Forms![frmExample]![SupplierID]

    'Call the parameter query passing the SupplierID????
    DoCmd.OpenQuery "qryParams"


Else

    'Execute the parameter query as normal

    DoCmd.OpenQuery "qryParams"?????


End If
DoCmd.OpenReport "MyReport", , , "[SupplierID]=" & Me!SupplierID
Docmd.OpenReport "rptSuppliers",acViewPreview, , _
                "SupplierCode = " & me.SupplierCode
If CurrentProject.AllForms("form1").IsLoaded = False Then
   Me.Filter = "SupplierID = " & InputBox("Enter Supplier ID")
   Me.FilterOn = True
End