访问VBA模块不能从表格中获取数据

问题描述 投票:0回答:1

好了,我的数据库的最初目的是在Access 2003中在一台机器我使用的是Access 2007年运行的机器没有任何味道办公室。我试图找到使用最新版本的Office 365中访问的我不能直接访问无论是现场版的或者Access 2003或Access 2007运行时运行的解决方案。我不能改变在其他机器的版本,因为这些设在一所监狱,没有互联网。这个工作没有在2003上运行的问题,只有2007年是问题。由于我不在,只有365,我需要一个解决方案,适用于所有版本的工作。

正在使用的功能是在单独的模块,并且不实际的形式。的形式被设定为所需要访问的对象为具有模块。该功能是增加一个会话所员参加了图书馆。这必须经过验证,以确保有房的时间和选择的星期几,以及单个会话限制。

我处理的问题是,2007和365项的版本不能从列表框中获取所选择的数据(时间字符串)和选项组(DAYOFWEEK为数字)来完成一个SQL查询,而不是它不插入任何内容和SQL失败自称有在我的代码额外的)。然后,使用SQL创建DAO记录。这是数据的核查,以确保限额的部分没有达到。

我有三重检查发送到CO_GetSessionDetail,以确保我没有额外的)的字符串。它认为它确实是没有什么对我=的右侧的字符串中。我检查了参考的形式和未结合的领域,他们都匹配。它编译没有问题。

没有问题... 2003

代码如下公布。

Function CO_NewCallout() As Boolean
...
    ' Get Session ID --------------------------------- '
    With Form_f_COs_IM
        iSession = CO_GetSessionDetail( _
            "SessionID", _
            "(((t_CO_Sess.DayOfWeek) = " & .CO_Add_DayOfWeek & ") AND " & _
            "((t_CO_Sess.tSession) = '" & .CO_Add_tSession & "'))" _
            )
        If iSession = 0 Then
            GoTo CO_NewCallout_Exit
        End If
    End With
...
End Function

Function CO_GetSessionDetail(stfield As String, stwhere As String) As Variant
'On Error Resume Next

' Variable Declerations -------------------------- '
    Dim db As Database
    Dim rst As DAO.Recordset
    Dim stSQL As String

' Set Variables ---------------------------------- '
    Set db = CurrentDb
    If stwhere <> "" Then
        stwhere = "WHERE " & stwhere
    End If
    stSQL = _
        "SELECT * " & _
        "FROM t_CO_Sess " & stwhere
    Set rst = db.OpenRecordset(stSQL, dbOpenDynaset)

' Get Session ID --------------------------------- '
    With rst
        If Not .EOF Then
            CO_GetSessionDetail = .Fields(stfield)
        Else
            CO_GetSessionDetail = 0
        End If
    End With

' Close Recordset t_CO_Sess ---------------------- '
    rst.Close
    Set rst = Nothing

End Function

Access 2003中 - 我得到了会议的唯一ID

Access 2007年和365 - 无法完成的功能

让我知道,如果有更多的代码,将有助于。

access-vba ms-access-2007 ms-access-2003 ms-access-2016
1个回答
0
投票

使用Office 365编译Access应用程序将无法与Access 2007中运行时或Access 2003中,您必须在之前的版本或等于你选择运行时编译兼容。不幸的是,它是很难得到Access 2003运行,因为它不是可以免费下载。 2007年的运行时间是免费的(这可能解释了为什么您选择安装更新版本)。

您的代码看起来不错,我认为它编译和所有。尽管你的2003数据库应与Access 2007中运行时的工作,它不这样的事实对我说,你有你需要的解决不兼容。

你最好的选择:您的应用程序升级到2007或更高版本,确保它工作在新的版本,然后安装在客户端的机器匹配运行。

参考文献:

Access版本兼容性的一般性讨论:Access 2016/2010 Compatibility, Access 2016

文章越来越Access 2003运行:MS Access Runtime 2003

© www.soinside.com 2019 - 2024. All rights reserved.