![]() |
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 ? |
Re: Default - Wert einer Spalte aus leerer Tabelle auslesen
Sollte über die SYSTEM-Tabellen möglich sein.
SQL-Code:
Warum brauchst du die Default-Werte?
Select
RDB$DEFAULT_VALUE from RDB$RELATION_FIELDS where RDB$FIELD_NAME = :Feld and RDB$RELATIOn_NAME = :Tabelle and RDB$SYSTEM_FLAG = 0; |
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 !! |
Re: Default - Wert einer Spalte aus leerer Tabelle auslesen
Schau dir auch mal das Feld RDB$DEFAULT_SOURCE an
|
Re: Default - Wert einer Spalte aus leerer Tabelle auslesen
Zitat:
|
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 !!! |
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 |
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; " |
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 $)
|
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. |
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