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 访问-未调用VBA子系统_Ms Access_Vba - Fatal编程技术网

Ms access 访问-未调用VBA子系统

Ms access 访问-未调用VBA子系统,ms-access,vba,Ms Access,Vba,我需要为用户提供一种方法,让他们从表中选择要显示的列。用户有一个列名称组合框,可以选择其中一个,然后点击按钮打开报表。我编写了一些代码,根据用户的输入创建一个SQL查询,但是没有调用它。我尝试插入MsgBox语句、断言等,但从未调用过它。如果我改用宏,它将运行,但不是这个子 Private Sub Report_Open(Cancel As Integer) Dim field As String Dim sqlQuery As String Dim ctl As Con

我需要为用户提供一种方法,让他们从表中选择要显示的列。用户有一个列名称组合框,可以选择其中一个,然后点击按钮打开报表。我编写了一些代码,根据用户的输入创建一个SQL查询,但是没有调用它。我尝试插入
MsgBox
语句、断言等,但从未调用过它。如果我改用宏,它将运行,但不是这个子

Private Sub Report_Open(Cancel As Integer)
    Dim field As String
    Dim sqlQuery As String
    Dim ctl As Control
    ctl = "Forms![RuleGroupForm]![selectRuleFieldCombo]"

    field = "rules.[" & ctl & "]"

    ' E.g. if the field was "Source File", the final query should look like this:
    'SELECT overview.ID, relationship.rulesID, rules.[Source File], overview.[Rule Group], rules.RulegroupID
    'FROM (overview INNER JOIN relationship ON overview.id=relationship.id)
    'INNER JOIN rules ON relationship.rulesID=rules.ID
    'WHERE rules.[Source File] IS NOT NULL;

    sqlQuery = "SELECT overview.ID, relationship.rulesID, " & field
    sqlQuery = sqlQuery & ", overview.[Rule Group], rules.RulegroupID"
    sqlQuery = sqlQuery & "FROM (overview INNER JOIN relationship ON overview.id=relationship.id) "
    sqlQuery = sqlQuery & "INNER JOIN rules ON relationship.rulesID=rules.ID"
    sqlQuery = sqlQuery & "WHERE " & field & " IS NOT NULL;"
    Me.RecordSource = sqlQuery
    Requery

    debugText = "New SQL Query = " & sqlQuery
End Sub
谢谢


编辑:已解决,不确定如何回答自己的问题…

当您在Access中遇到这种奇怪行为时,除了关闭和打开之外,还有一些事情需要检查。一个是查看表单或报表属性页上的事件,在本例中,
Open
,是否仍包含
[事件过程]
-有时候表单或报表可能包含代码,但未标记事件。在开发时,即添加表单、报表和代码时,最好定期运行压缩和修复,这也意味着定期备份—一个简单的副本可以省去很多麻烦。最后,当开发相当规则的反编译时,这是一个好主意。我保留了一个小脚本,我可以将Access文件放在上面运行反编译。

奇怪的是,通过关闭Access(2007)并重新打开它,解决了这个问题……您可以使用下面的“您的答案”框回答您自己的问题,或者-如果您认为答案在SO网站上没有什么价值,您可以选择删除您自己的问题。实际上,如果没有足够的声誉,你可能无法做很多事情,因此你最好的选择可能是回答你自己的问题,或者在这里的评论中要求采取其他行动。对于几乎所有与计算机相关的问题,在寻求帮助之前,通常应该先尝试关闭和重新打开…@Mitch:很高兴问题得到解决,但对于大多数涉及数据的操作,我会在加载时使用,而不是在打开时使用,因为在打开时,您不应该有可用的数据(至少是以表单的形式)。在这方面,我认为代码中的重新查询可以删除!谢谢你,雷蒙。你介意分享你的脚本吗?@Mitch它需要更新,但这里是总体思路: