访问数据库功能

时间:2014-12-06 06:24:41

标签: ms-access

我使用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

3 个答案:

答案 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)完全无关)。

问题是我不小心在复制的模块顶部两次包含“选项比较数据库”。