Query Abfrage in Excel Makro einbauen

Hallo

Ich würde gerne Daten aus einer Datenbank (ISHTTND) auslesen. Diese Datenbank habe ich mit Microsoft Query geöffnet und die richtigen Daten ausgewählt.
Der Teil zwischen # ist der Code, den mir Query generiert um die richtigen Datenpunkte mit den Werten auszugeben.

Irgendwie schaffe ich es nicht ihn richtig einzubauen, damit er die Daten in stSQL schreibt.

Ich hoffe ihr könnt mir weiterhelfen…

Danke

Hier mal der VBA Code
Code:

Sub Populate_Combobox_Recordset()
Dim rst As ADODB.Recordset
Dim stSQL As String

Dim vaData As Variant
Dim k As Long

Verbindung.storeExcelSettigs

'SQL Verbindung Initialisieren
fncConnectToSQL („DIV23!PRJ=Uni_Wzbg!DB=ISHTTND“)

'Create the SQL-statement.

'SQL-Code aus Query um nur die Daten aus TrendLogID 257 auszulesen

stSQL = „SELECT TrendRecord.TrendRecordId, TrendRecord.Value, TrendRecord.TrendLogId, TrendRecord.DateTimeStamp, TrendRecord.ValueType“
"FROM „DIV23!PRJ=Uni_Wzbg!DB=ISHTTND“.dbo.Channel Channel, „DIV23!PRJ=Uni_Wzbg!DB=ISHTTND“.dbo.Designation Designation, „DIV23!PRJ=Uni_Wzbg!DB=ISHTTND“.dbo.TrendRecord TrendRecord
'WHERE (TrendRecord.TrendLogId = 257)

'Verbindung öffen
cnt.Open

'Recordsetobject Instazieren und SQLAbfrage ausführen
Set rst = cnt.Execute(stSQL)

With rst
Set .ActiveConnection = Nothing 'Disconnect the recordset.
k = .Fields.Count
'Populate the array with the whole recordset.
vaData = .GetRows
End With

'Verbindung schließen
cnt.Close

'Manipulate the Combobox’s properties and show the form.
With frmData
With .ListBox1
.Clear
.BoundColumn = k
.List = Application.Transpose(vaData)
.ListIndex = -1
.ColumnCount = 1 'this makes appear the two columns on the combobox
.BoundColumn = 2
End With
.Show vbModeless
End With

frmData.ComboBox1.Value = k

Verbindung.restoreExcelSettigs

'Objekte aus dem Speicher löschen
Set rst = Nothing
Set cnt = Nothing
End Sub

Public Function fncConnectToSQL(stSqlCatalog As String)

'Connectionobject instanzieren
Set cnt = New ADODB.Connection

With cnt
.Provider = „sqloledb“
.Properties(„Data Source“).Value = „localhost\DESIGO“
.Properties(„Initial Catalog“).Value = „DIV23!PRJ=Uni_Wzbg!DB=ISHTTND“
.Properties(„Integrated Security“).Value = „SSPI“
.CursorLocation = adUseClient 'Necesary for creating disconnected recordset.
End With
End Function

Public Sub storeExcelSettigs()
'Geschwindigkeitsoptimierung
With Application
xlCalc = .Calculation
.Calculation = xlCalculationManual
.EnableEvents = False
.ScreenUpdating = False
End With
End Sub

Grëzi Dr.fagott/Verdasco/Stefan1552/stefanwollff7

Du bist ja sehr umtriebig mit deiner Frage und auch äusserst kreativ mit deinen Namen…

Ich hatte dir auf dein direktes Anschreiben folgendes geantwortet:

Ich würde gerne Daten aus einer Datenbank (ISHTTND) auslesen. Diese :smiley:atenbank habe ich mit Microsoft Query geöffnet und die richtigen :smiley:aten ausgewählt.
Der Teil zwischen # ist der Code, den mir Query generiert um die :richtigen Datenpunkte mit den Werten auszugeben.

Irgendwie schaffe ich es nicht ihn richtig einzubauen, damit er die :smiley:aten in stSQL schreibt.

Eine Beschreibung was ‚irgendwie schaffe ich es nicht‘ bedeutet fehlt deiner Anfrage.

Aber generell - warum lässt Du die Daten nicht einfach in ein Tabellenblatt schreiben, ganz ohne VBA-Programmierung und liest sie dann von dort in deine Listbox ein?

Und warum soll das Ergebnis einer Abfrage überhaput in einen String überführt werden?

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

ja oke so habe ich das nun auch gemacht…

Probleme habe ich hierbei nur wenn sich meine Daten ändern…

Aber fürs erste kann ich damit leben…

Vielen Dank für Ihre Hilfe…

Grüße dr.fagott :smile:

Grüezi dr.fagott

ja oke so habe ich das nun auch gemacht…

Probleme habe ich hierbei nur wenn sich meine Daten ändern…

Aber warum das denn?

Einfach die Abfrage aktualisieren reicht da doch vollständig aus.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -