Access-VBA-与Concat相关的编译错误-以前有效

时间:2018-12-02 14:18:06

标签: ms-access access-vba

我收到尝试使用Allen Browne的ConcatRelated函数运行查询的编译错误。

  

编译错误:查询表达式'SELECT MbrNbr,EventIndex,ConcatRelated(“ EventIndex”,“ PlayerResults”,MbrNbr = 123456)'。

这个谜是我知道以前成功执行过。

注意:这是我第一次使用MS Access进行项目,因此这是我第一次使用Allen的ConcatRelated函数。我必须假设有一些明显的我想念的东西。我已经在MS Excel VBA中编写了大约10年的代码。

我确实有一个比下面的示例更复杂的查询,但是我将这个非常基本的查询放在一起只是为了测试一下我的设置是否突然有问题。

我已竭尽全力尝试解决此问题,所有代码示例似乎都表明我正确了。

设置:

  • ConcatRelated被保存为名为Concat_Related_Data的函数。我已阅读函数名称不能ConcatRelated

  • 收到错误的简单查询是:

    SELECT MbrNbr, EventIndex, ConcatRelated("EventIndex", "PlayerResults", MbrNbr = 123456) 
    FROM PlayerResults;
    

    注意:我复制了Allen的示例,并通过调用其中一个表对其进行了简单地编辑。字段MbrNbr被定义为“数字”。

任何见解将不胜感激!

2 个答案:

答案 0 :(得分:0)

在这里http://allenbrowne.com/func-concat.html之后,我看到第三个参数也被定义为字符串参数(如预期的那样),而不是布尔值。

所以我认为你应该使用这个:

SELECT MbrNbr, EventIndex, ConcatRelated("EventIndex", "PlayerResults", "MbrNbr = 123456") FROM PlayerResults;

信息:ConcatRelated的第三个参数也是一个包含您的条件的字符串。

答案 1 :(得分:0)

除了@UnhandledException提供的答案外;您声明的位置:

  

ConcatRelated被保存为名为Concat_Related_Data的函数。
  我已阅读函数名称不能ConcatRelated

为清楚起见:该功能的代码应从Allen Browne的站点“按原样”复制到新的VBA模块中,而无需更改功能名称。

但是,在保存VBA模块时,应将模块命名为与ConcatRelated不同的名称,否则在尝试调用该函数时会收到类型不匹配的错误。


请注意,如果您正在使用VBA中使用字符串表示的SQL代码中的代码,则需要转义双引号(以确保它们保留在SQL代码中)或使用单引号相反,即:

CurrentDb.OpenRecordset("SELECT MbrNbr, EventIndex, ConcatRelated('EventIndex', 'PlayerResults', 'MbrNbr = 123456') FROM PlayerResults")

或者:

CurrentDb.OpenRecordset("SELECT MbrNbr, EventIndex, ConcatRelated('EventIndex', 'PlayerResults', 'MbrNbr = 123456') FROM PlayerResults")