【发布时间】:2013-10-21 20:37:28
【问题描述】:
我正在尝试此代码,但出现错误:
Dim cmd3 As OleDbCommand = New OleDbCommand("INSERT INTO Criteria (Calculation, [Interval], Weight) VALUES (?, ?, ?)", Nordeen_Investing_3.con)
cmd3.Parameters.AddWithValue("@Calculation", Calculation)
cmd3.Parameters.AddWithValue("@[Interval]", Interval)
cmd3.Parameters.AddWithValue("@Weight", "(SELECT (Avg(C." & Calculation & " * G.Growth) - Avg(C." & Calculation & ") * Avg(G.Growth)) / (StDevP(C." & Calculation & ") * StDevP(G.Growth)) AS Weight FROM " & Calculation & " AS C INNER JOIN " & Growth_Rate & " AS G " & On_Statement & ")")
cmd3.ExecuteNonQuery()
这是错误信息:
Data type mismatch in criteria expression.
问题出在这行代码:
cmd3.Parameters.AddWithValue("@Weight", "(SELECT (Avg(C." & Calculation & " * G.Growth) - Avg(C." & Calculation & ") * Avg(G.Growth)) / (StDevP(C." & Calculation & ") * StDevP(G.Growth)) AS Weight _
FROM " & Calculation & " AS C _
INNER JOIN " & Growth_Rate & " AS G _
" & On_Statement & ")")
如果我将Select Statement 替换为Select Statement 生成的值,则代码运行良好。
我怎样才能让它工作?
更新 根据以下建议,我已将代码更改为:
Dim cmd3 As OleDbCommand = New OleDbCommand("INSERT INTO Criteria (Calculation, [Interval], Weight) VALUES (?, ?, (SELECT (Avg(C." & Calculation & " * G.Growth) - Avg(C." & Calculation & ") * Avg(G.Growth)) / (StDevP(C." & Calculation & ") * StDevP(G.Growth)) AS Weight FROM " & Calculation & " AS C INNER JOIN " & Growth_Rate & " AS G " & On_Statement & "))", Nordeen_Investing_3.con)
cmd3.Parameters.AddWithValue("@Calculation", Calculation)
cmd3.Parameters.AddWithValue("@[Interval]", Interval)
cmd3.ExecuteNonQuery()
我在运行新代码时收到此错误:
Unspecified error
【问题讨论】:
-
您应该将计算第三个参数的查询放在主查询中,而不是作为参数
-
@EstebanElverdin 我听取了您的建议(请参阅原始帖子更新)。我收到了这个错误
Unspecified error。 -
@EstebanElverdin 如果我自己运行 select 语句,它会返回一个没有错误的值。但是当我将它添加到我的
INSERT INTO statement时,我得到了错误。
标签: vb.net oledb insert-into sql