kingofbrain Geschrieben 30. Mai 2002 Geschrieben 30. Mai 2002 Hallo zusammen!!! Ich arbeite gerade mit Visual C++ 6.0 an einer Anwendung mit ODBC-Anbindung (Access 2000). Ich habe beim Erstellen mit dem Anwendungsassistenten alle Tabellen der DB angegeben. Wenn ich jetzt aber mit Open() das Recordset so umbiegen will, das ich nur die Daten einer Tabelle bekomme, schreibt die Anwendung diese Daten in die ersten Variablen, die in DoFieldExchange(...) angegeben sind, und nicht in die korrekten Variablen der Tabelle. Danach habe ich es mit m_pDatabase->ExecuteSQL("SELECT * FROM interpret") versucht, aber die Methode ExecuteSQL liefert scheinbar keine Daten. Weiss einer von Euch, wie ich das hinbekommen könnte? hier noch ein kleiner Code-Ausschnitt: void CMP3VerwaltungView::fillCboInterpret(void) { // einlesen der Interpretentabelle in das Recordset m_pSet->Open(AFX_DB_USE_DEFAULT_TYPE, "SELECT * FROM haupt", 0); //m_pSet->Requery(); // füllen des Interpreten-Combofeldes if(!m_pSet->IsEOF()) { m_pSet->MoveFirst(); } while(!m_pSet->IsEOF()) { m_cInterpretB.AddString(m_pSet->m_Album); m_pSet->MoveNext(); } } Schönen Feiertag noch, k.o.b Zitieren
bigredeyes Geschrieben 3. Juni 2002 Geschrieben 3. Juni 2002 hallo! funzt das nicht so: m_pDB->m_strFilter="SELECT * FROM 'Spalte'" m_pDB->Requery(); und dann durchhoppeln.... bigredeyes Zitieren
kingofbrain Geschrieben 4. Juni 2002 Autor Geschrieben 4. Juni 2002 servus bigredeyes!! ich dachte schon, da wüsste niemand bescheid. danke für den tipp, ich werd ihn heute abend mal ausprobieren. ich meld mich dann nochmal, ob es geklappt hat. k.o.b Zitieren
Klotzkopp Geschrieben 4. Juni 2002 Geschrieben 4. Juni 2002 @kingofbrain: Ursache des Problems dürfte sein, dass die vom AppWizard automatisch generierte von CRecordset abgeleitete Klasse genau auf die Abfrage zugeschnitten ist, die Du durch die Auswahl der Tabellen zu Anfang festgelegt hast. Da lässt sich nichts umbiegen, weil die Klasse mitsamt Ihren Membern praktisch nur mit genau dieser Abfrage funktioniert. Ich würde empfehlen, für eine andere Abfrage selbst eine Klasse von CRecordset abzuleiten. Die generierte Klasse kann ja als Vorlage dienen. Zitieren
gugelhupf Geschrieben 4. Juni 2002 Geschrieben 4. Juni 2002 Das CRecordSetMember m_strFilter beinhaltet ja soz. die WHERE-Klausel. Damit lassen sich dann Abfragen über mehrere Tabellen (also Joins z.B.) durchführen. Ich verstehe nun Dein Problem nicht. Ich habe auch mehrere Tabellen in der GetDefaultSQL()-Methode angegeben. Wenn ich nun die RecordSet-Instanz so öffne: m_Intsanz->m_strFilter="irgendeinespalte<>40"; m_Intsanz->Open(AFX_DB_USE_DEFAULT_TYPE,NULL,CRecordset::executeDirect); ...dann funzt es auch. Vielleicht gehts ja bei Dir dann auch ?! Just my 2Cents... Zitieren
bigredeyes Geschrieben 4. Juni 2002 Geschrieben 4. Juni 2002 hallo ich nochmal! wenn mir der wizard die CRecordset-sachen erstellt hat, gab's bei mir auch schon des öfteren probleme.... ich mach mir das in letzter zeit lieber alles selber... erst mal ein CDatabase-obj. anlegen, und dann massig CRecordsets.... aber muss jeder selber wissen... bigredeyes Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.