Frage zu Datenbanken mit MFC und Access
-
Hallo,
ich habe mal wieder eine Frage zu Datenbanken...
ich wollte gerne wissen, ob man mit VC++ bei einer Datenbank eine neue Tabelle einrichten kann. Also z.B. ich habe ein Prgramm, das über Nacht läuft. Am nächsten Tag sollte ein neues Datenblatt eingerichtet werden mit dem Namen des aktuellen Datums und 7 Spalten (ID, Datum,...) - geht das von außerhalb? Oder muss ich alle Tabellen mit Access anlegen?mfg Markus
-
Ich habe einmal das gleiche gemacht.
einfach ein leere DB in sicheren Platz legen .und beim start dein Tool copy sie in dein aktuellen verzeichnis
-
Mit CDatabase kannst du direkt einen SQL Befehl ausführen.
Und ein Create Table sollte da schon reichen.
-
Hallo,
also leider leite ich von CRecordset (standard SDI-Anwendung) ab und nicht von CDatabase. Also gibt es auch mit CRecordset Möglichkeiten, diesen SQL-Befehl auszuführen?
Danke nochmals für die Hilfe!
mfg Markus
-
Hallo,
ich habe eine Teillösung gefunden:
CDaoDatabase* m_daoDatabase = new CDaoDatabase(); CString SqlCmd1 = "CREATE Table " + m_sDATABASEnum + "(Nummer NUMBER, Datum CHAR(255), Status CHAR(255))"; m_daoDatabase->Open("C:\\Database\\Database.mdb"); m_daoDatabase->Execute(SqlCmd1); m_daoDatabase->Close(); delete m_daoDatabase; m_daoDatabase = 0;Hierzu habe ich drei Fragen: erstmals:
Erstens: Wie kann man "Nummer" zu einem Autowert machen? (Wie in Access)
Zweitens: Kann man überprüfen, ob die Tabelle schon vorhanden ist? Geht das mit SQL oder mit CRecordset oder mit CDatabase oder wie? (Nämlich wenn es schon vorhanden ist, möchte ich nicht ein neues erschaffen und es gibt immer eine Fehlermeldung...)
Drittens: Geht es mit CDatabase besser?Danke nochmals für eure Hilfe!

-
Du kannst dir die Datenbank auch vom Recordset geben lassen, das hat ne Membervariable dafür.

Wenn du ein select auf eine nicht vorhandene Tabelle machst... was passiert?

Falls du dich öfters mit SQL beschäftigst, kann ich dir dieses Buch empfehlen:
SQL | ISBN: 3827319900
Da steht das wichtigste für Access, MS SQL Server, Oracle und MySQL drin. Und es ist billig!
Ich lege es nie weit weg.
Da drin findest du auf Seite 83, wie man in Access eine neue Tabelle anlegt.
Auf jeden Fall hast du wohl den Primärschlüssel vergessen:CString SqlCmd1 = "CREATE Table " + m_sDATABASEnum + "(Nummer NUMBER, Datum CHAR(255), Status CHAR(255), constraint " + m_sDATABASEnum + "_pk primary key (Nummer))";Ich fürchte aber, dass da das Autoincrement nicht inklusive ist, aber das habe ich nur im MySQL Abschnitt gefunden.

Kannst ja mal versuchen, ob es klappt:CString SqlCmd1 = "CREATE Table " + m_sDATABASEnum + "(Nummer NUMBER not null auto_increment, Datum CHAR(255), Status CHAR(255), constraint " + m_sDATABASEnum + "_pk primary key (Nummer))";Außerdem hat mich iritiert, dass das Access NUMBER kennt. Laut Buch ist das ein Oracle-Typ.
