AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Feld wird mit NULL gefüllt obwohl es nicht soll
Thema durchsuchen
Ansicht
Themen-Optionen

Feld wird mit NULL gefüllt obwohl es nicht soll

Ein Thema von Mimm · begonnen am 2. Sep 2008 · letzter Beitrag vom 3. Sep 2008
Antwort Antwort
Mimm

Registriert seit: 17. Sep 2007
11 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Feld wird mit NULL gefüllt obwohl es nicht soll

  Alt 2. Sep 2008, 12:43
Datenbank: Firebird • Version: 1.5 • Zugriff über: IBX/ BDE
Hallo!

Systemumgebung:

Firebird 1.5 (Version 1.5.2.4731) auf Windows 2003 Server
Die Datenbank wurde von Interbase 5.6 auf Firebird importiert.
Da es ein schon etwas älteres, verteiltes System ist wird auf die Datenbank in einem Programm über die BDE zugegriffen. In dem Programm welches jedoch die Fehlermeldung wirft werde die Interbase Komponenten von Delphi 7 verwendet!

Das bestehende System wurde in einer Tabelle um ein weiteres Feld ergänzt. Oder einfach:
ALTER Tabelle1 ADD foobar TSTR255

Die Damain TSTR255 ist wie folgt in der DB deklariert:

CREATE DOMAIN TSTR255 AS
VARCHAR(255) CHARACTER SET ISO8859_1
DEFAULT ""
NOT NULL
COLLATE ISO8859_1

UPDATE Tabelle1 SET foobar = null

führt folgerichtig zu der Fehlermeldung:

The insert failed because a column definition includes validation constraints.
validation error for column STAPLER, value "*** null ***".

In die Tabelle1 werden Daten mittels
INSERT INTO Tabelle1 (Feld1, Feld2, Feld3) VALUES (1,2,3)
eingefügt. Dieser Aufruf ist in einer Storedprocedure hinterlegt und wird über die BDE aufgerufen. Nach dem Import der Daten hat das Feld foobar den Wert NULL.

Als wenn das nicht schon merkwürdig genüg wäre bekomme ich in ein einem anderen Prgramm bei einem Update auf die Tabelle1
die Fehlermeldung von oben "The insert faild because ..." In den anderen Programmen kommt die Meldung troz Update auf Tabelle1 nicht! Und nein das Feld foobar wird in diesem Programm nicht auf NULL gesetzt

UPDATE Tabelle1 SET Field2 = 1 WHERE Field1 = <irgentwas>

Meine Frage ist warum und wie kann das Feld foobar "plötzlich" Null werden?
Ich habe auch versucht im Import das Feld fix über den INSERT Befehl mit einem Wert zu füllen:
INSERT INTO Tabelle1 (Feld1, Feld2, Feld3, foobar) VALUES (1,2,3, "")
aber auch dies brachte keine Erfolg.

Für eine Idee woran das liegt wäre ich dankbar.

Gruß

Michael M.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Feld wird mit NULL gefüllt obwohl es nicht soll

  Alt 2. Sep 2008, 13:07
Lass dir mal von einem SQL-Monitor anzeigen, welceh Befehle genau abgesetzt werden.
Markus Kinzler
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

Re: Feld wird mit NULL gefüllt obwohl es nicht soll

  Alt 2. Sep 2008, 13:14
Bei der BDE kommt ein Fehler und sonst nicht, oder wie ? Falls ja, dann erübrigt sich die Fehlersuche bereits. 8) Ich habe genau das gemacht, wie Du es beschrieben hast. Unterschied : FB 2. Keine SP. Das Insert wurde mit IBExpert gemacht, also indirekt mit FIBPlus. Zumindest ohne BDE. Ergebnis : siehe Anhang. Für die SP kann sowieso keine Domain verwendet weren. Zumindest bei FB <= 2. Poste besser mal die. Da kann keine Domain vorhanden sein, insofern nützt die Domain rein gar nichts.

P.S.: der Datensatz mit dem ed3, der war vor anlegen des neuen Feldes bereits da. Der 2. wurde so eingefügt :

INSERT INTO TEST (NR) VALUES (1)
Angehängte Dateien
Dateityp: doc foobar_685.doc (40,5 KB, 7x aufgerufen)
Gruß
Hansa
  Mit Zitat antworten Zitat
Mimm

Registriert seit: 17. Sep 2007
11 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: Feld wird mit NULL gefüllt obwohl es nicht soll

  Alt 2. Sep 2008, 13:28
@mkinzler

Zitat:
UPDATE Tabelle1 SET Field2 = 1 WHERE Field1 = <irgentwas>
bis auf das <irgentwas> ist dieser SQL Befehl Fix im Code.

@Hansa

Nein das Programm welches die Fehlermeldung bringt ist mit IBX zur DB Verbunden.
Schon klar das die Übergabe bei der SP ohne Domain läuft.
Die Domain sollte in sofern was bringen, dass bei dem Insert kein NULL sonder der Default Wert übergeben wird. Wie in deinem Beispiel. Achja und das dort keiner NULL reinschreibt natürlich.

Gruß

Michael M.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Feld wird mit NULL gefüllt obwohl es nicht soll

  Alt 2. Sep 2008, 13:31
Du setzt diese Abfrage so ab. Aber wird sie auch o an die DB geschickt?
Markus Kinzler
  Mit Zitat antworten Zitat
Mimm

Registriert seit: 17. Sep 2007
11 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Feld wird mit NULL gefüllt obwohl es nicht soll

  Alt 2. Sep 2008, 13:40

Ich hoffe doch sehr wenn ich die so abschicke, dass diese dann auch so an die Datenbank ankommt.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Feld wird mit NULL gefüllt obwohl es nicht soll

  Alt 2. Sep 2008, 13:42
Dann schau dir mal mit einem Monitor an, was so alles (zusätzlich) gesendet wird
Markus Kinzler
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#8

Re: Feld wird mit NULL gefüllt obwohl es nicht soll

  Alt 2. Sep 2008, 13:42
Unsinnige Eingaben kann man zumindest so abfangen :

ALTER TABLE TEST ADD CONSTRAINT CHK1_TEST check (NOT (FOOBAR IS NULL)); Auch per SP. Default geht so aber nicht. Dafür nimmt man dann notfalls einen Trigger. Mache auch mal endlich das, was mkinzler sagt. Wer weiß ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Mimm

Registriert seit: 17. Sep 2007
11 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

Re: Feld wird mit NULL gefüllt obwohl es nicht soll

  Alt 3. Sep 2008, 16:52
Tjo manche Probleme darf man einfach nicht bei der Lösung stören.
Denn nun funktionierts so wie es sollte geändert wurde jedoch nichts.

Danke für eure Mühen.

Gruß

Michael M.

PS:
Einen SQL Monitor für Firebird ohne an den Clients was anzupassen oder dem Server eine Art Proxy vorzuschalten gibt es nicht?
Also quasi einen SQL Profiler wie von MS. *duckundweg*
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#10

Re: Feld wird mit NULL gefüllt obwohl es nicht soll

  Alt 3. Sep 2008, 19:00
Zitat von Mimm:
Tjo manche Probleme darf man einfach nicht bei der Lösung stören...geändert wurde jedoch nichts.
Tjo, dann viel Vergnügen bis zum nächsten Fehler. Die haben nämlich immer eine Ursache.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz