在 MS Access Passthrough 查询中将 nvarchar 数据类型转换为数字以供后续计算
Converting nvarchar data type to number in MS Access Passthrough query for subsequent calculations
我正在 MS Access 环境中使用 SQL 到 SQL 服务器查询的直通。我在 Access 窗体中显示查询结果,并在文本框中对其执行显示计算。
SQL服务器中的数据类型为nvarchar
。在直通查询中,我在 select 语句中使用 trim 空格。数据的所有其他用途都支持这种剩余的文本类型。但是我想在一个特定的地方显示时减去一个值。
直通看起来像这样:
Select
,Trim([NumberStoreAsTextWithSpaces]) as NumberStoredAsTextNoSpaces
,[Other stuff]
,[Other stuff1]
,[Other stuff2]
,[Other stuff...]
From [dbo].[Table of Numbers of Stuff]
当我访问到窗体的控件数据源是passthrough查询,而在文本框控件中控件数据源是:
=[NumberStoredAsTextNoSpaces]-42.0
这会导致 #Type!
作为文本框中的结果。
在减法运算之前尝试 CDbl()
会导致零值或空值减去 42.0,并在文本框中简单地显示为 -42.0。
我不一定关心查询中某处是否存在错误数据项,Select ... Trim 会直接跳过它。并且 Access 表单应该只在光标处出错。
我错过了什么?
因为这是一个pt查询,那么你可以这样转换它:
Select
,CAST(Trim([NumberStoreAsTextWithSpaces]) AS real) as NumberStoredAsTextNoSpaces
,[Other stuff]
,[Other stuff1]
,[Other stuff2]
,[Other stuff...]
From [dbo].[Table of Numbers of Stuff]
因此,演员表:
int (Access long)
float (Access double)
real (Access single)
money (Access currency)
我正在 MS Access 环境中使用 SQL 到 SQL 服务器查询的直通。我在 Access 窗体中显示查询结果,并在文本框中对其执行显示计算。
SQL服务器中的数据类型为nvarchar
。在直通查询中,我在 select 语句中使用 trim 空格。数据的所有其他用途都支持这种剩余的文本类型。但是我想在一个特定的地方显示时减去一个值。
直通看起来像这样:
Select
,Trim([NumberStoreAsTextWithSpaces]) as NumberStoredAsTextNoSpaces
,[Other stuff]
,[Other stuff1]
,[Other stuff2]
,[Other stuff...]
From [dbo].[Table of Numbers of Stuff]
当我访问到窗体的控件数据源是passthrough查询,而在文本框控件中控件数据源是:
=[NumberStoredAsTextNoSpaces]-42.0
这会导致 #Type!
作为文本框中的结果。
在减法运算之前尝试 CDbl()
会导致零值或空值减去 42.0,并在文本框中简单地显示为 -42.0。
我不一定关心查询中某处是否存在错误数据项,Select ... Trim 会直接跳过它。并且 Access 表单应该只在光标处出错。
我错过了什么?
因为这是一个pt查询,那么你可以这样转换它:
Select
,CAST(Trim([NumberStoreAsTextWithSpaces]) AS real) as NumberStoredAsTextNoSpaces
,[Other stuff]
,[Other stuff1]
,[Other stuff2]
,[Other stuff...]
From [dbo].[Table of Numbers of Stuff]
因此,演员表:
int (Access long)
float (Access double)
real (Access single)
money (Access currency)