greatmgm
Goto Top

Access OpenRecordset liefert nicht korrekten Inhalt

Hallo zusammen,

stehe hier vor einem Problem das ich so noch nie hatte:

Ich hole mir über currentdb.openrecordset einen Datensatz aus einer SQL-Express-Datenbank.

Set rr = CurrentDb.OpenRecordset("select * from rechnungen where rnr=" & rnr, dbOpenDynaset) ' rnr ist der PK

Ein Datenfeld was ich dort auslese ist ein String für Zahlungsbedingungen ... es steht dort definitiv immer was drin !

In 1 von 3 Fällen liefert mir die OpenRecordsetMethode aber plötzlich einen "NULL"-Wert.
Beim nächsten Versuch kann es dann klappen und anstatt "NULL" kommt (beim selben Datensatz) wieder die Zahlungsbedingung.

Mach ich bei Programmabbruch parallel die DB auf, such den Datensatz, steht auch der korrekte Inhalt drin.
Nur OpenRecordset ist fest der Meinung keinen String finden zu können.

Der einzige Grund der mir hier nur einfällt wäre: die DB wird über ein verhältnismäßig langsames VPN ausgelesen.

Kann das der Grund sein ? Gibt hier ein work around zu ?

Ich behelf mich jetzt damit, das ich openrecordset solange neu aufrufe bis kein NULL ausgelesen wird.
Das kann dann schon mal bis zu 10 sec. dauern, das er in meiner while Schleife hängt.

Das kann es doch aber nicht sein ? Ich fahre zig Abfragen auf meinen Datenbanken, nicht auszudenken wenn man sich hier nicht auf
die Rückgabewerte verlassen kann.

Oder steh ich total auf dem Schlauch.

Content-ID: 571437

Url: https://administrator.de/forum/access-openrecordset-liefert-nicht-korrekten-inhalt-571437.html

Ausgedruckt am: 23.12.2024 um 07:12 Uhr

sabines
sabines 13.05.2020 um 10:33:27 Uhr
Goto Top
Zitat von @greatmgm:

Der einzige Grund der mir hier nur einfällt wäre: die DB wird über ein verhältnismäßig langsames VPN ausgelesen.


Moin,

wie langsam genau ist das denn?
Was für eine VPN Verbindung ist das, site-2-site?
Und wie machst Du die Verbindung zum SQL Server, IP, DNS?

Wenn derm, aus welchen Gründen auch immer, nicht rechtzeitig antwortet, und Du den "time-out" nicht abfängst, dann kann das so aussehen.

Gruss
greatmgm
greatmgm 13.05.2020 um 10:47:05 Uhr
Goto Top
Morjn,

die schnelle Seite hat ein DLAN50 die Gegenseite ein 200/20 shared medium, wobei der upload hier sehr zäh ist.

VPN ist s2s, DB über ODBC Treiber mit IP Adresse, time out kommt nicht, weil Datensatz wird ja ausgelesen nur nicht alle Felder korrekt, d.h.
zBsp,. Auftragsnummer oder Rechnungsbetrag steht im recordset drin, nur die ZB nicht.
SlainteMhath
Lösung SlainteMhath 13.05.2020 um 10:47:51 Uhr
Goto Top
Moin,

wie sieht denn der ganze Code aus? Wenn ich mich recht erinnere, muss zwischem OpenRecordset und der ersten Verwendung ein MoveFirst 'rein. Btw, wenn du eh nur lesen willst, solltest du das Recordset ggfs als Read only öffnen. Und wenns nur um ein Feld geht, dann auch nur das im Select auswählen.

Falls es zu einem Timeout kommt, würde das eine Fehlermeldung auslösen. "Einfach so" einen Null Wert zurückgeben macht Access eigentlich nicht.

lg,
Slainte
greatmgm
greatmgm 13.05.2020 um 10:52:37 Uhr
Goto Top
gelöst.
Ich vermute eine verschluckte SQL Instance,

habe dann mitgekriegt, immer wenn ich den Datensatz parallel auf der Gegenseite geöffnet habe, ging es bei mir weiter ...

SQL Instance neu gestartet, jetzt läufts.

Schon ein Schreck gekriegt ;)