den sie werden nie Initialisiert !!!!!!!!!
-
Hallo,
ich habe ein Problem und zwar habe ich ein DB auf ein SQL-Server, die 5 Tabellen beinhaltet. Ich greife über ODBC auf die DB, und hole alle Tabellen
in eine CRecordSet Klasse zusammen. In der View Klasse möchte ich dann mit der
Zeiger m_pSet auf die Inhalte der Datenbank Member zugreifen, das klapt aber nicht weil sie nie Initialisiert werden und das ist mein Problem.
Ich weiß aber auch nicht ob das richtig ist alle Tabellen zusammen in eine CRecordset Klasse zu holen.
Kann mir jemand ein Tip geben wie ich es am Besten machen solte?
ich würde mich über jede Hilfe freuen, aber Bitte nicht "VC++ in 21 Tagen"
-
Moin,
es ist vielleicht ein Fehler im Klassenassi (selbst Erfahrung gemacht, grundsätzlich bei Datumsfeldern).
Geh' in den Konstruktor deiner CRecordSet - Klasse und vervollständige die Initialisierung der Membervariablen.Gruß, Tom
-
bei mehreren Tabellen würde ich das mit dao machen.
Schau mal in FAQ
-
ich weiß nicht wenn ich mir den Konstruktor ansehe erscheint mir das schon irgendwie richtig:
IMPLEMENT_DYNAMIC(CZeiterfassungSet, CRecordset)CZeiterfassungSet::CZeiterfassungSet(CDatabase* pdb)
: CRecordset(pdb)
{
//----- Mitarbeiter Tabelle ------//
m_dboMAMANR = 0;
m_dboMAMName = "";
m_dboMAMNachname = "";
m_dboMAPW = "";//----- Macro Tabelle ----------//
m_dboMCMID = 0;
m_dboMCMacro = "";
m_dboMCMANR = 0;//----- Projekte Tabelle --------//
m_dboPPID = 0;
m_dboPPfad = "";//----- ProjekteDetails --------//
m_dboPDPID = 0;
m_dboPDMANR = 0;
m_dboPDTaetigkeit = "";
m_dboPDDatum;
m_dboPDAZeit;
m_dboPDEZeit;
m_dboPDDauer;
m_dboPDPause;
m_dboPDGZeit;//----- Verzeichniss Tabelle ----//
m_dboVVID = 0;
m_dboVVName = "";
m_dboVVParent = 0;
m_dboVMANR = 0;m_nFields = 22;
m_nDefaultType = dynaset;
}
und ich glaube nicht das mann über ODBC nicht mehrer Tabellen in ein Klasse einfügen kann.
-
Hallo !
Du musst für jede Tabelle eine eigene Recordset-Klasse erstellen. Wenn du eine Recordset-Klasse über mehrere Tabellen erstellst, erzeugst du eine View und somit eine Kreuzabfrage, d.h. wenn du in der einen Tabelle 10 Datensätze hast und in der anderen 5, dann erscheinen in deiner Recordsetklasse auf die beiden Tabellen 50 Datensätze (kann mir nicht vorstellen, das du das willst...).
Ansonsten muss man noch
#include <afxdb.h>
in den Header der Recordset-Klasse packen.
Dann noch die Recordset-Klasse in der View-Klasse inkludieren:
#include "ZeiterfassungSet.h"
und los geht´s (ungefähr so):
CZeiterfassungSet Zeiterfassung; Zeiterfassung.Open(); ... Zeiterfassung.MoveNext(); ... Zeiterfassung.Close();
Sollte eigentlich klappen...
Tschüss
-
Hallo isabeau,
ich danke dir, du hast ja vollkommen Recht.Es klapt jetzt viel besser.
ein schöne Abend noch.