AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi In einer Existierenden Firebird Table ein feld ergänzen

In einer Existierenden Firebird Table ein feld ergänzen

Ein Thema von joehd1 · begonnen am 17. Sep 2011 · letzter Beitrag vom 18. Sep 2011
 
joehd1

Registriert seit: 31. Jul 2010
Ort: Heidelberg
3 Beiträge
 
Delphi 2007 Professional
 
#1

In einer Existierenden Firebird Table ein feld ergänzen

  Alt 17. Sep 2011, 00:28
Datenbank: Firebird • Version: 2.5 • Zugriff über: IBQUERY
Hallo
Also meine Idee ist ich möchte schauen ob meine SQl Tabellen auch alle Felder haben

Da hatte ich folgende Idee

Ich schreibe einen Funktion mit folgendem Inhalt
Code:
Function tsqldbform.Checkdatab_field(Tabelle:TIBQuery;Tabname:String;Feldname:String;feldtyp:String;Feldsize:integer;notwendig:Boolean):Boolean;
var _feldtyp :tfieldtype;
    sqlbastel : String;
Begin
   if Feldtyp = 'Integer'  then _feldtyp := ftInteger;
   if Feldtyp = 'String'   then _feldtyp := ftString;
   if Feldtyp = 'Boolean'  then _feldtyp := ftBoolean;
   if Feldtyp = 'TimeStamp' then _feldtyp := ftdatetime;
   if Feldtyp = 'Unbekannt' then _feldtyp := ftunknown;
   if Feldtyp = 'Float'    then _feldtyp := ftfloat ;


// Das ist meine neue Check routine aber hat ja nix mit dem Fehler zu tun
  if Tabelle.FindField(Feldname)=nil then
     begin
      Showmessage('Feld nicht vorhanden !');
     end;
 try

  // schauen nach dem Typ des Feldes mit dem Feldnamen Feldname
 if  tabelle.FieldDefs.Find(Feldname).DataType = _feldtyp then
      Result := true;
 Except
  on EDatabaseError do
  Begin // Das Datenbankfeld neu erzeugen
      showmessage('Datenbank Feld:'+Feldname + ' nicht vorhanden ! / Wird erzeugt ! ');
      tabelle.FieldDefs.Add(Feldname,_feldtyp,feldsize,notwendig);
      sqlbastel := 'alter table ' + Trim(Tabname) +  ' add ' + Trim(Feldname) + ' ' + Trim(Feldtyp);
      Tabelle.SQL.Text := sqlbastel; // Hier kommt dann der Fehler ! :-( 
      Tabelle.ExecSQL; // 
      TAbelle.SQL.Clear;
      ibmaintransaction.CommitRetaining;
   end;
So nun kommt beim SQL Monitor folgendes

00:06:05 |
[Application: test ]
testtabelle: [Execute] alter table TEST add FELD4 Integer

00:06:05 |
[Application: test ]
[Error] -607 335544351 unsuccessful metadata update
STORE RDB$RELATION_FIELDS failed


Ich gehe davon aus das der SQl String stimmt a sieht er hier gut aus und wenn ich ihn in interbase Konsole eingebe dann geht er auch !

Aber was ist falsch ... das ich die Prüfung auf exist des Feldes besser machen kann ist mir bekannt. Aber daran liegt es ja nicht

Kann mir jemand helfen ?
  Mit Zitat antworten Zitat
 

 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 11:14 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 by Thomas Breitkreuz