![]() |
Betrifft: ODBC Requery
von: Kaios
Geschrieben am: 06.09.2014 11:35:26
Hallo zusammen,
ich habe eine kleine Frage.
Ich verbinde mich via OLEDB per Excel zu einer SQL Datenbank. Ein Makro frägt Daten ab und verarbeitet diese.
Die SQL Abfrage lasse ich aus Ranges einlesen, die Kriterien der Abfrage ändern sich bei jeder Abfrage, das ist auch mein Problem. Kann ich eine Refreshperiod setzen die jedes mal die SQL Abfrage neu einliest?
Hier mein Code:
varConn = "OLEDB;Provider=MSDAORA.1;Password=0815;User ID=4711;Data Source=0815:1521/0815db" strSQL = Range("Z1").Value & vbCrLf & _ Range("Z2").Value With ActiveSheet.QueryTables.Add(Connection:=varConn, Destination:=Range("A1")) .CommandText = strSQL .Name = "0815" .Refresh BackgroundQuery:=True .RefreshPeriod = 1 End WithDanke!
![]() ![]() |
Betrifft: AW: ODBC Requery
von: fcs
Geschrieben am: 08.09.2014 11:52:50
Hallo Kaios,
eine regelmäßige Aktualisieren der Abfrage inkl. Anpassung des CommandTextes könnte wie folgt per OnTime-Methode funktionieren. Allerdings sollte die Abfrage selber dann keine Automatische Aktualisierung haben.
Beachte auch, dass die sich ständig wiederholende Ontim-Anweisung vor dem Schließen der Datei gestoppt werden muss.
Gruß
Franz
'Code in einem allgemeinen Modul Option Explicit Public datNextQuery As Date Sub StartQuery_Update() datNextQuery = Now + TimeSerial(Hour:=0, Minute:=1, Second:=0) Application.OnTime Earliest:=datNextQuery, Procedure:="QueryTable_CommandText_neu" Call QueryTable_CommandText_neu End Sub Sub StopQuery_Update() On Error Resume Next Application.OnTime Earliest:=datNextQuery, Procedure:="QueryTable_CommandText_neu" End Sub Sub QueryTable_CommandText_neu() Dim Wks As Worksheet, objQT As QueryTable, strSQL As String Set Wks = ThisWorkbook.Worksheets("Tabelle1") With Wks Set objQT = .QueryTables(1) 'Nr ggf anpasen oder durch Namen in Anführungszeichen ersetzen 'oder wenn Daten als Tabelle/Liste dargestellt werden Set objQT = .ListObjects(1).QueryTable 'Nr ggf anpasen oder durch Namen in Anfü _ hrungszeichen ersetzen strSQL = .Range("Z1").Value & vbCrLf & .Range("Z2").Value End With With objQT .CommandText = strSQL .Refresh False End With End Sub
![]() ![]() |
Betrifft: AW: ODBC Requery
von: Kaios
Geschrieben am: 08.09.2014 17:53:25
Hallo Franz,
vielen Dank! Damit kann ich was anfangen. Werde mir das Teil entsprechend umbauen.
Grüße
Kaios
![]() |