AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Default - Wert einer Spalte aus leerer Tabelle auslesen !!!
Thema durchsuchen
Ansicht
Themen-Optionen

Default - Wert einer Spalte aus leerer Tabelle auslesen !!!

Ein Thema von pronny31 · begonnen am 8. Okt 2007 · letzter Beitrag vom 8. Okt 2007
Antwort Antwort
Seite 1 von 2  1 2      
pronny31

Registriert seit: 8. Okt 2007
97 Beiträge
 
#1

Default - Wert einer Spalte aus leerer Tabelle auslesen !!!

  Alt 8. Okt 2007, 15:40
Datenbank: Firebird • Version: 2.0 • Zugriff über: ODBC
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 ?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Default - Wert einer Spalte aus leerer Tabelle auslesen

  Alt 8. Okt 2007, 16:06
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?
Markus Kinzler
  Mit Zitat antworten Zitat
pronny31

Registriert seit: 8. Okt 2007
97 Beiträge
 
#3

Re: Default - Wert einer Spalte aus leerer Tabelle auslesen

  Alt 8. Okt 2007, 19:23
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 !!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Default - Wert einer Spalte aus leerer Tabelle auslesen

  Alt 8. Okt 2007, 19:29
Schau dir auch mal das Feld RDB$DEFAULT_SOURCE an
Markus Kinzler
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5

Re: Default - Wert einer Spalte aus leerer Tabelle auslesen

  Alt 8. Okt 2007, 19:30
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.
Gruß
Hansa
  Mit Zitat antworten Zitat
pronny31

Registriert seit: 8. Okt 2007
97 Beiträge
 
#6

Re: Default - Wert einer Spalte aus leerer Tabelle auslesen

  Alt 8. Okt 2007, 19:32
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 !!!
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Default - Wert einer Spalte aus leerer Tabelle auslesen

  Alt 8. Okt 2007, 19:38
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
Heiko
  Mit Zitat antworten Zitat
pronny31

Registriert seit: 8. Okt 2007
97 Beiträge
 
#8

Re: Default - Wert einer Spalte aus leerer Tabelle auslesen

  Alt 8. Okt 2007, 20:42
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;

"
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Default - Wert einer Spalte aus leerer Tabelle auslesen

  Alt 8. Okt 2007, 20:45
Versuch es mal anhand der Position bzw. lass dir mal die Spaltennamen anzeigen. ich vermure mal das die Felder anders heißen (eventuell ohne $)
Markus Kinzler
  Mit Zitat antworten Zitat
pronny31

Registriert seit: 8. Okt 2007
97 Beiträge
 
#10

Re: Default - Wert einer Spalte aus leerer Tabelle auslesen

  Alt 8. Okt 2007, 20:49
Im IB Expert werden die Spaltenname wie im Statement angezeigt !

z.b. RDB$Field_Name .....
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:04 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