2014-04-15 82 views
0

好的,这个查询不会运行并返回数据类型不匹配错误。直到我试图在WHERE子句中的子查询内连接两个表时,这个错误才开始。MS Access SQL子查询中的数据类型不匹配

我试图加入的两个表是在主查询中加入的确切两个表。每个表格都包含一个列,CRD编号。在一个表中,它以文本形式存储,而在另一个表中,它以数字形式存储。这就是为什么我使用CStr()函数将数字列转换为文本列的原因。这对于主要查询(感谢Stack Overflow!)非常有效,但是当我试图在子查询中执行相同的确切连接时,我收到了数据类型不匹配错误。

这里是一个图片,一个小箭头和文本框来突出我(99%确定)认为是造成问题的区域。同样,只有当我试图在子查询中加入这两个表时才会出现问题。如果删除了联接,则查询将运行。 (虽然子查询不会返回正确的结果,从而使我的主要查询没用)

My issue

*我所有的Access数据库的设置为接受标准的T-SQL语法,所以我也会标记此作为T-SQL

回答

0

我觉得差异可能是在要排除的情况下,Crd中号码是空的主要的查询,但在子查询你不是。我没有安装Access可以测试,但我敢打赌,它会工作,如果你添加到子查询where子句。

sp.CRD_NUMBER is not null and dtp.CRD_NUMBER is not null 

我怀疑是函数CStr的()是具有空值的问题,但话又说回来,我不能对此进行测试,看看是否会有所作为。

+0

谢谢,我已经试过这个,它似乎不是答案,但我仍然在玩它。 – FluffyKittens

+0

'SELECT sp.Trade_rep FROM [SalesPage重复次数] AS SP INNER JOIN [Ameriprise重复次数DTP] AS DTP ON sp.CRD_NUMBER = DTP。[Crd中号] WHERE sp.trade_firm = '0000 ###' 和sp.CRD_NUMBER不为空 和sp.trade_office = dtp。[Dealerbrch];' – FluffyKittens

+0

上述查询有效,但我不必在联接表达式中转换数据类型。这对我没有意义,为什么我必须在第一次运行具有相同确切连接的查询时转换数据类型,但在运行查询时不必在同一个表中强制转换完全相同的字段再次?我已经对此数据库中使用的链接源表进行了绝对零更新。 – FluffyKittens