Microsoft Access实现在尝试执行打开某些查询的宏时抛出了类型不匹配错误。大多数表都链接到SQL Server,我需要将两个表连接在一起,这些表具有不同的数据类型。
表A:
参考文本
表B:
REFNO号码
我通常希望纠正SQL Server端的问题,但是有多个应用程序访问同一个数据库,并且需要花费大量时间来测试所有这些。此外,我们正在完全重写此应用程序,我今天所做的任何工作都完全丢掉......
如果有一种方法可以在访问中进行此连接,我会节省各种时间......
答案 0 :(得分:3)
在Access中,您可以使用CLng(或Cint)函数将表A的REFERENCE值从文本转换为数字。
我更喜欢在SQL Server中创建表A的视图,以在Access获取数据之前转换字段的数据类型。您不应该针对其他现有应用测试该视图。重写时,视图不再有用,只需将其丢弃即可。
答案 1 :(得分:2)
您可以在条件中进行比较。
SELECT [REFERENCE], [REFNO]
FROM [Table a], [Table b]
WHERE [REFERENCE]=cstr(nz([REFNO],""))
您还可以执行直通 - 在sql服务器上执行的访问查询并仅返回数据。
SELECT [REFERENCE], [REFNO]
FROM [Table a], [Table b]
WHERE [REFERENCE]=cast([REFNO] as varchar(25))
HTH
答案 2 :(得分:1)
您提到的每个列的数据类型是什么?
如果您想逐字对照,可以Cstr(myNumericColumn) = myStringColumn
或者要在数字模式下进行比较,请执行CLng(myStringColumn) = myNumericColumn
。