我使用left()
,right()
和mid()
函数在Access 2010上创建了一个包含查询的数据库。然后我在家里将数据库复制到我的电脑上,但现在这些功能不想在这个数据库上工作。我的家里的电脑也有Access 2010.每次我尝试运行查询时都会收到以下消息,编译此函数时出错。 Visual Basic包含语法错误。检查代码然后再次编译。
我在家里的电脑上创建了一个新的数据库来测试功能,没有任何问题。我还注意到在我家里的电脑上标题是 Database1:数据库(Access 2007) - Microsoft Access ,而在工作时它说 数据库1:数据库(Access 2007 - 2010) - Microsoft Access 。两台PC都有Windows 7专业版,我的家用电脑大约1年,我的电脑上班约3个月。我还在家里更新/修复了我的Access,但是DB仍然不想工作。我该如何解决这个问题?
我有一个简单的表格,Table1
名为id
列,列为Name
,
id Name
1 Jason
2 Casey
3 Shasha
现在,如果我想在Access查询中使用left()函数,我会收到错误消息:编译此函数时出错。 Visual Basic包含语法错误。检查代码然后再次编译。
查询:
Select Left([Name],2) As Short_name From Table1
答案 0 :(得分:3)
您希望在VBA编辑器中使用tools->引用,并查找缺少的引用。
您可能会引用目标计算机上不存在的某些软件(例如单词)。
这里概述了查看这些破损参考文献的“步骤”的步骤:
http://www.accessmvp.com/djsteele/AccessReferenceErrors.html
在将应用程序移动到另一台计算机时,损坏的引用可能是Access中最常见的问题之一。建议您使用后期绑定并删除所有不必要的引用,以“减少”此问题的发生。
答案 1 :(得分:0)
64位办公室和32位访问时出现此问题...(why? is another question
)
通过转到VBA编辑器并点击"编译"来修复它。一遍又一遍,这把我带到了令人讨厌的32位函数,这些函数需要将ptrsafe添加到函数声明中。 (是的,我毫不犹豫地加入了它。)然后Access很高兴。
即,
Private Declare Function GetUserName _
Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, nSize As Long) _
As Long
变为
Private Declare PtrSafe Function GetUserName _
Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, nSize As Long) _
As Long
我只能猜测我的32位访问的VBA正在尝试编译为64位,因为那是我安装的办公室版本。
答案 2 :(得分:0)
与查询中使用的简单字符串函数完全相同的问题...
修复不一样:我已经在VBA模块中复制了一个函数(该函数与在查询中使用Left(“ FFFF”,2)完全无关)。
问题是我不小心在复制的模块顶部两次包含“选项比较数据库”。