Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Default - Wert einer Spalte aus leerer Tabelle auslesen !!! (https://www.delphipraxis.net/101108-default-wert-einer-spalte-aus-leerer-tabelle-auslesen.html)

pronny31 8. Okt 2007 15:40

Datenbank: Firebird • Version: 2.0 • Zugriff über: ODBC

Default - Wert einer Spalte aus leerer Tabelle auslesen !!!
 
Habe folgendes Problem

Ich will aus einer angelegten Tabelle den Default - Wert aus einem Feld auslesen !

Ich habe jetzt bereits viel probiert ...
Ich weiss das es nur über den Typ Blob geht.
Kann mir einer helfen ?

mkinzler 8. Okt 2007 16:06

Re: Default - Wert einer Spalte aus leerer Tabelle auslesen
 
Sollte über die SYSTEM-Tabellen möglich sein.

SQL-Code:
Select
    RDB$DEFAULT_VALUE
from
    RDB$RELATION_FIELDS
where
    RDB$FIELD_NAME = :Feld and RDB$RELATIOn_NAME = :Tabelle and RDB$SYSTEM_FLAG = 0;
Warum brauchst du die Default-Werte?

pronny31 8. Okt 2007 19:23

Re: Default - Wert einer Spalte aus leerer Tabelle auslesen
 
Danke für die Hilfe!
Ich brauche das ganze für ein Update einer Datenbank im laufenden Betrieb !
....
Ich will die Felder und ihre Eigenschaften (Default value ...., Feldtyp....usw.)ermitteln und anschließend mit der durch ein Update
veränderten Tabellenstruktur vergleichen und eben nur bei Bedarf eine Update durchführen( z.B. Default-Wert hat sich geändert) .
Mein Problem ist jetzt eigentlich nur noch das ich diesen Default - Value in einfacher Form von Blob und und den eigentlichen Wert z.b 0 oder NULL oder was weiss ich ... bekomme ich nicht raus und das heißt das mein Update so wie ich mir das vorstelle nicht funktioniert !
Eventuell kannst mir ja noch einen Tip geben, wie ich zu den Ausdruck den du mir gegeben hast den Wert in Textform bekomme ?

Vielen Dank nochmal !!

mkinzler 8. Okt 2007 19:29

Re: Default - Wert einer Spalte aus leerer Tabelle auslesen
 
Schau dir auch mal das Feld RDB$DEFAULT_SOURCE an

Hansa 8. Okt 2007 19:30

Re: Default - Wert einer Spalte aus leerer Tabelle auslesen
 
Zitat:

Zitat von pronny31
..und den eigentlichen Wert z.b 0 oder NULL oder was weiss ich ...

NULL und die Zahl 0 ist gerade in diesem Fall ein gewaltiger Unterschied ! Default greift nur bei NULL. :warn:

pronny31 8. Okt 2007 19:32

Re: Default - Wert einer Spalte aus leerer Tabelle auslesen
 
Danke des wars !
Ich habe daran jetzt fast 2 Tage verbracht und mich entschlossen hier mal die Frage zu stellen !
Ich bin begeistert wie schnell das ging Danke !!!

hoika 8. Okt 2007 19:38

Re: Default - Wert einer Spalte aus leerer Tabelle auslesen
 
Hallo,

ich würde das anders machen.
Definiere eine Zahl (DB-Nummer) in der DB (Generator oder Tabelle mit einer Zeile).

Bei jedem Update wird die Zahl erhöht

also

101: Feld Name2 in Tabelle Personal anlegen
102: Index in Tabelle XXX anlegen

Du selber weisst also, welche Nummer,
welches Update bedeutet.

Deine Update-Routine liest die aktuelle DBId aus,
führt die notwendigen Updates aus
und erhöht die DBId.

Alles in einer Transaktion.


Heiko

pronny31 8. Okt 2007 20:42

Re: Default - Wert einer Spalte aus leerer Tabelle auslesen
 
Was ist am folgenden Statement falsch ?

(Q1,'Select RDB$FIELD_NAME,RDB$FIELD_Precison,RDB$Field_Scale, RDB$Field_Type FROM RDB$RELATION_FIELDS where RDB$FIELD_NAME ='+'SpaltenName'+' and RDB$RELATION_NAME = '+'TabellenName'+' and RDB$SYSTEM_FLAG ='+'0');

Nach anschließenden Q1.FieldByName('RDB$FIELD_NAME').ASString kommt eine Fehlermeldung das er das Feld nicht finden kann ?

Woran kann das liegen ?
Im IB Expert wird das SQL Statement ausgeführt und zeigt keinen Fehler :

"

Select
RDB$DEFAULT_VALUE, RDB$DEFAULT_Source,RDB$Field_Name
from
RDB$RELATION_FIELDS
where
RDB$FIELD_NAME = 'SPALTENNAME' and RDB$RELATIOn_NAME = 'TabellenName' and RDB$SYSTEM_FLAG = 0;

"

mkinzler 8. Okt 2007 20:45

Re: Default - Wert einer Spalte aus leerer Tabelle auslesen
 
Versuch es mal anhand der Position bzw. lass dir mal die Spaltennamen anzeigen. ich vermure mal das die Felder anders heißen (eventuell ohne $)

pronny31 8. Okt 2007 20:49

Re: Default - Wert einer Spalte aus leerer Tabelle auslesen
 
Im IB Expert werden die Spaltenname wie im Statement angezeigt !

z.b. RDB$Field_Name .....


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:13 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz