Verbindung zur Datenbank

Rearhh

Mitglied
Hi,

ich verzweifle gerade an meinem Verstand:
ich habe eine MSAccess-Datenbank erstellt (mit 3 Tabellen) und die angebunden ans Programm. Kein Problem! Aber ich kriege nur mit diesem Befehl Zugriff:
Code:
m_LogSet->Open(CRecordset::forwardOnly,_T( "SELECT * FROM Tabelle1"));

tausche ich forwardOnly gegen snapshot, erscheint die Meldung "Üngültiger Deskriptorindex" im compiliertem Programm (m_LogSet ist ein Pointer zu der Datenbank, welche an die Applikation angebunden ist).

Das ist aber nur ein Teil des Problems. Bisher bin ich mit dem forwardOnly recht gut gefahren, er öffnete die Tabelle eins auf den ersten Eintrag. Nun wird dieser erste Eintrag in der Datenbank übersprungen und die Abfrage der Datenbank geschieht erst ab den 2. Eintrag? Ich verstehe das nicht. Zurück gehen kann ich ja nicht, wegen forwardOnly....

:/
 
Ok, nachdem sich mein Gemüt nun beruhigt hat, seh ich es klarer.
Der Grund für den ungültigen Deskriptorindex ist, dass ich versuche via snapshot auf die ganze Datenbank zuzugreifen...(ich muss ja dabei zugeben, dass meine Vorstellungen von Datenbanken noch recht einfach sind. Aber so langsam fügt sich das Bild. Auch wenn es nicht unbedingt der Realität entspricht; ein vereinfachtes Modell mit dem ich arbeitenn kann tut es auch... mal wieder zum thread)

Das ganze kann ich umgehen, indem ich einfach mit dem ClassWizard eine neue von CRecordSet abgeleitete Klasse erstelle, die nur Zugriff auf die Tabelle 1 nimmt. Ich muss die Klasse nur ein wenig anpassen, dann sieht das alles sehr fein aus. ABER:
ich kriege nach wie vor keine funktionierende Connection zur Datenbank hin.

Meine Frage ist, da ich aus der MSDN nicht schlau werde, wie kann ich eine Datenbank öffnen?

Mein Code:
Code:
//Klasse für die Tabelle ist CProexusSetTableOne abgeleitet von CRecordSet
//~~~~~~Ausschnitt aus der CProecusSetTableOne.cpp~~~~~~~~~~~
CString CProexusSetTableOne::GetDefaultConnect()
{
 return _T("ODBC;DSN=userdb");
}
CString CProexusSetTableOne::GetDefaultSQL()
{
 return _T("[Tabelle1]");
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
//Dann habe ich im Mainprogramm
CProexusSetTableOne tabone;
tabone.Open(?)

Natürlich stehen da keine Fragezeichen. Ich weiß nur nicht, was ich stattdessen eingeben muss, um eine Verbindung zur Datenbank erzielen zu können (ausser eine forwardOnly).

Weitere Daten: Tabelle1 Setzt sich zusammen aus den Spalten ID, Name, Vorname

Thx für die Hilfe.... :)
 
Erledigt:
Code:
tabone.Open(CRecordSet::snapshot);

erledigt, volle Funktionalität....

Meine Datenbank meint zwar trotz MoveFirst(), dass der 2. Datensatz der 1. Datensatz ist, aber dies ist wohl nun mehr ein Problem der Datenbank.... dann gibt es eben einen leeren Datensatz....
 
Zurück