Access DB
-
Gruß an alle Leser
Frage: Kann man aus dem MFC-Programm heraus den Namen einer Spalte im Access ändern.

( CRecordset bzw. komplette Datenbankanbindung steht und funzt )
Und wenn ja, wie???Das ich vielleicht ein Eingabefeld baue, User gibt ein, und bei OnApply soll der Spaltenname so heißen wie der User möchte!
Vielen Dank für Tipps!
MfG
RunSeb
-
Zu weiteren Nachforschungen fällt mir nur Alter Table ein. Es ist ja möglich ein normales SQL Kommando an Access zu senden (über den Datenbankzeiger glaube ich). Also vielleicht kommst du so weiter.
-
Leider funzt Alter table etc. nicht.
Von SQL hab ich leider nicht genug Plan. Verdammt
-
Haat denn keiner eine Ahnung wie ich einen bestimmten Spaltennamen meiner Access-DB im Programm ändern kann??

-
Also zum Verständnis mit CRecordset kommt man nur an die Daten in den Spalten ran - man kann sie editieren und löschen etc. und neue reinschreiben. In der Methode DoFieldExchange werden festgelegt in welchen Spalten welche Daten zufinden sind noch bevor die Daten einer DB ausgelesen werden. Es macht für mich keinen Sinn wenn ein CRecordsetobjekt besteht einen Spaltennamen während der Laufzeit zu ändern. Ist das überhaupt möglich. Es ist nur möglich wenn man die DB nur connected.
Bsp.:
CDatabase db; db.Open("geinf",FALSE,FALSE,_T("ODBC;"),TRUE); // "geinf" ist DSN Name db.ExecuteSQL("ALTER TABLE Einwohner DROP Name"); // Befehl zum Löschen einer Spaltemit ExecuteSQL wird direkt ein SQL Befehl an die ODBC geschickt... obiger Code funzt, habe ich eben getestet.
Ich selbst habe aber Probleme beim Umbenennen;
folgender Befehl sollte umbennen:db.ExecuteSQL("ALTER TABLE Einwohner RENAME Name TO Test"); // Name in Test umbenennenDa das Löschen läuft und ich auch beim Umbenennen in der SQL anweisung keinen Fehler habe, glaube ich das meine ODBC nicht alles annimmt warum??????
Ich habe heraus gefunden, dass RENAME von MYSQL herstammt -> wiso funzt RENAME dann nicht. Kann ich nur bestimmte SQL Standards an die ODBC schicken????
-
Hallo,
pinorrix schrieb:
wiso funzt RENAME dann nicht. Kann ich nur bestimmte SQL Standards an die ODBC schicken????
ACCESS kennt kein Rename, und man kann deshalb nicht über eine SQL-Anweisung Spalten-Namen ändern (es gibt eben nur bestimmte DBMS, die Rename unterstützen). Möglich ist es allerdings durch Verwendung einer anderen Schnittstelle (ODBC reicht nicht), nämlich ADO oder ADOX.
MfG