Juli 26, 2021, 16:43:52

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


Fehler ADO berechnetes Feld Satz neu anlegen AddNew VBA

Begonnen von galaxy, Juli 22, 2021, 13:55:53

⏪ vorheriges - nächstes ⏩

galaxy

Hallo

ich habe eine Tabelle mit einem berechnetem Feld. Ausdruck: Wenn(IstNull([Feld]);Falsch;Wahr).

Wenn ich per VBA und ADO eine Neuanlage starte (AddNew) wird ein Fehler (-2147467259 / ohne Fehlertext) ausgelöst.
Ist das berechnete Feld nicht vorhanden, gibt es keinen Fehler und die Neuanlage funktioniert.

Was gibt es für eine Lösung (außer das berechnete Feld zu entfernen)?


PhilS

Juli 22, 2021, 14:08:05 #1 Letzte Bearbeitung: Juli 22, 2021, 14:26:41 von PhilS
Zitat von: galaxy am Juli 22, 2021, 13:55:53ich habe eine Tabelle mit einem berechnetem Feld. Ausdruck: Wenn(IstNull([Feld]);Falsch;Wahr).
Probier doch mal den folgenden Ausdruck:
Iif([Feld] IS NULL;0;-1)
Access DevTools - Find and Replace
Komfortables Suchen und Ersetzen in den Entwurfseigenschaften von Access-Objekten. In Abfragen, Formularen, Berichten und VBA-Code - Überall und rasend schnell!

galaxy

leider keine Verbesserung - immer noch Fehler
Wenn(IstNull([Feld]);0;-1)

PhilS

Zitat von: galaxy am Juli 22, 2021, 14:21:02leider keine Verbesserung - immer noch Fehler
Wenn(IstNull([Feld]);0;-1)
Hast du jetzt meinen Ausdruck genommen, oder den hier dargestellten?
Im Zweifelsfall kopiere bitte exakt den Ausdruck von mir und ändere bei Bedarf höchstens den Feldnamen.
(Ich habe gerade noch eine falsche/überflüssige Klammer aus meinen ursprünglichem Posting entfernt.)
Access DevTools - Find and Replace
Komfortables Suchen und Ersetzen in den Entwurfseigenschaften von Access-Objekten. In Abfragen, Formularen, Berichten und VBA-Code - Überall und rasend schnell!

galaxy

Wenn([DatErledigt] Ist Null;0;-1)
aber trotzdem Fehler

Es scheint wohl ein grundsätzliches Problem zu sein.
Wenn ich eine ganz simple Berechnung als Ausdruck (=1+2) definiere, funktioniert AddNew auch nicht.

galaxy

Juli 22, 2021, 14:52:02 #5 Letzte Bearbeitung: Juli 22, 2021, 17:23:53 von galaxy
Bin jetzt auf einen Zusammenhang gestoßen.
Wenn die Tabelle ohne Index geöffnet wird, dann erfolgt kein Fehler.
Könnte dann auch an Cursor liegen. Mit Index akzeptiert Open nur Server. Ohne Index wird Client verwendet.

Nachtrag: habe den Code so angepasst, dass bei einer Neuanlage die Tabelle ohne Index und als Cursor Client geöffnet wird.
Jetzt klappt es.

markus888

Zitat von: galaxy am Juli 22, 2021, 14:52:02Mit Index akzeptiert Open nur Server. Ohne Index wird Client verwendet.

Wenn du mit dem Datenbank Index arbeitest, muss logischerweise einer Server Cursor aktiv sein.
Aber warum verwendest du überhaupt die Index Property um Werte anzufügen?

Bei einem Client Cursor kann man mittels Field.Optimize Eigenschaft am Client einen Index erstellen.
Ob das spürbar ist, ist eine andere Frage, denn so große Datenmengen sollte man gar nicht in ein Recordset laden.
10 Jahre Access