Über UCanAccess kann kein Nullwert in die Access-Tabelle mit berechnetem Feld eingefügt werden [Duplikat]Java

Java-Forum
Guest
 Über UCanAccess kann kein Nullwert in die Access-Tabelle mit berechnetem Feld eingefügt werden [Duplikat]

Post by Guest »

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:
  • 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]))
wobei d ein berechnetes Feld für den Mittelwert von d1 und d2 ist.
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 [email protected]/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);");
}
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?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post