Fuerchau
09-10-17, 16:59
Hallo Leute,
nur so als Hinweis zu obigem Problem.
Ich hatte bei mehreren Kunden das Problem nach der PTF-Einspielung am Wochenende, dass einige ODBC-Zugriffe nicht mehr erfolgreich sind.
Der Zugriff erfolgt mit den ADODB-Bibliotheken.
Normalerweise meldet ein Recordset-Objekt EOF, wenn keine Daten verfügbar sind.
Dies erfolgt nun leider erst mit dem Zugriff auf den 1. Datensatz und einer zusätzlichen Error-Meldung.
VBA Beispiel wie es bisher lief:
on error goto Fehler
MyRs.Open "Select ..."
IF MyRs.EOF = False then ' EOF wurde direkt gemeldet, alles OK
--Prozess Daten
MyVar = MyRs("F1")
END IF
-- mach noch was
return
Fehler:
VBA wie es nun passiert:
on error goto Fehler
MyRs.Open "Select ..."
IF MyRs.EOF = False then ' EOF wird nicht gemeldet
--Prozess Daten
MyVar = MyRs("F1") ' Error-Ereignis tritt ein, weiter bei Fehler
END IF
-- mach noch was
return
Fehler:
Bei der Verwendung des OLEDB-Treibers tritt dieser Effekt nicht ein.
Leider sind da nun viele PTF's wieder eingespielt worden, so dass man den Verursacher da leider nicht ermitteln kann.
nur so als Hinweis zu obigem Problem.
Ich hatte bei mehreren Kunden das Problem nach der PTF-Einspielung am Wochenende, dass einige ODBC-Zugriffe nicht mehr erfolgreich sind.
Der Zugriff erfolgt mit den ADODB-Bibliotheken.
Normalerweise meldet ein Recordset-Objekt EOF, wenn keine Daten verfügbar sind.
Dies erfolgt nun leider erst mit dem Zugriff auf den 1. Datensatz und einer zusätzlichen Error-Meldung.
VBA Beispiel wie es bisher lief:
on error goto Fehler
MyRs.Open "Select ..."
IF MyRs.EOF = False then ' EOF wurde direkt gemeldet, alles OK
--Prozess Daten
MyVar = MyRs("F1")
END IF
-- mach noch was
return
Fehler:
VBA wie es nun passiert:
on error goto Fehler
MyRs.Open "Select ..."
IF MyRs.EOF = False then ' EOF wird nicht gemeldet
--Prozess Daten
MyVar = MyRs("F1") ' Error-Ereignis tritt ein, weiter bei Fehler
END IF
-- mach noch was
return
Fehler:
Bei der Verwendung des OLEDB-Treibers tritt dieser Effekt nicht ein.
Leider sind da nun viele PTF's wieder eingespielt worden, so dass man den Verursacher da leider nicht ermitteln kann.