在 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)