Tabellenstruktur/Felder mit NexusDB nachträglich anpassen

Oft ergibt sich die Anforderung eine Tabellenstruktur nachträglich anzupassen. Die Gründe dafür sind unterschiedlich, in meinen Fall, weil schon eine Tabelle vorliegt, diese aber feingetunt werden soll, ohne komplett neu zu erstellen.

Unabhängig vom Beispiel davon zeigt es die grundsätzliche Vorgehensweise, wie man nachträglich sehr schnell und komfortabel mit NexusDB Anpassungen an Tabellen vornehmen kann, ohne dabei auf SQL zurückgreifen zu müssen.

In folgenden Beispiel bekommen alle Felder vom Typ Int32 und Double einen Defaulthandler zugewiesen, d.h. in diesem Fall: wann immer ein Datensatz angehängt wird, ist der Default-Wert für diese Felder 0.

NexusDB kennt dabei weitere DefaultHandler, z.B. zum automatischen Erzeugen von Guid-Werten oder z.B. zum automatischen Einfügen von Datumswerten in entsprechenden Feldern, wahlweise beim Neuinfügen oder beim Editieren eines Datensatzes (oder beides).

Procedure RestructureTable;
var
NewDict, Dict: TnxDataDictionary;
TaskInfo: TnxAbstractTaskInfo;
Completed: Boolean;
TableMapper: TnxTableMapperDescriptor;
TaskStatus: TnxTaskStatus;
TableList: TStringList;
zaehler,  z: Integer;
FIndex: Integer;
FType: TnxFieldType;

begin
// nimmt Liste aller Tabellen einer Datenbank auf
TableList := TStringList.Create;
//ermittelt Liste aller Tabellen
datenbox.NexusDBDatabase.GetTableNames(TableList);
// Schleife über alle Tabellen
for zaehler := 0 to tableList.Count – 1 do
begin
if TableList.Strings[zaehler] <> “ then   //zur Sicherheit
begin
// DataDictionary unserer DB erzeugen
Dict := TnxDataDictionary.Create;
TableMapper := TnxTableMapperDescriptor.Create;
// hole alte Dictionary für die aktuelle Tabelle in der Schleife
datenbox.NexusDBDatabase.GetDataDictionary(TableList.Strings[zaehler], “, Dict);
// Eine neue auf Basis des alten Dictionary erzeugen
NewDict := TnxDataDictionary.Create;
try
NewDict.Assign(Dict) ;
for z := 0 to newDict.FieldsDescriptor.FieldCount – 1 do    // durch alle Felder laufen
begin
FType := newDict.FieldsDescriptor.FieldDescriptor[z].fdtype;   // Feldtyp ermitteln
if (FType = nxtInt32) or (FType = nxtDouble) then                // wenn unser gewünschter Feldtyp, dann
begin
// Defaulthandler zuweisen für das Feld, für weitere Defaulthandler siehe NexusDB – Hilfe
with newDict.FieldsDescriptor.FieldDescriptor[z].AddDefaultValue(TnxConstDefaultValueDescriptor) as
TnxConstDefaultValueDescriptor do
AsVariant := 0;
end;
end;
// folgendes führt die Änderung an der Tabellenstruktur durch
TableMapper.MapAllTablesAndFieldsByName(Dict, NewDict);
nxCheck(datenbox.NexusDBDatabase.RestructureTableEx(TableList.Strings[zaehler],“, NewDict, TableMapper,     TaskInfo));
try
if Assigned(TaskInfo) then
begin
repeat
TaskInfo.GetStatus(Completed, TaskStatus);
if not Completed then
Sleep(500)
until Completed;
nxCheck(TaskStatus.tsErrorCode);
end;
finally
if Assigned(TaskInfo) then
TaskInfo.Free;
end;
finally
Dict.Free;
TableMapper.Free;
NewDict.free;
end;
end;
end;
tablelist.Free;

Werbung

Aktuelle Top Aktionen bei Acer, HP, Lenovo, Bitdefender & Co

Angebote bei Acer
» Geniale Acer Cyber Days: Bis zu 15% Rabatt bei den Acer Cyberdays, dem größten Sale des Jahres im deutschen Acer Store. Viele Top Geräte dabei!
» Acer Spezialangebote:Rabatt und Extras auf viele Acer Notebooks, Convertibles, Gaming Notebooks und PC, Monitore und mehr


Angebote bei HP
» HP Black Friday Countdown: Jeden Tag eine neues Angebot hier zu entdecken

Angebote bei Lenovo
» Lenovo Top Wochenangebote: Heiße ThinkPad und IdeaPad Wochenangebote mit großer Auswahl und dicken Rabatten


Weitere interessante Angebote

» Top bei Otto: Sehr gute HP Notebook Angebote, teils mit Extras wie 4 Jahre Garantie und mehr
» Mehr Aktionen in der Übersicht: Aktuelle HP Angebote und mehr auf einem Blick


Aktuelle Bitdefender Aktionen:

» Bitdefender „Schulstart“ Angebot mit bis zu 44% Rabatt
» Bitdefender +1 Jahr dazu-Aktion
» Top für neue PCs! Bitdefender AntiVirus Plus Lebenslang Edition: 5 Jahre Schutz für nur für nur 89,95
Weitere aktuelle Bitdefender Angebote
» Alle Bitdefender Angebote auf einem Blick


WebSite X5 Angebote:
» 30% Rabatt auf WebSite X5 Evolution
» 30% Rabatt auf WebSite x5 Professional.
Beide jeweils inklusive 12 Monate Update Protection! Angebot läuft bis 07.01.2019.

Werbung

Notebooksbilliger: Leistungsstarke PCs


Verwandte Themen:


Sorry! Unser Kommentarfunktion ist vorübergehend geschlossen.