gpt4 book ai didi

c# - c# 中的查询和 Access vba 产生不同的结果

转载 作者:太空宇宙 更新时间:2023-11-03 13:12:41 25 4
gpt4 key购买 nike

我正在编写一个 c#/.net4.0 程序来替换 access vba 模块。我通过运行相同的查询得到不同的结果。

vba 查询:

dbs.Execute "INSERT INTO tmpTable ( L1, D1, L2, UserID, FmN ) " & _
"SELECT Table1.Field1, Table2.Field1, " & _
"Sum(Table2.Field2) AS SumOfNoWork, '" & stringUser & "' AS Expr1, 'rampup' AS Expr2 " & _
"FROM Table1 INNER JOIN Table2 ON Table1.Field2 = Table2.Field3 " & _
"WHERE (((Table2.Field4) = 6)) " & _
"GROUP BY Table1.Field1, Table2.Field1, '" & stringUser & "', 'rampup';"

C# 查询:

string exec1 = "INSERT INTO tmpTable ( L1, D1, L2, UserID, FmN ) " + 
"SELECT Table1.Field1, Table2.Field1, " +
"Sum(Table2.Field2) AS SumOfNoWork, '" + stringUser + "' AS Expr1, 'rampup' AS Expr2 " +
"FROM Table1 INNER JOIN Table2 ON Table1.Field2 = Table2.Field3 " +
"WHERE (((Table2.Field4) = 6)) " +
"GROUP BY Table1.Field1, Table2.Field1, '" & stringUser & "', 'rampup';";

using (OleDbConnection conn = new OleDbConnection(strconn))
{ conn.Open(); OleDbCommand comm = new OleDbCommand(exec1, conn);
comm.ExecuteNonQuery(); conn.Close(); }

我比较了两者运行后的结果。从插入查询中查看 tempTable,字段 D1 和 FmN 相同,但在 100 行中的 11 行中,c# 和 vba 版本的 L1 和 L2 不同。此外,它们的插入顺序不同。

在c#版本中没有任何异常,但这会不会是 Access 表达式服务的结果?为什么行会以不同的顺序插入并且 vba 和 ace.oledb.12.0 之间有些不同的原因是什么?

编辑:我发现了一些我之前没有注意到的东西——L1 和 L2 是长整数类型,D1 是日期时间,userid 和 fmn 是字符串。执行这些之后,插入到 tmpTable 中的行相对于 datetime D1 的顺序完全不同。如果我按 D1 对表进行排序并比较两者的结果,除了 100 行中的 11 行外,所有数据都相同,其中 L1 和 L2 不同。仔细观察后,数据是相同的,除了这 11 行的日期时间相同,因此它们没有正确排序。

问题是:为什么在 Access/vba 和 c#/.net/ace.oledb.12.0 中执行相同的查询时,查询以相对于 D1 的不同顺序插入行?

最佳答案

Any reasons why the rows would be inserted in a different order and some different between vba and ace.oledb.12.0?

通常不能保证 OLEDB 查询返回的数据顺序,除非您使用 ORDER BY 子句指定它。由于 Access 直接查询自身,因此它很可能会保留物理记录顺序。由于在执行 INSERT INTO ... SELECT 时无法指定顺序,因此无法强制执行插入顺序。

至于不同的结果,我会查看一个特定的结果并深入挖掘,在每个系统中运行一个非分组查询,看看你是否得到相同的记录或者翻译是否存在差异。

作为旁注,按常量值分组 ('"& stringUser & "', 'rampup') 是不必要的,但它不应该改变您的结果。

关于c# - c# 中的查询和 Access vba 产生不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27821738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com