Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 选择查询在Management studio中工作但不在VBA中工作_Sql Server_Vba_Excel - Fatal编程技术网

Sql server 选择查询在Management studio中工作但不在VBA中工作

Sql server 选择查询在Management studio中工作但不在VBA中工作,sql-server,vba,excel,Sql Server,Vba,Excel,Excel/VBA中有一个问题:从Microsoft SQL Server获取记录集中的数据时,我收到“多步骤OLE DB操作生成的错误…”错误发生在我打开记录集时 该查询是一个没有错误的SELECT查询(在Management Studio中启动),但使用VBA中的记录集时会出现错误 奇怪的事情:查询是SELECT SUM。。。如果我去掉总和,我就不会得到错误 你能帮我吗 代码: 尝试将adOpenDynamic更改为adOpenStatic 是的,我只需要一个值。非常感谢你的提示!它正在工作

Excel/VBA中有一个问题:从Microsoft SQL Server获取记录集中的数据时,我收到“多步骤OLE DB操作生成的错误…”错误发生在我打开记录集时

该查询是一个没有错误的SELECT查询(在Management Studio中启动),但使用VBA中的记录集时会出现错误

奇怪的事情:查询是SELECT SUM。。。如果我去掉总和,我就不会得到错误

你能帮我吗

代码:


尝试将adOpenDynamic更改为adOpenStatic

是的,我只需要一个值。非常感谢你的提示!它正在工作。。您如何看待仅使用SELECT SUM而不使用SELECT时出现的错误?我不认为您可以在聚合上放置动态光标,因为不可能更新聚合。去掉SUM,它就不再是一个聚合查询,因为没有groupby。
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sConnString As String

Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset

Set W1 = ActiveWorkbook

sConnString = "Provider=SQLOLEDB;Data Source=SERVERNAME;" & _
    "Initial Catalog=DBNAME;" & _
    "Integrated Security=SSPI;"
conn.Open sConnString

conn.CommandTimeout = 30  

t_sql = ""
t_sql = t_sql & "SELECT" & vbCrLf
t_sql = t_sql & "SUM(rroc.PrezzoUnit / (Cambi.VALORE * (1 + ISNULL(nis.Aliquota, ni.Aliquota)))) AS ordinato" & vbCrLf
t_sql = t_sql & "FROM RepOrdiniClienti roc WITH (NOLOCK)" & vbCrLf
t_sql = t_sql & "inner join RepRigheOrdiniClienti rroc WITH (NOLOCK) ON rroc.RepOrdiniClienti_ID = ID_RepOrdiniClienti" & vbCrLf
t_sql = t_sql & "inner join repclientidestinatari rcd WITH (NOLOCK) ON repclientidestinatari_id = id_repclientidestinatari" & vbCrLf
t_sql = t_sql & "inner join NAZIONI WITH (NOLOCK) ON nazioni_id = id_nazioni" & vbCrLf
t_sql = t_sql & "INNER JOIN CountryBP WITH (NOLOCK) ON CountryBP_ID = ID_CountryBP" & vbCrLf
t_sql = t_sql & "INNER JOIN Valuta WITH (NOLOCK) ON Valuta_ID = ID_VALUTA" & vbCrLf
t_sql = t_sql & "left join Articolo Articolo WITH (NOLOCK) ON rroc.codice10 = Articolo.Codice10" & vbCrLf
t_sql = t_sql & "left join Stagioni Stagioni WITH (NOLOCK) ON Articolo.Stagione_di_Vendita_ID = ID_Stagioni" & vbCrLf
t_sql = t_sql & "INNER JOIN Cambi WITH (NOLOCK) ON Cambi.Valuta_ID=roc.Valuta_ID AND CONVERT(DATE,roc.Data,103) = CONVERT(DATE,Cambi.DATA,103)" & vbCrLf
t_sql = t_sql & "left join Nazioni_intrastat ni WITH (NOLOCK) ON ni.Nazioni_ID = rcd.Nazioni_ID and roc.Data between ni.DataInizio and ni.DataFine" & vbCrLf
t_sql = t_sql & "inner join commitenti c WITH (NOLOCK) ON rcd.Commitenti_ID=c.ID_Commitenti" & vbCrLf
t_sql = t_sql & "left join nazioni_intrastat_societa nis WITH (NOLOCK) ON nis.societa_id=c.Societa_id and nis.nazioni_id=rcd.nazioni_id and (roc.Data between nis.DataInizio and nis.DataFine)" & vbCrLf

ordinato = 0         
rs.Open stringa_sql, conn, adOpenDynamic, adLockOptimistic
If Not (rs.EOF And rs.BOF) Then
    rs.MoveFirst
    If Not (IsNull(rs("ordinato"))) Then ordinato = ordinato + CDbl(rs("ordinato"))
End If
rs.Close

Set rs = Nothing
If CBool(conn.State And adStateOpen) Then conn.Close
Set conn = Nothing