我正在尝试编写一个插入查询来获取财务数据并将其从.net
写入我的Access数据库问题是我无法通过十进制数据类型参数传递我的数据,尽管能够在Ms Access参数窗口中选择它们作为十进制数据类型,尽管数据库能够创建十进制数据类型的表字段。
我在想,我正在尝试做什么?如果是这样的话?
以下是我的查询的一个小节:
PARAMETERS pMidPrice Decimal;
INSERT INTO NonStandardPricingInstructions ( MidPrice)
SELECT pMidPrice as Expr1
如果我将Decimal更改为IEEEDouble,那么它可以正常工作,但如果可能的话,我宁愿通过Decimal。
非常感谢
答案 0 :(得分:2)
以下似乎对我有用:
对于名为[qryDecimalTest]的Access中保存的查询:
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();
这也很好。
答案 1 :(得分:0)
对于与我有同样问题的人,我在此处详细说明了解决方案:Store more than four decimal places in an MS Access Currency field