Während der Laufzeit Tabelle in einer Datenbank wechseln
-
Hallo,
ich habe eine Datenbank (mit Access), in der ich beim Aufruf des Programms anhand des aktuellen Datums ein Datenblatt aurufe. Dies geschieht in der GetDefaultSQL()-Methode. Mein Problem ist, dass ich gerne während der Laufzeit das Datenblatt ändern würde - wie geht das?
Danke schonmal für eure Hilfe!
Mfg Markus
-
Ich habe jetzt nicht ganz durchschaut, was du machen willst.
Aber der Tabellenname ist ein ganz einfacher CString, den du nach Belieben zur Laufzeit ändern kannst.
-
Hallo,
also: Welchen CString sollte ich dann ändern?
mfg Markus
-
Naja, da wird doch eine Zeichenkette zurückgegeben.
Da machst du einfach einen CString rein.So etwa:
CString CBasisSet::GetDefaultSQL() { return m_strTabelle; }Dann noch ne Set-Funktion und fertig.

-
Ich habe das genau so in meiner Anwendung drin (war schon so).
Also: Das Datenblatt wird nur beim Start des Programms auf diese Art und Weise eingebunden. Was ich aber haben möchte, ist, dass ich während der Laufzeit dymnamisch auf ein anderes zugreifen kann. Also möchte ich gerne wissen, ob es eine Set-Methode schon gibt oder wie man diese selbst schreiben kann, dass ich danach auf ein anderes Datenblatt zugreifen kann.Ich hoffe ihr könnt mir helfen!
-
Mach doch mal "Find in Files" und such nach "m_strTabelle = " oder auch nur dem Variablennamen. Dann solltest eine eventuell vorhandene Set-Funktion finden.
Da die MFC englisch sind und "Tabelle" deutsch, kann das nur in deinem Projekt sein.

Im schlimmsten Fall hast du zwei Set-Funktionen.
Wo ich eher Bedenken habe, sind die Spalten. Wenn die sich unterscheiden wird es kniffelig und eine weitere von CRecordset abgeleitete Klasse wäre der einfachere Weg.
-
Die Spalten in den einzelnen Datenblättern sind idendtisch. Also entstehen hierdurch auch keine Probleme. Die Datenbank enthält verschiedene Datenblätter, die wiederum einen Namen wie "TEST12_09" haben.
Leider habe ich keine Set-Funktion gefunden. Aber da m_strTabelle bei mir public ist, habe ich es von außen geändert, aber es ergab natürlich kein unterschied. Wie kann ich dem Programm also sagen, dass es seine Datenbank aktualliesieren bzw. neu laden sollte, damit es intern GetDefaultSQL aufrufen kann. Das Programm ist eine SDI-Anwendung mit Datenbankunterstützung.
-
Das geht mit Requery oder erst Close und dann Open. (alles Funktionen des Recordsets.)
-
Hallo estartu,
Danke jetzt funktioniert es!
Mit Close und Open hat es geklappt!!!! Requery hat nicht geklappt!
mfg Markus