Hallo
Ik heb in Excel een listbox, waar dus meerdere resultaten mogelijk zijn. Omdat deze selectie moet dienen om de where-clause van een sql statement op te vullen, dacht ik dit op variabele wijze te doen in een macro.
Dit is de code voor het connecteren (deze is sowieso ok, het probleem ligt hem meer in de sql string zelf)
Dim conn As New ADODB.connection
Dim rs As New ADODB.Recordset
conn.Open "Driver=SQL Server;Server=...;Database=...", "...", "..."
If conn.State = adStateOpen Then
rs.Open sheetSelection.Cells(1, 1).Text, conn
End If..........
Eigenlijk werkt deze code. De query staat dus voorlopig gewoon als tekst in een cel.
De listbox zal dus dienen om met de macro de volgende tekst te produceren:
where veld in {listboxvalue1, listboxvalue2, ...... }
Nu komt het probleem: ik wil met de rs.open ook een DECLARE doen van een variabele. De uiteindelijke sql- string ziet er dus als volgt uit:
declare @var varchar(10)
set @var = 500 (een berekend nummer ...)
select .......
Het probleem is dat de rs.open nooit effectief open gaat, omdat hij stopt na de SET.
Volgens mij moet ik die on-the-fly variabele anders declareren, maar ik weet niet hoe.
Nota bene: deze exacte sql string werkt feilloos in MS SQL Server Management Studio.
Ik zit me suf te zoeken op google. Iemand een tip?
Ik heb in Excel een listbox, waar dus meerdere resultaten mogelijk zijn. Omdat deze selectie moet dienen om de where-clause van een sql statement op te vullen, dacht ik dit op variabele wijze te doen in een macro.
Dit is de code voor het connecteren (deze is sowieso ok, het probleem ligt hem meer in de sql string zelf)
Dim conn As New ADODB.connection
Dim rs As New ADODB.Recordset
conn.Open "Driver=SQL Server;Server=...;Database=...", "...", "..."
If conn.State = adStateOpen Then
rs.Open sheetSelection.Cells(1, 1).Text, conn
End If..........
Eigenlijk werkt deze code. De query staat dus voorlopig gewoon als tekst in een cel.
De listbox zal dus dienen om met de macro de volgende tekst te produceren:
where veld in {listboxvalue1, listboxvalue2, ...... }
Nu komt het probleem: ik wil met de rs.open ook een DECLARE doen van een variabele. De uiteindelijke sql- string ziet er dus als volgt uit:
declare @var varchar(10)
set @var = 500 (een berekend nummer ...)
select .......
Het probleem is dat de rs.open nooit effectief open gaat, omdat hij stopt na de SET.
Volgens mij moet ik die on-the-fly variabele anders declareren, maar ik weet niet hoe.
Nota bene: deze exacte sql string werkt feilloos in MS SQL Server Management Studio.
Ik zit me suf te zoeken op google. Iemand een tip?