2

我正在尝试编写一个插入查询,该查询获取财务数据并将其从.net 写入我的 Access 数据库

问题是我无法通过十进制数据类型参数传递我的数据,尽管能够在 Ms Access 参数窗口中将它们选择为十进制数据类型,并且尽管数据库能够创建十进制数据类型的表字段。

我想知道,我正在尝试做的事情可能吗?如果有怎么办?

这是我的查询的一个小节:

PARAMETERS pMidPrice Decimal;
INSERT INTO NonStandardPricingInstructions ( MidPrice)
SELECT pMidPrice as Expr1

如果我将 Decimal 更改为 IEEEDouble,那么它可以工作,但如果可能的话,我更愿意通过 Decimal。

非常感谢

4

2 回答 2

2

以下似乎对我有用:

对于 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();

那也很好用。

于 2013-10-23T15:27:28.100 回答
0

对于和我有同样问题的人,我在这里详细介绍了一个解决方案:在 MS Access Currency 字段中存储超过四个小数位

于 2013-11-07T12:29:44.950 回答