Frage

Ich bin auf den folgenden Link gestoßen:

http://www.informit.com/guides/content.aspx?g=sqlserver&seqnum=135

Darin listen sie einen relativ einfachen Code auf, um die SQL -Datenbank von Excel VBA abzufragen.

' 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.

Das funktioniert gut. Ich möchte jedoch in der Lage sein, einen Wert als eine Variable zurückzuziehen, anstatt ihn in Excel zu werfen.

Kann mir jemand dabei helfen? Ich habe versucht, nach Excel VBA SQL -Tutorials zu suchen, aber es scheint, dass der halbe Code, den ich finde, nicht funktioniert (vielleicht weil ich es nicht gut genug verstehe).

War es hilfreich?

Lösung

Sie können ADO zum Beispiel verwenden:

''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

Weitere Informationen: http://w3schools.com

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top