Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Problem mit Defaultwert bei MySQL und ZEOS (https://www.delphipraxis.net/68594-problem-mit-defaultwert-bei-mysql-und-zeos.html)

Angel4585 2. Mai 2006 11:31

Datenbank: MySQL • Version: 5 • Zugriff über: ZEOS

Problem mit Defaultwert bei MySQL und ZEOS
 
Hallo zusammen,

wie schon im Titel steht, habe ich ein Problem mit den Defaultwerten bei der Kombination MySQL und ZEOS.

Ich habe eine Tabelle mit einem Feld:
SQL-Code:
CREATE TABLE IF NOT EXISTS "Tabellenname"(
Feldname BOOLEAN DEFAULT "0" NOT NULL
);
Das Problem ist jetzt nur, das wenn ich mit einer Zeos-Querie ein Append mache, also einen neuen datensatz anlege, dieser Defaultwert nicht gesetzt wird. Beim Post mit dem ich den Datensatz speichern möchte, kommt nur eine Fehlermeldung, dass das Feld nicht NULL sein darf, was ja stimmt. Aber sollte in diesem Fall nicht der Defaultwert reingeschrieben werden?

MfG :angel:

marabu 2. Mai 2006 11:34

Re: Problem mit Defaultwert bei MySQL und ZEOS
 
Hallo Martin,

entweder DEFAULT oder NOT NULL - beides zusammen macht doch keinen Sinn.

Grüße vom marabu

Angel4585 2. Mai 2006 11:38

Re: Problem mit Defaultwert bei MySQL und ZEOS
 
Türlich macht das Sinn..
DEFAULT ist der Wert der standardmäßig bein anlegen reingeschrieben werden soll.
NOT NULL wird benötigt wenn ein Benutzer den Datensatz später bearbeitet und NULL also NICHTS reinschreiben will.

Edit:*Große Klape wieder zumach* hattest Recht, NOT NULL weg und es geht :oops:

Rexet 19. Jul 2006 10:16

Re: Problem mit Defaultwert bei MySQL und ZEOS
 
Errr... Das kann ja nicht die Lösung sein... Der letzte Einwand is ja berechtigt... Default-Werte können ja überschrieben werden und ich will ned von der Software aus dauernd leere Felder abfragen müssen o_0 Darum soll sich die Datenbank kümmern oder mir zumindest beim posten ne exception liefern damit ich das schön behandeln kann.

Ich hab übrigens den genau gleichen Fehler wie der erste Poster. Allerdings bin ich auch auf die neueren ZEOS-Komponenten umgestiegen. Die ZEOS-DBOs aus dem Jahre 2003 oder so hatten dieses Problem noch nicht (dafür halt hundert andere... ~_~) Wir hatten unsere Anwendung mit denen geschrieben, und der gleichzeitige Einsatz beider Flag war damals noch zugelassen. Also vermutlich wieder mal ein BUG in deren Komponenten... Mußte ja eh schon die verbliebenen "requestlive"-Aufrufe aus denen raushauen...

Greetings, D.

franktron 19. Jul 2006 10:23

Re: Problem mit Defaultwert bei MySQL und ZEOS
 
SQL-Code:
CREATE TABLE IF NOT EXISTS "Tabellenname"(
Feldname BOOLEAN DEFAULT "0" NOT NULL
);
Also das ist ja fast alles Falsch so ist das richtig
SQL-Code:
CREATE TABLE IF NOT EXISTS "Tabellenname"(
Feldname TINYINT(1) NOT NULL DEFAULT 0
);
Weil Boolean kennt MySQL garnicht und NOT NULL muss vor Default

Rexet 19. Jul 2006 10:30

Re: Problem mit Defaultwert bei MySQL und ZEOS
 
Wer das Problem lösen kann ohne viel Quelltext aufzuwirbeln dem bin ich zu höchstem Dank (ich mach das fürn nen Job o_0) verpflichtet.

Und aja: AutoInc-Felder scheinen die ZEOS DBOs neuerdings auch zu ignorieren! :thumb: :roteyes:

Und aja2: Wenn man das ganze in einer Datenbank-Oberfläche wie z.b in MySQL-Front macht(also einen Datensatz einfügt), so funktionieren auch beide Flags miteinander, sprich: Die Default-Werte werden beim Einfügen des Datensatzes angelegt... Es liegt also nur an den Komponenten.

uwewo 19. Jul 2006 10:37

Re: Problem mit Defaultwert bei MySQL und ZEOS
 
Und falls Du unbedingt ein Boolsches Feld brauchst.

SQL-Code:
CREATE TABLE IF NOT EXISTS "Tabellenname"( 
`Feldname` enum('Wahr','Falsch') default 'Falsch'
);

Bernhard Geyer 19. Jul 2006 10:44

Re: Problem mit Defaultwert bei MySQL und ZEOS
 
An alle die auf ZEOS schimpfen:

1, Die Komponenten sind Kostenlos und jeder darf gerne mitmachen diese zu verbessern. Auch sollte man Fehler/Probleme auf der ZEOS-Seite melden und nicht in irgendeinem Forum sich auslassen.

2, Niemand verplichtet einen diese zu verwenden. Es gibt genügend kostenpflichtige Komponenten die MySQL-Zugriff mit Delphi ermöglich. Ich selbst verwende die CrLab-Komponenten sehr erfolgreich

3, Es muß nicht immer eine ZEOS-Fehler sein. Ich hatte auch schon MySQL-Versionen die im Bereich Default-Wert murks gebaut hat. Also am besten immer mit einer 2ten-MySQL-Version gegenchecken.

Rexet 19. Jul 2006 11:24

Re: Problem mit Defaultwert bei MySQL und ZEOS
 
Zitat:

Zitat von Bernhard Geyer
An alle die auf ZEOS schimpfen:

1, Die Komponenten sind Kostenlos und jeder darf gerne mitmachen diese zu verbessern. Auch sollte man Fehler/Probleme auf der ZEOS-Seite melden und nicht in irgendeinem Forum sich auslassen.

2, Niemand verplichtet einen diese zu verwenden. Es gibt genügend kostenpflichtige Komponenten die MySQL-Zugriff mit Delphi ermöglich. Ich selbst verwende die CrLab-Komponenten sehr erfolgreich

3, Es muß nicht immer eine ZEOS-Fehler sein. Ich hatte auch schon MySQL-Versionen die im Bereich Default-Wert murks gebaut hat. Also am besten immer mit einer 2ten-MySQL-Version gegenchecken.

Ich schätz mal die können aber auch nimmer die Nörgelei hören ;) Besser hier als dort, wo sie eh das vermutlich 100x am Tag hören. :lol:

