PDA

Vollständige Version anzeigen : "Allgemeiner ODBC Fehler" abfangen


flokk
05.05.2009, 08:15
Hallo liebe Office Gemeinde,

ich habe ein kleines Problem mit einer ODBC-Abfrage:

Ich habe eine Access Datenbank, deren Daten via ODBC mit einem Excel03Frontend abgefragt werden können. Dies funktioniert auch sehr schnell und gut.
Nun das Problem:
Ich aktualisiere diese DB täglich über ein Makro und das nimmt ca. 5. Min in Anspruch. Jetzt erzeugt eine Abfrage über das Excel Frontend die Fehlermeldung "1004 - Allgemeiner ODBC Fehler" - was ich verstehe.
Nun will ich diesen Fehler abfangen und ins Excel eine allgemein verständliche Fehlermeldung schreiben ( "In 5 min. funktioniert wieder alles") - leider wird der bekannte Fehlerabfang "On error resume next" ignoriert und der Fehler tritt trotzdem auf.

Was kann ich tun??

Danke für die Hilfe

IngGi
05.05.2009, 09:29
Hallo flokk,

wenn Excel trotz einer On Error - Anweisung in einen Laufzeitfehler reinläuft, liegt das oft daran, dass eine vorhergehende Fehlerbehandlung per On Error Goto ... nicht mit einem Resume-Befehl abgeschlossen wurde. Excel befindet sich dann noch im Fehlerbehandlungsmodus. In diesem Modus können weitere Laufzeitfehler nicht abgefangen werden.

Gruß Ingolf

flokk
05.05.2009, 09:56
Hallo IngGi,

danke erstmal für die Antwort.
Leider habe ich keine weitere Fehlerbehandlung im Code.

Der Fehler tritt logischerweise bei der Zeile
.Refresh BackgroundQuery:=False
auf.

Gibt es vielleicht ein Möglichkeit vor dem Aufruf der ODBC-Abfrage einen Verfügbarkeitscheck der Datenquelle zu machen??

IngGi
05.05.2009, 10:20
Hallo flokk,

hast du es schon mal so versucht:

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">On Error GoTo</span> Fehler:
Refresh BackgroundQuery:=False
&nbsp;
...
&nbsp;
<span class="TOKEN">Exit Sub</span>
Fehler:
MsgBox &quot;Die Datenquelle steht in ca. 5 min wieder zur Verf&uuml;gung. &quot; _
&amp; &quot;Bitte versuchen Sie es dann noch einmal.&quot;, vbInformation
<span class="TOKEN">Resume</span> <span class="TOKEN">Next</span>
&nbsp;
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span>&nbsp;</pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)

Ansonsten habe ich im Moment leider keine weiteren Ideen.

Gruß Ingolf

flokk
06.05.2009, 09:19
Danke nochmal,

aber irgendwie will es nicht klappen. Es sieht so aus als ob er im sql-Code hängen bleibt.

FLOKK

IngGi
06.05.2009, 09:46
Hallo flokk,

als Krücke könntest du noch versuchen, die DB vorher "umzubenennen", wobei natürlich nicht wirklich umbenannt, sondern der gleiche Name einfach nochmal zuzuweisen versucht wird. Diese Aktion läuft in einen Laufzeitfehler 70, wenn die DB geöffnet ist. Den kannst du dann zum Beispiel nach folgendem Muster abfragen:

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Sub</span> Abfrage()
&nbsp;
<span class="TOKEN">Dim</span> objFSO <span class="TOKEN">As</span> Object
<span class="TOKEN">Dim</span> objFile <span class="TOKEN">As</span> Object
&nbsp;
<span class="TOKEN">Set</span> objFSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
<span class="TOKEN">Set</span> objFile = objFSO.GetFile(&quot;C:\DeineDB.mdb&quot;) <span class="REM">'Name/Pfad anpassen!</span>
&nbsp;
<span class="TOKEN">On</span> <span class="TOKEN">Error</span> <span class="TOKEN">Resume</span> <span class="TOKEN">Next</span>
objFile.Move objFile.Path
&nbsp;
<span class="TOKEN">If</span> <span class="TOKEN">Not</span> Err <span class="TOKEN">Then</span>
<span class="TOKEN">On Error GoTo 0</span>
<span class="REM"> 'Hier deine Abfrage</span>
<span class="TOKEN">Else</span>
MsgBox &quot;Die Datenquelle steht in ca. 5 min wieder zur Verf&uuml;gung. &quot; _
&amp; &quot;Bitte versuchen Sie es dann noch einmal.&quot;, vbInformation
<span class="TOKEN">Exit Sub</span>
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
&nbsp;
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span>&nbsp;</pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)

Gruß Ingolf