AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi [SQL] Feststellen, ob Feld existiert
Thema durchsuchen
Ansicht
Themen-Optionen

[SQL] Feststellen, ob Feld existiert

Ein Thema von FBrust · begonnen am 20. Jan 2006 · letzter Beitrag vom 20. Jan 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
654 Beiträge
 
Delphi 10.4 Sydney
 
#1

[SQL] Feststellen, ob Feld existiert

  Alt 20. Jan 2006, 09:48
Datenbank: Firebird • Version: 1.5.2 • Zugriff über: Zeos 6.5.1
Hallo,

in diesem Thread wurde erläutert, wie man mit Delphi feststellt, ob ein Feld in einer Datenbanktabelle existiert.

Ich füge neue Felder über SQL-Skripte hinzu und wollte deshalb die Prüfung, ob ein Feld bereits existiert, in das SQL-Skript auslagern.

Weiß jemand, wie man mit SQL feststellt, ob ein Feld existiert?


Gruß
Frank
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: [SQL] Feststellen, ob Feld existiert

  Alt 20. Jan 2006, 09:57
Ist einfach mit Hilfe der SYSTEM-Tabellen lösbar:

select RDB$FIELD_NAME from RDB$RELATION_FIELDS where RDB$RELATION_NAME = <Tabellenname>; Lefert alle Felder einet Tabelle
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
654 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: [SQL] Feststellen, ob Feld existiert

  Alt 20. Jan 2006, 10:00
Super, danke !
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty
  Mit Zitat antworten Zitat
Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
654 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: [SQL] Feststellen, ob Feld existiert

  Alt 20. Jan 2006, 14:11
Hmm,

schön und gut, dann erhalte ich eine Liste, die ich wieder durchsuchen muss.

Gibt es keinen direkteren Weg?

Mit
SQL-Code:
SQL.Text := 'SELECT COUNT (*) AS RECCOUNT FROM RDB$RELATIONS R ' +
            'WHERE R.RDB$RELATION_NAME = ' + QuotedStr(strTable);
kann ich feststellen, ob eine bestimmte Tabelle existiert und erhalte eine Integerwert der entweder 0 oder 1 enthält.

Sowas suche ich für ein einzelnes Feld in einer Tabelle.


Gruß
Frank
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty
  Mit Zitat antworten Zitat
dfried

Registriert seit: 16. Aug 2005
486 Beiträge
 
#5

Re: [SQL] Feststellen, ob Feld existiert

  Alt 20. Jan 2006, 14:21
Na dann mach halt einfach noch eine AND-Bedingung hinten dran!

SQL-Code:
     select count(*) from RDB$RELATION_FIELDS
     where RDB$RELATION_NAME = <Tabellenname>
     and RDB$FIELD_NAME = <Feldname>;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: [SQL] Feststellen, ob Feld existiert

  Alt 20. Jan 2006, 14:38
oder das Alter-Skript erweitern in z.B.
SQL-Code:
Alter table <tabellenname>' add ... where not exists (select RDB$FIELD_NAME from RDB$RELATION_FIELDS
where RDB$RELATION_NAME = <Tabellenname>
and RDB$FIELD_NAME = <Feldname>);
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
654 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: [SQL] Feststellen, ob Feld existiert

  Alt 20. Jan 2006, 14:39
Hallo,

funktioniert leider nicht mit

SQL-Code:
            SQL.Text := 'select count(*) from RDB$RELATION_FIELDS ' +
                        'WHERE (R.RDB$RELATION_NAME = ' + QuotedStr(strTable) +
                        ') AND (R.RDB$FIELDNAME = ' + QuotedStr(strField) + ')';
Die Fehlermeldung lautet: "Column does not belong to referenced table".



Gruß
Frank
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: [SQL] Feststellen, ob Feld existiert

  Alt 20. Jan 2006, 14:46
Zitat von FBrust:
Hallo,

funktioniert leider nicht mit

SQL-Code:
            SQL.Text := 'select count(*) from RDB$RELATION_FIELDS ' +
                        'WHERE (R.RDB$RELATION_NAME = ' + QuotedStr(strTable) +
                        ') AND (R.RDB$FIELDNAME = ' + QuotedStr(strField) + ')';
Die Fehlermeldung lautet: "Column does not belong to referenced table".



Gruß
Frank
Es fehlt der ALIAS R beim Tabellenname RDB$RELATION_FIELDS
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
654 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: [SQL] Feststellen, ob Feld existiert

  Alt 20. Jan 2006, 14:50
So,

habs auch mit dem Vorschlag von mkinzler ausprobiert, allerdings scheint Firebird das where nicht so recht zu mögen.

Bei Ausführen von
SQL-Code:
ALTER TABLE TBLIPMAIN
ADD INTSCANID INTEGER
where not exists (select RDB$FIELD_NAME from RDB$RELATION_FIELDS
     where RDB$RELATION_NAME = TBLIPMAIN
     and RDB$FIELD_NAME = INTSCANID);
kommt die Fehlermeldung "Invalid token: where" .


Gruß
Frank
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty
  Mit Zitat antworten Zitat
Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
654 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: [SQL] Feststellen, ob Feld existiert

  Alt 20. Jan 2006, 14:54
Hallo,

Zitat von mkinzler:
Es fehlt der ALIAS R beim Tabellenname RDB$RELATION_FIELDS

Stimmt, danke für den Hinweis, kommt aber die gleiche Fehlermeldung ("Column does not belong to referenced table").



Gruß
Frank
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty
  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 13:56 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