So ganz nebenbei hab ich aber eine Kombination entdeckt mit der sowohl "NOT NULL" als auch ein DEFAULT-WERT akzeptiert werden. :thumb: Ich benutze dazu:

MySQL 5.0.22 (Müßte auch mit 4er-Versionenen gehen)
DBO zeosdbo-6.5.1-alpha (2004-11-14 10:15) (Vielleicht geht auch was zwischem Aktuellen u. dem 2004er-Update, allerdings hab ich keine Geduld das jetzt noch auszuprobieren.

Angel4585 19. Jul 2006 11:37

Re: Problem mit Defaultwert bei MySQL und ZEOS
 
Zitat:

Zitat von franktron
SQL-Code:
CREATE TABLE IF NOT EXISTS "Tabellenname"(
Feldname BOOLEAN DEFAULT "0" NOT NULL
);
Also das ist ja fast alles Falsch so ist das richtig
SQL-Code:
CREATE TABLE IF NOT EXISTS "Tabellenname"(
Feldname TINYINT(1) NOT NULL DEFAULT 0
);
Weil Boolean kennt MySQL garnicht und NOT NULL muss vor Default

Ich hab das mittlerweile auch so gelöst, dass ich 0 bzw 1 für False bw. True in ein Feld schreibe.
Da mit NOT NULL und DEFAULT hatte ich nicht hinbekommen, aber so wie du das da oben gemacht hast funktioniert es, also das NOT NULL vor dem DEFAULT anstatt dahinter.

THX :thumb:

MfG :angel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:48 Uhr.
Seite 1 von 2  1 2      

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