Über UCanAccess kann kein Nullwert in die Access-Tabelle mit berechnetem Feld eingefügt werden [Duplikat]
Posted: 08 Jan 2025, 09:09
Diese Frage hängt mit dieser Frage zusammen: Berechnete Felder in MS-Access geben bei Verwendung von UCanAccess falsche/abgeschnittene Werte zurück.
Ich verwende UCanAccess, um Daten wie folgt in eine Access-Tabelle einzufügen Spalten:
In Access kann ich Null in d2 einfügen. Die Verwendung von UCanAccess zum Einfügen von Null führt zu folgendem Fehler:
net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::4.x.x external routine invocation Ausnahme: null Wert nicht zulässig
at ucanaccess@5.0.1/net.ucanaccess.jdbc.UcanaccessStatement.execute(UcanaccessStatement.java:159)
at javaapplication23.JavaApplication23.main(JavaApplication23.java:35)
Hier ist mein Code:
Das Problem scheint bei der berechneten Spalte zu liegen. Es funktioniert, wenn ich es entferne, aber das ist eigentlich keine Option.
Die Verwendung der Nz()-Funktion anstelle von IS NULL wie in dieser Frage funktioniert nicht, da Nz in berechneten Feldern nicht zulässig ist.
Irgendwelche Ideen, was falsch ist oder wie man es beheben kann?
Ich verwende UCanAccess, um Daten wie folgt in eine Access-Tabelle einzufügen Spalten:
- d1 double
- d2 double default null
d berechnet als IIf((If([d1] Is Null,0,[d1])=-999),Null,IIf([d2] Is Not Null,Round(([d1]+[d2])/2,1),[d1]))
In Access kann ich Null in d2 einfügen. Die Verwendung von UCanAccess zum Einfügen von Null führt zu folgendem Fehler:
net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::4.x.x external routine invocation Ausnahme: null Wert nicht zulässig
at ucanaccess@5.0.1/net.ucanaccess.jdbc.UcanaccessStatement.execute(UcanaccessStatement.java:159)
at javaapplication23.JavaApplication23.main(JavaApplication23.java:35)
Hier ist mein Code:
Code: Select all
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
con = DriverManager.getConnection("jdbc:ucanaccess://" + database+ ";singleconnection=true", "", "");
try(Statement stmt = con.createStatement();){
stmt.execute("INSERT INTO Tab (d1, d2) VALUES (2.1, null);");
}
Die Verwendung der Nz()-Funktion anstelle von IS NULL wie in dieser Frage funktioniert nicht, da Nz in berechneten Feldern nicht zulässig ist.
Irgendwelche Ideen, was falsch ist oder wie man es beheben kann?