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;