Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

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

#1
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)
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

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.)
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

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

#5
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.

markusxy

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.