CBool​​函数在Access SQL语句中返回整数

时间:2016-07-21 14:29:14

标签: c# ms-access ado.net ms-access-2010

我正在使用C#SELECT RE_Auxiliary.dbo.ufnGetOpenNotificationValue (1,'2014-07-31','2013-09-01','2014-08-31') + RE_Auxiliary.dbo.ufnGetOpenNotificationValue (2,'2014-07-31','2013-09-01','2014-08-31') + RE_Auxiliary.dbo.ufnGetOpenNotificationValue (3,'2014-07-31','2013-09-01','2014-08-31') 方法从Access数据库中读取数据。我在Access表中有一个字符串字段,在我的查询中,我使用下面的代码将其转换为bool:

Incorrect syntax near ','

上面的语句在数据阅读器中返回ExecuteReader值。按照

https://support.office.com/en-us/article/Type-Conversion-Functions-8ebb0e94-2d43-4975-bb13-87ac8d1a2202

它应该返回IIF(IsXYZ = 'True',CBool(1=1),CBool(1=0)) AS IsXYZ ,我在这里缺少什么?

2 个答案:

答案 0 :(得分:0)

也许试试这个。

CBool(IIf(IsXYZ = 'True',-1,0)) AS IsXYZ

值得一提的是,Access中的Yes / No(True / False)字段被转换为SQL Server中的位字段(如果已转换),并将转换为-1/0为True / False。 BTW 0始终为False且ANY"非零"数字被认为是真的,所以9087也是真的!

答案 1 :(得分:0)

  

我在这里错过了什么?

我不认为你错过任何东西。我使用System.Data.OleDbSystem.Data.Odbc重新创建了您的问题,并使用DAO.Recordset在Access中重新创建了问题。似乎CBool将在VBA语句中返回Boolean,但它将在Access SQL语句中返回Integer。 :(