Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Query Abfrage per Makro aktualisieren

Query Abfrage per Makro aktualisieren
05.02.2013 15:25:37
Wolfgang
Hallo,
ich habe eine Query Abfrage auf eine ODBC Datenbank.
Diese will ich bei Ausführen des Makros automatisch aktualisieren.
Ich habe den Step für das Makro aufgezeichnet, Code s.u.
Ich will nun den festen Datumseintrag 04.Februar durch einen variablen ersetzen (nur das Datum des aktuellen Tages, die Uhrzeiten Anfang recordtimestamp 08 Uhr bzw Ende recordtimestamp 19 Uhr sind fix).
Wie baue ich diese Variablen hier ein?
Danke für Hilfe !
Gruß
Wolfgang
Sub UpdateQuery_ACC3()
Sheets("Abfrage von DWH-neu_NCO").Select
With Selection.QueryTable
.Connection = _
"ODBC;DSN=DWH-neu2;UID=CrystelReportTC;PWD=xxx"";APP=Microsoft Office XP;WSID=WS2107870; _
_
DATABASE=HPPCR3_TC"
.CommandText = Array( _
"SELECT calltypefifteenmin.recordtimestamp, calltypefifteenmin.calltypekey,  _
calltypefifteenmin.numreceived" & Chr(13) & "" & Chr(10) & "FROM HPPCR3_TC.dbo. _
calltypefifteenmin calltypefifteenmin" & Chr(13) & "" & Chr(10) & "WHERE (calltypefifteenmin.recordtim" _
, _
"estamp>={ts '2013-02-04 08:00:00'} And calltypefifteenmin.recordtimestamp

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Query Abfrage per Makro aktualisieren
05.02.2013 16:25:27
Wolli
Hallo Namensvetter,
hier habe ich die Abfrage einmal entschlackt und neu formatiert - so sieht sie aus:
Array(
"SELECT
calltypefifteenmin.recordtimestamp,
calltypefifteenmin.calltypekey,
calltypefifteenmin.numreceived
FROM HPPCR3_TC.dbo.calltypefifteenmin calltypefifteenmin
WHERE
(
calltypefifteenmin.recordtimestamp>={ts '2013-02-04 08:00:00'}
And
calltypefifteenmin.recordtimestamp
die Zeilenschaltungen (" & Chr(13) & "" & Chr(10) & ") können komplett entfallen. Alles innerhalb von Array("hier") muss später zu einer Zeile zusammengesetzt werden bzw. durch Aneinanderketten aus mehrerern Zeilen gebildet werden. Etwa so:
Array("SELECT calltypefifteenmin.recordtimestamp, calltypefifteenmin.calltypekey, " & _
"calltypefifteenmin.numreceived FROM HPPCR3_TC.dbo.calltypefifteenmin " & _
"calltypefifteenmin WHERE (calltypefifteenmin.recordtimestamp>={ts '2013-02-04 08:00:00'} " & _
"And calltypefifteenmin.recordtimestamp
Schließlich kannst Du den Datums-Teil durch eine String(!)-Variable ersetzen:
Array("SELECT calltypefifteenmin.recordtimestamp, calltypefifteenmin.calltypekey, " & _
"calltypefifteenmin.numreceived FROM HPPCR3_TC.dbo.calltypefifteenmin " & _
"calltypefifteenmin WHERE (calltypefifteenmin.recordtimestamp>={ts '" & strVariable & " 08:00: _
00'} " & _
"And calltypefifteenmin.recordtimestamp
Die kannst Du ungefähr so füllen: strVariable = format(date, "YYYY-MM-DD")
Gutes Gelingen, Gruß, Wolli

Anzeige
AW: Query Abfrage per Makro aktualisieren
06.02.2013 16:55:41
Wolfgang
Hallo Namensvetter,
vielen herzlichen Dank für die schnelle und superkompetente Antwort!!!
Gruß
Wolfgang
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Query Abfrage per Makro aktualisieren


Schritt-für-Schritt-Anleitung

  1. Makro erstellen: Öffne Excel und gehe zum VBA-Editor (Alt + F11).

  2. Neues Modul hinzufügen: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" und wähle "Einfügen" -> "Modul".

  3. Code einfügen: Füge den folgenden Code ein, um die Query Abfrage zu aktualisieren:

    Sub UpdateQuery_ACC3()
       Dim strVariable As String
       strVariable = Format(Date, "YYYY-MM-DD")
    
       Sheets("Abfrage von DWH-neu_NCO").Select
       With Selection.QueryTable
           .Connection = _
           "ODBC;DSN=DWH-neu2;UID=CrystelReportTC;PWD=xxx;APP=Microsoft Office XP;WSID=WS2107870;DATABASE=HPPCR3_TC"
           .CommandText = Array("SELECT calltypefifteenmin.recordtimestamp, calltypefifteenmin.calltypekey, " & _
           "calltypefifteenmin.numreceived FROM HPPCR3_TC.dbo.calltypefifteenmin " & _
           "WHERE (calltypefifteenmin.recordtimestamp >= {ts '" & strVariable & " 08:00:00'} " & _
           "AND calltypefifteenmin.recordtimestamp <= {ts '" & strVariable & " 19:00:00'})")
           .Refresh
       End With
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und führe das Makro über "Entwicklertools" -> "Makros" aus.


Häufige Fehler und Lösungen

  • Fehler: Verbindung zur Datenbank kann nicht hergestellt werden
    Lösung: Überprüfe die DSN-Einstellungen in der ODBC-Datenquelle und stelle sicher, dass der Benutzername und das Passwort korrekt sind.

  • Fehler: Abfrage liefert keine Daten zurück
    Lösung: Stelle sicher, dass die Datumsvariablen korrekt formatiert sind und dass Daten in dem angegebenen Zeitraum vorhanden sind.


Alternative Methoden

Eine alternative Möglichkeit, Power Query automatisch zu aktualisieren, ist die Verwendung von Excel-Tabellen. Du kannst die Datenquelle so konfigurieren, dass sie die Daten bei jedem Öffnen der Datei aktualisiert. Gehe dazu in die Abfrageeinstellungen und aktiviere die Option "Daten beim Öffnen der Datei aktualisieren".


Praktische Beispiele

Hier ist ein Beispiel für eine Excel-Datei, in der die Daten von einer ODBC-Datenbank per Makro aktualisiert werden. Du kannst den oben genannten Code verwenden und anpassen, um deine speziellen Anforderungen zu erfüllen.

Wenn du mit Daten arbeitest, die regelmäßig aktualisiert werden müssen, kannst du auch einen Timer in VBA implementieren, der das Makro automatisch zu festgelegten Zeiten ausführt.


Tipps für Profis

  • Verwende Fehlerbehandlungsroutinen: Um sicherzustellen, dass dein Makro robust ist, implementiere Error-Handling, um unerwartete Fehler abzufangen.

  • Automatisiere die Aktualisierung: Du kannst das Makro so planen, dass es zu bestimmten Zeiten automatisch ausgeführt wird, indem du die Windows Aufgabenplanung verwendest.

  • Verwende Debugging-Techniken: Nutze die Debugging-Tools von VBA, um Probleme schnell zu identifizieren und zu beheben.


FAQ: Häufige Fragen

1. Wie kann ich die Abfrage so einstellen, dass sie automatisch aktualisiert wird?
Du kannst die Abfrageeinstellungen in Power Query so anpassen, dass sie beim Öffnen der Datei oder in festen Intervallen aktualisiert wird.

2. Kann ich das Datum dynamisch anpassen?
Ja, indem du die Format(Date, "YYYY-MM-DD") Methode verwendest, kannst du das aktuelle Datum dynamisch in deinen Abfragen verwenden.

3. Welche Excel-Version benötige ich für die Verwendung von Power Query?
Power Query ist in Excel 2010 und späteren Versionen verfügbar, jedoch kann die Benutzeroberfläche und Funktionalität je nach Version variieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige