sql-server-2008 - ejemplos - lista de valores sql
Devuelve los valores de una consulta de paso a través de VBA (2)
Tengo un código VBA para ejecutar una consulta en SQL-Server 2008. Funciona bien y muestra la tabla que necesito. El código que hace esto está aquí:
Set db = CurrentDb
Set qdf = db.QueryDefs("MyStoredProcedure")
qdf.SQL = "exec [WCNS_Ops].[dbo].MyStoredProcedure [plus a bunch of parameters]"
DoCmd.OpenQuery "MyStoredProcedure"
que muestra esta tabla:
Mi pregunta es esta: ¿cómo devuelvo estos valores mediante programación al código VBA sin mostrar la tabla?
El siguiente código no ha sido probado, pero debe hacerlo apuntar en la dirección correcta:
Set db = CurrentDb
Set qdf = db.QueryDefs("MyStoredProcedure")
qdf.ReturnsRecords = True
qdf.SQL = "exec [WCNS_Ops].[dbo].MyStoredProcedure [plus a bunch of parameters]"
With qdf.OpenRecordset(dbOpenSnapshot) ''could also be dbOpenDynaset, etc. ''
Do Until .EOF
Debug.Print !firstid
Debug.Print !lastid
.MoveNext
Loop
End With
Todo lo que necesita hacer es ejecutar la consulta y establecer su salida a un conjunto de registros. De la parte superior de mi cabeza algo como esto
Dim dbCon as new ADODB.Connection
Dim rst as new ADODB.Recordset
Dim cmd as new ADODB.Command
dbCon.ConnectionString=”Your Connection String”
with cmd
.comandtype=adCmdStoredProc
.commandtext=”Your SP name”
.Parameters.Append .CreateParameter("@Pram1", adVarChar, adParamInput, 50, “WhatEver”)
.ActiveConnection=dbCon
.NamedParameters = True
Set rst = .Execute
end with
with rst
if .EOF=false then
myVar=!Column1
end if
end with
rst.close
dbcon.close
set cmd=nothing