Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Field exists (https://www.delphipraxis.net/183214-field-exists.html)

Perlsau 21. Dez 2014 13:41

AW: Field exists
 
Solche Sachen hab ich immer im Datenmodul: Liste der verfügbaren Tabellen ermitteln, Liste der Feldnamen der jeweiligen Tabelle und sonstige wichtige Daten über die jeweilige Tabelle. Wenn ich richtig gelesen habe, kann doch XE5 schon FireDac, und damit kann man doch dann alle DBMS connecten, oder? Dann bräuchte man ja keine Fremdkomponenten mehr. GetTableNames, GetFieldNames und GetProcedureNames würden dann doch immer funktionieren, egal welches DBMS, oder nicht? (hab ja "nur" 2009).

joehd 3. Feb 2019 17:26

AW: Field exists und ergänzen
 
Der Thread ist zwar schon älter aber als er mir keine Antwort gab dachte ich dann gebe ich hier mal eine Antwort die ich erarbeitet habe.

Als Tabelle übergebe ich ein ein TTable das funktioniert prima :-)
Auf dem Form benötigt man dann natürlich ein TScript
Benutzen tue ich den Code bei Firebird.
Viel Spaß

Code:
Function tsqldbform.Checkdatab_field(Tabelle:Tdataset;Tabname:String;Feldname:String;feldtyp:String):Boolean;
var _feldtyp :tfieldtype;
    sqlbastel : String;
    findres  : Integer;
    findfield : Tfield;

Begin
  // schauen ob das Datenfeld existiert
 findfield := Tabelle.FindField(UPPERCASE(Feldname));

   if findfield = nil then
     begin
      showmessage('Datenbank Feld:'+Feldname + ' nicht vorhanden ! / Wird erzeugt ! ');
      sqlbastel := 'alter table ' + Trim(Tabname) +  ' add ' + Trim(UPPERCASE(Feldname)) + ' ' + Trim(UPPERCASE(Feldtyp)) +';';

      ibscript1.Transaction.Active := true;
      ibscript1.Script.Text := sqlbastel;
      // Tabelle.SQL.add(sqlbastel);
      ibscript1.ExecuteScript; // Open ; //  ExecSQL;  // SQL.BeginUpdate;

      // ibscript1.Script.Clear; //  SQL.Clear;
      ibmaintransaction.CommitRetaining;
      showmessage(ibScript1.Script.Text );

     end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:03 Uhr.
Seite 2 von 2     12   

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