Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tsql MS Access SQL子查询中的数据类型不匹配_Tsql_Ms Access_Ms Access 2007 - Fatal编程技术网

Tsql MS Access SQL子查询中的数据类型不匹配

Tsql MS Access SQL子查询中的数据类型不匹配,tsql,ms-access,ms-access-2007,Tsql,Ms Access,Ms Access 2007,好的,此查询将不会运行并返回数据类型不匹配错误。直到我尝试在WHERE子句的子查询中连接两个表时,这个错误才开始 我试图连接的两个表正是在主查询中连接的两个表。每个表包含一列CRD编号。在一个表中,它存储为文本,在另一个表中,它存储为数字。这就是为什么我使用CStr函数将数字列转换为文本列。这对于主查询非常有效,感谢堆栈溢出!但是,当我尝试在子查询中执行相同的精确联接时,我收到了数据类型不匹配错误 这是一张图片,带有一个小箭头和文本框,用来突出显示我99%确信是哪个区域导致了问题。同样,当我试图

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

我试图连接的两个表正是在主查询中连接的两个表。每个表包含一列CRD编号。在一个表中,它存储为文本,在另一个表中,它存储为数字。这就是为什么我使用CStr函数将数字列转换为文本列。这对于主查询非常有效,感谢堆栈溢出!但是,当我尝试在子查询中执行相同的精确联接时,我收到了数据类型不匹配错误

这是一张图片,带有一个小箭头和文本框,用来突出显示我99%确信是哪个区域导致了问题。同样,当我试图在子查询中连接这两个表时,问题才出现。如果删除了联接,则将运行查询。虽然子查询不会返回正确的结果,因此使我的主查询无用


*我所有的Access DB都设置为接受标准T-SQL语法,因此我也将其标记为T-SQL

我认为区别可能在于,在主查询中,您排除了Crd Number为null的情况,但在子查询中,您没有。我没有安装能够进行测试的Access,但我敢打赌,如果您添加到子查询where子句中,它将起作用

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

我怀疑CStr函数的空值有问题,但我无法测试这是否会产生影响。

谢谢,我已经尝试过了,但似乎不是答案,但我仍在使用它。从[SalesPage Reps]中选择sp.Trade_rep作为sp内部连接[Ameriprise Reps DTP]作为sp.CRD_编号=dtp。[CRD编号]上的dtp,其中sp.trade_商号='0000',sp.CRD_编号不为空,sp.trade_办公室=dtp。[Dealerbrch];上面的查询可以工作,但我不必在联接表达式中强制转换数据类型。这对我来说没有意义,为什么我必须在第一次使用这个完全相同的联接运行查询时强制转换数据类型,而不必在再次运行查询时强制转换完全相同的表中的完全相同的字段?我对此数据库中使用的链接源表进行了绝对零更新。dtp。[品牌代表id]和sp.trade_代表的数据类型是什么?结果集与仅使用on条件运行子查询与不使用on条件运行子查询有什么区别?这两个字段都已经是文本字段。我可以在条件中设置它们=并且不必为它们转换数据类型。