访问-连接两个小数时出现错误3615

时间:2018-06-26 14:26:35

标签: ms-access

我有两个桌子。 第一个看起来像这样。数字的类型为十进制。

TABLE1
T1NUMBER  T1INFORMATION
123456    Stuff1
123457    Stuff2
123458    Stuff3

我的另一张桌子看起来很相似。基本上,该ID与另一个表中的ID相同,但是末尾有两个额外的字符。

TABLE2
T2NUMBER    T2INFORMATION
123456L1    Important Info1
123457L1    Important Info2
123458L1    Important Info3

要加入表格,我进行了查询以削减多余的字符。我知道,我只能将小数列与小数列匹配。因此,我添加了一个函数,该函数将获得的字符串转换为小数。查询结果看起来像这样。

QUERY1
Q1NUMBER  Q1INFORMATION
123456    Important Info1
123457    Important Info2
123458    Important Info3

我用来获取十进制值的函数就是这个。我将其添加为模块。

Function NewCDec(MyVal)
   NewCDec = CDec(MyVal)
End Function

终于解决我的问题了。我想在数值列上将TABLE1与QUERY1连接起来。两者现在都应该是十进制值,并且应该可以连接。但是我总是收到错误3615(JOIN表达式中的类型不匹配)。为什么我仍然会收到该错误?谁能帮我解决这个问题?

我的查询最后应该像这样:

RESULT
NUMBER    T1INFORMATION  Q1INFORMATION
123456    Stuff1         Important Info1
123457    Stuff2         Important Info2
123458    Stuff3         Important Info3

2 个答案:

答案 0 :(得分:0)

从逻辑上讲,对函数进行简单的更改就可以解决问题。

Function NewCDec(ByVal MyVal As String) As Double
   NewCDec = CDec(MyVal)
End Function

从您的问题中提供的信息来看,这应该可以解决问题。

但是当涉及到问题时,逻辑有时是行不通的!

因此,如果上述更改不起作用。通过使用CDec()创建一个临时表,尝试将(SELECT ... FROM Table) As TempTable放入SQL。

简单示例:

SELECT CDec(T2NUMBER) As Number FROM Table2

温度表示例:

SELECT TempTable.* FROM (SELECT CDec(T2NUMBER) As Number FROM Table2) As TempTable

如果有效,请告知其他人。 :)

答案 1 :(得分:0)

我发现了我的错误。 T2NUMBER上的一些值无效/为空,我忘记了对其进行过滤。因此Access不允许我参加会议。我过滤掉空值后,它就起作用了。