好,所以我的数据库最初是在Access 2003中设计的。在一台计算机上,我正在使用Access 2007 Runtime,因为该计算机没有任何风味的Office。我正在尝试使用Office 365中最新版本的Access查找解决方案。我无法直接访问在Access 2003或Access 2007 Runtime上运行的实时版本。我无法更改其他计算机上的版本,因为它们位于监狱中并且没有互联网。这在2003年运行没有问题,只有2007年才有问题。因为我不在那里,只有365,所以我需要一个适用于所有版本的解决方案。
正在使用的功能在单独的模块中,而不是实际的形式。表单设置为具有访问对象所需的模块。该功能是为囚犯添加一个参加图书馆的会议。必须对此进行验证,以确保在选定的时间和星期几有空间,以及各个会话的限制。
我要处理的问题是2007和365版本无法从列表框(时间以字符串形式)和选项组(DayofWeek以数字形式)中获取所选数据以完成SQL查询,而是不插入任何内容, SQL无法声明我的代码中有多余的)。然后使用SQL创建DAO记录集。这是数据验证的一部分,以确保未达到限制。
我已对发送给CO_GetSessionDetail的字符串进行了三重检查,以确保没有多余的)。它认为这样做是因为字符串中my =的右边没有任何内容。我检查了对表单和未绑定字段的引用,它们都匹配。它没有问题。
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-无法完成功能
让我知道更多代码是否有帮助。
答案 0 :(得分:0)
使用Office 365编译的Access应用程序将与Access 2007运行时或Access 2003不兼容。您必须在早于或等于您选择的运行时的版本上进行编译。不幸的是,很难获得Access 2003运行时,因为它不能免费下载。免费提供了2007运行时(这可能解释了为什么选择安装更高版本的原因)。
您的代码看起来不错,我认为它可以编译。尽管您的2003数据库应该可以与Access 2007运行时一起使用,但是它不却对我说您需要解决不兼容的问题。< / p>
您最好的选择:将您的应用升级到2007或更高版本,确保它可以在新版本中运行,然后在您的客户端计算机上安装匹配的运行时。
参考文献:
Access版本兼容性的一般讨论: Access 2016/2010 Compatibility, Access 2016
有关获取Access 2003运行时的文章: MS Access Runtime 2003