Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Leere Datenbankeinträge (https://www.delphipraxis.net/178008-leere-datenbankeintraege.html)

ngott2 10. Dez 2013 20:12

Datenbank: MDB • Version: Delphi xe3 • Zugriff über: OLE

Leere Datenbankeinträge
 
Hallo liebe Community.

Ich arbeite momentan im Betrieb mit einer MDB. Nun soll ein zweites Programm ebenfalls die Datenbank verwenden. Dafür musste ich bei ein paar tabellen ein Feld hinzufügen. Diese neuen Felder sind natürlich leer. Das Problem ist das beim einlesen der Datensätze eine Fehlermeldung kommt das ein leeres Feld nicht in ein ein String umgewandelt werden kann. ( Wie die genaue Exception aussieht weiß ich jetzt gerade nicht da ich gerade nicht im Betrieb bin, aber ist die Standart Exception wenn mann nichts in ein String umwandeln will.)

Nun zur Frage. Kann mann das einlesen für dieses Feld überspringen ? Oder kann man leere Strings in die Felder reinschreiben oder noch eine andere Idee?


Danke im Voraus und Entschuldigung für meine schlechte Grammatik. :)

himitsu 10. Dez 2013 20:40

AW: Leere Datenbankeinträge
 
Die Frage ist eher erstmal, was du eigentlich machst, wie du auf die Felder zugreifst und was du eigentlich damit machst?





- du könntest ein UPDATE schreiben und die Felder füllen

- beim Auslesen prüfen ob das Feld NULL ist (Field.IsNull)

- Field.AsString wandelt doch NULL in einen Leerstring um?

- VarToStr kann man auch verwenden

- uvm.

nahpets 10. Dez 2013 20:44

AW: Leere Datenbankeinträge
 
Hallo,

bin mir nicht sicher, ob ich verstanden habe was Du sagst und ob das das ist, was Du meinst.

Wenn ich aber bei der Problemstellung (halbwegs) richtig liegen sollte, so könnte dir dieser (faule) Trick eventuell helfen:
Delphi-Quellcode:
Stringvariabel := QueryKomponente.FieldByName('SpaltenName').AsString + '';
Bei Ado und Access habe ich da schon öfter mal "seltsames" Verhalten erlebt.

Furtbichler 10. Dez 2013 21:38

AW: Leere Datenbankeinträge
 
Welches Programm bekommt den Probleme, das erste oder das zweite?
Das erste Programm kann eigentlich keine Probleme machen, denn es kennt die neuen Felder ja gar nicht. Ausnahme: irgendwo ist ein 'select * from'...

Egal: Abhilfen:
1. Keine neuen Felder in der DB, sondern eine Detailtabelle mit den Spalten (ID-Haupttabelle, NeueInfo). Von deinem neuen Programm aus greifst Du auf die Tabelle so zu:
Code:
select t.*, n.NeueInfo
  from Tabelle t join Details n on t.ID=n.ID
2. Fülle einen Leerstring in die neuen Felder. Tut nicht weh. Ist sowieso keine gute Idee, NULLABLE Felder zu verwenden (Performance), außer, die NULL hat eine ganz bestimmte Bedeutung.

Bernhard Geyer 10. Dez 2013 21:42

AW: Leere Datenbankeinträge
 
Zitat:

Zitat von Furtbichler (Beitrag 1239359)
Ist sowieso keine gute Idee, NULLABLE Felder zu verwenden (Performance), außer, die NULL hat eine ganz bestimmte Bedeutung.

Das sieht Oracle anders. Dort werden (jedenfalls kenne ich es nicht anders) alle Felder mit einem Leerstring zu einem NULL-Wert gewandelt. Ist zwar m. E. bescheuert, ist aber so.

ngott2 10. Dez 2013 21:45

AW: Leere Datenbankeinträge
 
Danke für die Vorschläge. Werde ich morgen ausprobieren. Funktionieren bestimmt habe bloß nicht daran gedacht.
Falls es nicht klappen sollte frage ich einfach nochmal.

Edit.
Das erste was ich von den Tipps ausprobiert habe hat super funktioniert. (field.isNull) Danke :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:01 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