我有一个只有我自己使用的小型 Access DB。我编写了一些自定义代码来完成我需要它做的事情。
我不是编码专家,所以我确信我编写的代码不是那些知道自己在做什么的人会做的。但它对我有用,除了在特定的笔记本电脑上。
如果我将这个 .accdb 文件放在拇指驱动器上并直接从拇指驱动器打开,在一台笔记本电脑上,它可以正常工作。在另一件事上,我得到:
运行时错误“3464”:条件表达式中的数据类型不匹配
代码如下,我不明白为什么它可以在一台机器上运行,但不能在另一台机器上运行。虽然关于如何更好地编写代码的建议很有帮助,但现在我只对克服错误感兴趣。
该代码旨在查询 ID 号,然后转到表单上的该记录。
同样,它在一台计算机上运行没有问题。在另一个我收到错误。我正在使用同一个拇指驱动器上的相同文件。我已经排除了拇指驱动器的原因,因为从每台笔记本电脑的硬盘驱动器上打开文件时也会发生同样的情况。两台笔记本电脑上的 MS Access 版本相同:Microsoft® Access® for Microsoft 365 MSO(版本 2410 内部版本 16.0.18129.20100)64 位
代码:
Private Sub Form_Open(Cancel As Integer)
Dim WID As Integer
Dim rst As DAO.Recordset
Dim strSQL As String
Dim curday As Date
strSQL = "SELECT tblWeeks.ID FROM tblWeeks WHERE (((DateValue(Now())) Between [Weekstartdate] And [weekenddate]));"
Set rst = CurrentDb.OpenRecordset(strSQL)
WeekIDSQL = rst!ID
cmbWeekSelector = WeekIDSQL
DoCmd.SearchForRecord acDataForm, "frmTimesheet", acFirst, "[ID] = " & WeekIDSQL
End Sub
我将文件放在拇指驱动器上,并直接从两台笔记本电脑上的拇指驱动器运行它,但仍然出现错误。从各自的硬盘打开文件时也会发生同样的情况。
我不明白为什么我在一台笔记本电脑上出现错误,而在另一台笔记本电脑上却没有出现错误
这可能是由标记为“缺失”的参考引起的。在 VBE 中检查这一点。这可能会导致
Now()
失败。
作为补充测试,这应该在两台机器上运行:
strSQL = "SELECT tblWeeks.ID FROM tblWeeks WHERE #2024-11-10# Between [Weekstartdate] And [Weekenddate];"