![]() |
Feld einfügen
Ich hab da mal wieder ein hübsches problemchen..
Datenbank in Paradox.. Bei mehreren hundert Kunden schon im Einsatz.. Und jetzt.. Ich muss ein neues Feld in die bei den Kunden bereits bestehenden Datenbanken einfügen. Wie mach ich das? mit if not Assigned (tblAdressen.FindField('NEW_FIELD')) mach ich die Abfrage... und das funktioniert.. :wiejetzt: Und wie weiter? ich möcht ja jetzt das NEW_FIELD in der Tabelle anfügen. Danke für eure Hilfe |
Re: Feld einfügen
...schau dir mal den sql-begriff "alter table" an, damit kann man die struktur ändern!
gruß rené |
Re: Feld einfügen
Hallo Eggimaa,
ich glaube, das wurde hier schon mehrfach diskutiert. Ich nutze dazu eine kleine Prozedur:
Code:
mfg
procedure TFAllgUP.AppFld(tab : TTable; fldname : string; fldtyp : TFieldType; fldsize : integer);
var i:Integer; alterTabellenName:String; ztab, qtab : TTable; begin tab.Active := false; qtab := TTable.Create(self); ztab := TTable.Create(self); try qtab.DatabaseName := tab.DatabaseName; qtab.TableName := tab.TableName; qtab.SessionName := SessN; qtab.Active := true; ztab.DatabaseName := tab.DatabaseName; ztab.SessionName := SessN; ztab.TableType := ttParadox; ztab.TableName := '_tmp_' + tab.TableName; ztab.FieldDefs.Clear; for i:=0 to qTab.Fields.Count-1 do //Tabellenstruktur übernehmen ztab.FieldDefs.Add( qTab.Fields[i].FullName, qTab.Fields[i].DataType, qTab.Fields[i].Size, qTab.Fields[i].Required); //neue Felder hinzufügen ztab.FieldDefs.Add(fldname, fldtyp, fldsize, false); ztab.CreateTable; qtab.Active:=false; ztab.Active:=false; Batchmove1.Mode:=batAppend; i := Batchmove1.RecordCount; Batchmove1.Source := qtab; Batchmove1.Destination := ztab; Batchmove1.Execute; alterTabellenName:=qTab.TableName; s := qtab.SessionName; if ztab.SessionName <> s then begin if (FindComponent(ztab.SessionName) is TSession) then TSession(FindComponent(ztab.SessionName)).Active := false; end; if (FindComponent(s) is TSession) then begin TSession(FindComponent(s)).Active := false; end; qTab.DeleteTable; ztab.RenameTable(alterTabellenName); ztab.Active:=False; finally; //wird auf jeden Fall ausgeführt, auch bei exit qtab.Close; ztab.Close; qtab.Destroy; ztab.Destroy; end; end; eddy |
Re: Feld einfügen
hi eddy..
danke erst mal.. woher krieg ich SessN ? |
Re: Feld einfügen
Hallo Eggimaa,
globale Variable const SessN : string = 'session1_1'; setzt ein Objekt vom Typ TSession voraus. Du kannst aber auch einfach nur SessN := '' setzen bzw. die Zeilen mit ".SessionName := " ausdokumentieren. mfg eddy |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 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