Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Kann Memofeld keinen leeren String zuweisen (https://www.delphipraxis.net/141603-kann-memofeld-keinen-leeren-string-zuweisen.html)

iGoA 14. Okt 2009 11:11

Re: Kann Memofeld keinen leeren String zuweisen
 
Zitat:

Zitat von iGoA
Leerzeichen klappt wie jeder andere Wert. Nur nicht nichts.

Mit dem Assign(nil) bzw. clear könnte klappen, aber das Problem ist dann, zu welchem Zeitpunkt ich das aufrufen soll. Es ist nämlich wirklich so, dass eine Zuweisung von '' oder null gar nicht erst das Feld erreicht. Wenn ich zum Beispiel folgendes tue:
Delphi-Quellcode:
tableAmbientMedia.fieldByName('MEINMEMOFELD').asString := '';
showMessage( tableAmbientMedia.fieldByName('MEINMEMOFELD').asString);
Dann erscheint in der Meldung schon wieder der alte Wert!


EDIT:
Mit assign(nil) und clear funktioniert es auch nicht!

DeddyH 14. Okt 2009 11:13

Re: Kann Memofeld keinen leeren String zuweisen
 
Bist Du Dir ganz sicher, dass NULL zulässig ist? Schau lieber noch einmal nach.

iGoA 14. Okt 2009 14:06

Re: Kann Memofeld keinen leeren String zuweisen
 
Ganz sicher! Ich kann es zum Beispiel per SQL reinschreiben. Das mach ich jetzt als Notlösung. Der User (es ist zum Glück erstmal nur einer) muss zum Leeren des Feld ein oder mehrere Leerzeichen reinschreiben. Dann mach ich OnAfterPost noch ein SQL-Update und setze das Feld auf NULL. Ziemlich bekloppt, aber das einzige, was ich jetzt machen kann.

DeddyH 14. Okt 2009 18:04

Re: Kann Memofeld keinen leeren String zuweisen
 
Das hab ich ja noch nie gehört, aber wenn es so funktioniert :gruebel:

nahpets 14. Okt 2009 19:14

Re: Kann Memofeld keinen leeren String zuweisen
 
Hallo,

das Problem kommt mir bekannt vor, auch wenn's schon ein paar Jährchen her ist. Damals hat mich eine Access-DB wahnsinnig gemacht.

Die Lösung war dann:
Delphi-Quellcode:
ADOQuery.ParamByName('Spalte').Value := leerevariabel + ' ';
Will heißen: Der Wert einer leeren Variabel war nicht zuzuweisen, aber diese gefolgt von einem Leerzeichen funktionierte:
Aber: In der Datenbank war dann kein Leerzeichen, sondern die Spalte wurde auf Null gesetzt. Daher dürfte der Vorschlag, der weiter oben mit dem Leerzeichen gemacht wurde, zu einer korrekten Lösung führen.
Je nach Einstellung schneiden MS-SQL-Server und Access einer Zeichenfolge folgende Leerzeichen ab. Dies führt hier zu dem gewünschten Ergebnis.

Es wäre also einen Versuch Wert:

Vor dem Post (OnBeforePost) dem DBMemo.Text noch ein Leerzeichen hinzufügen (wenn es leer ist), damit auch in einem leeren DBMemo etwas drinne ist. Das Leerzeichen wird von der Datenbank entfernt.

Zugegeben: Ist gewöhnungsbedürftig.

iGoA 26. Okt 2009 10:56

Re: Kann Memofeld keinen leeren String zuweisen
 
Danke für die Tipps.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:30 Uhr.
Seite 2 von 2     12   

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