我有两个桌子。 第一个看起来像这样。数字的类型为十进制。
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
答案 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不允许我参加会议。我过滤掉空值后,它就起作用了。