Entwickler-Ecke

Datenbanken - Paradox-Tabellen: Feldnamen umbenennen


jjturbo - Fr 11.03.11 11:15
Titel: Paradox-Tabellen: Feldnamen umbenennen
Moin Forum,

ich möchte mit der BDE bei Paradox-Tabellen Feldnamen umbenennen.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm10.Button2Click(Sender: TObject);
var myQuery    :TQuery;
    SQLText    :String;
begin

  myQuery              := TQuery.Create(nil);
  myQuery.DatabaseName := ExtractFilePath(ParamStr(0));

  SQLText := 'ALTER TABLE ' + Tabellenname + UMBENNEN Altername NeuerName';

  myQuery.SQL.SetText(Pchar(SQLText));
  myQuery.ExecSQL;
  myQuery.Active := false;

  myQuery.Free;

end;


Weiß jemand wie das SQL-Statemnet dafür aussehen muß?
Oder gibt es einen anderen Weg?

Gruß, Oliver


jaenicke - Fr 11.03.11 11:24

Per SQL geht das mit der BDE soweit ich weiß gar nicht. Nur via API mit dbiDoRestructure. Aber frag mich nicht wie...


Xion - Fr 11.03.11 11:29

Probiers mal so:

tutorials.de [http://www.tutorials.de/relationale-datenbanksysteme/311111-mssql-spalte-umbenennen.html] hat folgendes geschrieben:


SQL-Anweisung
1:
alter table test rename column SPALTE_alt to SPALTE_neu;                    


Alternativ könntest du natürlich auch in deinem Programm die Namen zuordnen. Du nummerierst die Felder in der DB einfach durch, und bei der Anzeige packst du dann deinen Namen dazu (diese Tabelle könnte man wiederum in der DB speichern ;) )


Klabautermann - Fr 11.03.11 11:29

Hallo,

normalerweise müsste das in etwa so aussehen

SQL-Anweisung
1:
ALTER TABLE tablename RENAME COLUMN oldname TO newname                    

Ich meine mich aber zu erinnern, dass Paradox bei ALTER TABLE leider nur ADD COLUMN und DROP COLUMN unterstütze. Wenn ich da richtig liege musst du dir mit diesen Möglichkeiten etwas zusammen bauen.

Also:
  1. Neue Spalte mit dem gewünschten neuen Namen hinzufügen.
  2. Daten von der alten Spalte in die neue kopieren.
  3. Alte Spalte löschen


Die Vorgehensweise ist zwar lästig, sollte aber funktionieren und soo oft sollte die entsprechende Funktion ja nicht zum Einsatz kommen.

Gruß
Klabautermann


jjturbo - Fr 11.03.11 11:44

Schaut mal:

http://info.borland.com/devsupport/bde/bdeapiex/dbidorestructure.html
(Beispiel 3)

das ist ja das was suche, oder?
Es scheitert bei mir unter anderen an "DBINAME" und "CURProps". Weiß jemand wo diese deklariert sind?


Xion - Fr 11.03.11 11:49

torry [http://www.swissdelphicenter.ch/torry/showcode.php?id=1277] hat folgendes geschrieben:

Delphi-Quelltext
1:
2:
uses
  {...,}DB, DBTables, DBITypes, DBIProcs;


jjturbo - Fr 11.03.11 12:19

Jau, hat geklappt, danke an alle! :)