![]() |
Feld in Paradox-Tabelle vorne einfügen ! Möglich ??
Hey, hab wieder mal ein Problem. Ich habe in meiner Datenbankanwendung vor, ein Schlüsselfeld an den Anfang einer jeden Tabelle zu stellen. Dies wäre mir sehr wichtig, da ich damit eine Menge Entwicklungsarbeit einsparen kann. Wie kann ich das tun bzw. kann man das überhaupt ? :?: :|
Ich habe bisher nur Felder angehängt:
Code:
Ach ja, es handelt sich um eine Paradox Datenbank auf die ich über die BDE zugreife.
ALTER TABLE Uebungen ADD UebRegNameSpace CHARACTER(20)
Hilfe wäre echt super... grüsse hacki |
Hallo Hacki,
wenn du die Tabelle hast, bzw. vom Kunden bekommen kannst, wäre es am einfachsten, diese Änderung direkt mit der Datenbankoberfläche durchzuführen. Dazu wählst du Tools | Tabellenoperation... | Umstrukturieren, wählst die Tabelle, fügst das Feld ans Ende hinzu und verschiebst es mit der Maus einfach an den Anfang. Anschließend kannst du dann noch einen Index erstellen. |
Hallo MrSpock,
das ist hier leider nicht möglich. Das Programm, um das es sich handelt ist vielfach im Einsatz. Es handelt sich dabei um Übungssammlungen für Volleyballtrainer. Nun interessieren sich aber auch andere Sportarten für das Programm und ich muß in die Übungsdatenbank vorne weg ein Schlüsselfeld haben, über den ich die jeweilige Sportart filtern kann. So ist es möglich immer das gleiche Programm zu verwenden und den Filter entsprechend zu setzen, je nachdem mit welchen Sportart man gerade arbeitet (ein Anwender könnte mehrere Sportarten verwenden, z.b. Sportlehrer). Wenn das Tool es kann, müßte es doch auch so gehen, ein Feld anzufügen und später nach vorne zu schieben, oder ? grüsse Hacki |
Hallo Hacki,
möglicherweise funktioniert es mit einem direkten DBI... Funktionsaufruf aus der Unit BDE, aber da bin ich mir nicht sicher. Eine Alternative wäre folgendes. Du erstellst die neue Tabelle, mit dem neuen Feld am Anfang und allen Indices, dann benutzt du BatchMove, um die Daten der alten Tabelle in die neue Tabelle zu schieben. Anschließend benutzt du die Methode RenameTable, um die alte Tabelle umzubenennen und der neuen Tabelle wieder den gewohnten Namen zu geben, damit andere Programme korrekt darauf zugreifen. Damit alle Felder der alten an die korrekte Stelle geschoben werden, füllst du einfach das Mapping Array der BatchMove Komponente aus. |
Hallo MrSpock,
ich habe das mit dem BatchMove mal ausprobiert. BatchMove bricht da ab bzw. läuft auf einen Fehler, wo die Feldertypen nicht übereinstimmen. Wenn ich ein neues Feld vorne weg stelle, läuft BatchMove also sofort auf einen Fehler und nichts passiert. BatchMove bricht mit einer Exception EInOutError ab (I/O Error 123). Kann man da etwas tun ? Was hat es mit dem Mapping auf sich ? danke und viele grüsse hacki |
Hallo MrSpock,
nun hab ich's. Das Mapping war der Schlüssel. Damit kann ich die Feldnamen mappen, sodaß kein Fehler mehr auftritt. Super. Die Kopiermethode ist echt klasse. :dancer: Danke für die Hilfe :witch: :party: hacki |
Hallo Hacki,
ich finde die Batchmove Komponente auch sehr nützlich. Sie ist leicht zu bedienen und kann auch benutzt werden, um Tabellen in ein anderes Format zu konvertieren. Das Mapping Array fülle ich in Situationen, wie du sie beschrieben hast, automatisch in einer Schleife über alle Feldnamen, dann vermeidet man Schreibfehler. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:12 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