aktuell habe ich ein Problem mit NULL-Werten in der Oracle Datenbank, bei Firebird wurde das mit nil gut erkannt, bei Oracle jedoch nicht. Hier wird bei der Abfrage nach nil der Stringvariable für die Logikschicht einfach "NULL" - Wert zugewiesen, was einen Fehler auslöst mit folgender Meldung: Could not convert variant of type (Null) into type (String).
Zunächst der Konstruktor
Code: Alles auswählen
{ TDBStammdaten }
// Konstruktor der Datenbankschicht
constructor TDBStammdaten.Create(DBConnection: TObject);
begin
if (DBConnection is TIBConnection = false) and
(DBConnection is TOracleConnection = false) then
begin
Exit;
end;
if DBConnection is TOracleConnection then
begin
OracleConnection1:= @DBConnection;
if OracleConnection1^.Connected = true then
begin
SQLTransaction1:= TSQLTransaction.Create(nil);
SQLTransaction1.DataBase:= OracleConnection1^;
SQLTransaction1.Active:= true;
SQLQuery1:= TSQLQuery.Create(nil);
SQLQuery1.DataBase:= OracleConnection1^;
end
else
begin
Exit;
end;
end;
if DBConnection is TIBConnection then
begin
IBConnection1:= @DBConnection;
if IBConnection1^.Connected = true then
begin
SQLTransaction1:= TSQLTransaction.Create(nil);
SQLTransaction1.DataBase:= IBConnection1^;
SQLTransaction1.Active:=true;
SQLQuery1:= TSQLQuery.Create(nil);
SQLQuery1.DataBase:= IBConnection1^;
end
else
begin
Exit;
end;
end;
end;
Code: Alles auswählen
// Postfach
if SQLQuery1.FieldByName('POSTFACH') <> nil then
if SQLQuery1.FieldByName('POSTFACH').Value <> '' then
sPostfach := SQLQuery1.FieldByName('POSTFACH').Value;