Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Probleme bei "Refresh BackgroundQuery"

Forumthread: Probleme bei "Refresh BackgroundQuery"

Probleme bei "Refresh BackgroundQuery"
01.07.2002 12:22:19
Benjamin
Hi, ich habe leider ein Problem, das ich überhaupt nicht verstehe...
Ich habe in meinem Excel 2 Abfragen, die bis auf das Suchwort und die Spalte, in der gesucht wird, identisch sind..


1. Abfrage (nummer=61801 9990)


With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=Projektzeit;DBQ=O:\ALLGEMEIN\BU_Info\Entwicklung\ProDat\Datenbank\Pausenkontrolle.mdb;DriverId=281;FIL=MS Access;MaxBufferS" _
), Array("ize=2048;PageTimeout=5;")), Destination:=Range("A1"))
.CommandText = Array( _
"SELECT tblProjektstunden.PersonalnummerID, tblProjektstunden.Projektnummer, tblProjektstunden.Projektstunden, tblProjektstunden.Tag, tblProjektstunden.Monat, tblProjektstunden.Jahr" & Chr(13) & "" & Chr(10) & "FROM tblProjektstu" _
, _
"nden tblProjektstunden" & Chr(13) & "" & Chr(10) & "WHERE (tblProjektstunden.Projektnummer=" & nummer & ")" & Chr(13) & "" & Chr(10) & "ORDER BY tblProjektstunden.PersonalnummerID" _
)
.Name = "Abfrage von Projektzeit"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With



2. Abfrage (nummer=1004)


Private Sub ID()

nummer = Form.Kont_num.Text

With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=Projektzeit;DBQ=O:\ALLGEMEIN\BU_Info\Entwicklung\ProDat\Datenbank\Pausenkontrolle.mdb;DriverId=281;FIL=MS Access;MaxBufferS" _
), Array("ize=2048;PageTimeout=5;")), Destination:=Range("A1"))
.CommandText = Array( _
"SELECT tblProjektstunden.PersonalnummerID, tblProjektstunden.Projektnummer, tblProjektstunden.Projektstunden, tblProjektstunden.Tag, tblProjektstunden.Monat, tblProjektstunden.Jahr" & Chr(13) & "" & Chr(10) & "FROM tblProjektstu" _
, _
"nden tblProjektstunden" & Chr(13) & "" & Chr(10) & "WHERE (tblProjektstunden.PersonalnummerID=" & nummer & ")" & Chr(13) & "" & Chr(10) & "ORDER BY tblProjektstunden.Projektnummer" _
)
.Name = "Abfrage von ID"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
End Sub

In der ersten Abfrage sagt er bei .Refresh BackgroundQuery:=False
"Allgemeiner ODBC Fehler"

Danke im Vorraus
Benjamin

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Probleme bei "Refresh BackgroundQuery"
01.07.2002 19:25:42
Coach
Hallo Benjamin,

sind Projektnummer und Personalnummer vom selben Datentyp? Und "Nummer" identisch definiert?

Gruß Coach

Anzeige
Anzeige

Infobox / Tutorial

Probleme bei "Refresh BackgroundQuery" in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und gehe zu deinem Arbeitsblatt.
  2. Füge eine neue Abfrage hinzu:
    • Verwende den folgenden VBA-Code, um eine QueryTable zu erstellen:
      With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
      "ODBC;DSN=Projektzeit;DBQ=O:\ALLGEMEIN\BU_Info\Entwicklung\ProDat\Datenbank\Pausenkontrolle.mdb;DriverId=281;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;")), Destination:=Range("A1"))
      .CommandText = Array( _
      "SELECT tblProjektstunden.PersonalnummerID, tblProjektstunden.Projektnummer, tblProjektstunden.Projektstunden, tblProjektstunden.Tag, tblProjektstunden.Monat, tblProjektstunden.Jahr" & Chr(13) & "" & Chr(10) & "FROM tblProjektstunden WHERE (tblProjektstunden.Projektnummer=" & nummer & ")" & Chr(13) & "" & Chr(10) & "ORDER BY tblProjektstunden.PersonalnummerID")
      .Name = "Abfrage von Projektzeit"
      .BackgroundQuery = False
      .Refresh BackgroundQuery:=False
      End With
  3. Überprüfe die Daten:
    • Achte darauf, dass die verwendeten Datentypen in der Abfrage konsistent sind, insbesondere zwischen Projektnummer und PersonalnummerID.

Häufige Fehler und Lösungen

  • Allgemeiner ODBC Fehler:

    • Ursache: Möglicherweise stimmen die Datentypen nicht überein. Überprüfe, ob Projektnummer und PersonalnummerID den gleichen Datentyp haben.
    • Lösung: Stelle sicher, dass die Variablen in deiner Abfrage korrekt definiert sind. Zum Beispiel:
      nummer = CStr(Form.Kont_num.Text)
  • Fehler beim Refresh:

    • Ursache: Die Option .Refresh BackgroundQuery:=False könnte Probleme verursachen, wenn andere Abfragen ebenfalls im Hintergrund laufen.
    • Lösung: Setze .BackgroundQuery = False, um sicherzustellen, dass die Abfrage sofort ausgeführt wird.

Alternative Methoden

  • Verwendung von Power Query:

    • Anstelle von VBA kannst du Power Query verwenden, um Daten abzurufen. Dies bietet eine benutzerfreundliche Oberfläche und mehr Flexibilität bei der Datenabfrage.
  • Direktes Refresh:

    • Wenn du nur eine Abfrage hast, kannst du die .Refresh-Methode ohne die BackgroundQuery-Parameter verwenden:
      ActiveSheet.QueryTables(1).Refresh

Praktische Beispiele

  • Beispiel für eine einfache Abfrage:
    With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
      "ODBC;DSN=Projektzeit;DBQ=O:\ALLGEMEIN\BU_Info\Entwicklung\ProDat\Datenbank\Pausenkontrolle.mdb;DriverId=281;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;")), Destination:=Range("A1"))
      .CommandText = "SELECT * FROM tblProjektstunden"
      .Refresh BackgroundQuery:=False
    End With

Tipps für Profis

  • Debugging in VBA: Nutze die Debug.Print-Anweisung, um den Status deiner Variablen im VBA-Editor zu überprüfen. Das kann helfen, Probleme bei der Abfrage zu erkennen.

  • Verwendung von .Refresh BackgroundQuery in komplexen Abfragen: Wenn du mehrere Abfragen hast, setze .BackgroundQuery = True für alle, um die Performance zu steigern, aber stelle sicher, dass du sie mit .Refresh BackgroundQuery:=False synchronisierst, wenn du die Ergebnisse benötigst.


FAQ: Häufige Fragen

1. Warum erhalte ich einen ODBC-Fehler?
Der ODBC-Fehler kann auftreten, wenn die Datenbank nicht erreichbar ist oder die Abfrage nicht korrekt formatiert ist. Überprüfe, ob der Datenbankpfad korrekt ist und die Abfrage richtig formuliert wurde.

2. Was ist der Unterschied zwischen BackgroundQuery:=True und BackgroundQuery:=False?
BackgroundQuery:=True ermöglicht das gleichzeitige Ausführen mehrerer Abfragen, während BackgroundQuery:=False sicherstellt, dass die Abfrage sofort abgeschlossen wird, bevor der nächste Schritt ausgeführt wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige