Creazione di SQL con parametri di query in Excel 2010 con VBA
-
24-10-2019 - |
Domanda
mi sono imbattuto il seguente link:
http://www.informit.com/guides/content. aspx? g = serversql & seqNum = 135
In esso, si elencare il codice relativamente semplice per interrogare il database di SQL da Excel VBA.
' Declare the QueryTable object
Dim qt As QueryTable
' Set up the SQL Statement
sqlstring = "select au_fname, au_lname from authors"
' Set up the connection string, reference an ODBC connection
' There are several ways to do this
' Leave the name and password blank for NT authentication
connstring = _
"ODBC;DSN=pubs;UID=;PWD=;Database=pubs"
' Now implement the connection, run the query, and add
' the results to the spreadsheet starting at row A1
With ActiveSheet.QueryTables.Add(Connection:=connstring, Destination:=Range("A1"), Sql:=sqlstring)
.Refresh
End With
'Save and close the macro, and run it from the same menu you accessed in step 2.
Questo funziona bene. Tuttavia, voglio essere in grado di tirare un back valore di (s) come variabile, invece di dumping in Excel.
Qualcuno mi può aiutare con questo? Ho provato a cercare di Excel VBA SQL Tutorial, ma sembra che la metà il codice trovo non funziona (forse perché non capisco abbastanza bene).
Soluzione
È possibile utilizzare ADO, ad esempio:
''Reference: Microsft ActiveX Data Objects x.x Library
Dim cmd As New ADODB.Command
Dim cn As New ADODB.Connection
Dim param1 As New ADODB.Parameter
Dim rs As ADODB.Recordset
With cn
.Provider = "SQLOLEDB"
''See also http://connectionsstrings.com
.ConnectionString = "Data Source=Server;Initial Catalog=test;Trusted_Connection=Yes"
.Open
End With
Set param1 = cmd.CreateParameter("@SiteID", adBigInt, adParamInput)
param1.Value = 1
cmd.Parameters.Append param1
With cmd
.ActiveConnection = cn
''Stored procedure
.CommandText = "spSiteInformation_Retrieve"
.CommandType = adCmdStoredProc
Set rs = .Execute
End With
For Each f In rs.Fields
Debug.Print f.Name; " "; f
Next
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
Per ulteriori informazioni: http://w3schools.com
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow