以下似乎对我有用:
对于 Access 中名为 [qryDecimalTest] 的已保存查询:
PARAMETERS pDecimalColValue Decimal;
SELECT Clients.ID
FROM Clients
WHERE (((Clients.decimalCol)=[pDecimalColValue]));
以下C#代码查找Decimal
字段为3的记录并返回正确的ID值
cmd.CommandText =
"SELECT ID FROM qryDecimalTest";
decimal queryParameterValue = 3;
cmd.Parameters.Add("?", OleDbType.Decimal).Value = queryParameterValue;
var thing = cmd.ExecuteScalar();
Console.WriteLine(String.Format("{0} ({1})", thing, thing.GetType().ToString()));
编辑回复:评论
我尝试了另一个测试,但这次我使用 Jet.OLEDB 来处理 Access 2000 .mdb 文件。我将 Access 中保存的查询更改为
PARAMETERS pMidPrice Decimal;
INSERT INTO NonStandardPricingInstructions ( MidPrice )
SELECT [pMidPrice] AS Expr1;
并使用了以下 C# 代码
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText =
"qryDecimalTest";
decimal queryParameterValue = 3;
cmd.Parameters.Add("?", OleDbType.Decimal).Value = queryParameterValue;
cmd.ExecuteNonQuery();
那也很好用。