Recordset
-
hi,
CString spiel; GetDlgItem(IDC_COMBO1)->GetWindowText(spiel); CRecordset rs(&d); rs.Open(CRecordset::forwardOnly,"SELECT ID From spiel Where Spiel=spiel",CRecordset::readOnly); CString id; while(!rs.IsEOF()) { rs.GetFieldValue("ID",id); rs.MoveNext(); }
ich möchte das id den wert bekommt wo meine where-abfrage wahr wird. so wie ich es jetzt habe hat id immer den letzten wert vom letzten datensatz.
was muss ich ändern danke
ronny
-
Hallo.
Du öffnest dein RecordSet ja schon an der Stelle, an welcher die WHERE Klausel erfüllt ist:
rs.Open(CRecordset::forwardOnly,"SELECT ID From spiel Where Spiel=spiel",CRecordset::readOnly);
In der danach folgenden Schleife durchläufst Du das Set bis EOF und weist jedesmal deinem String den Wert zu. Also kann er nur den Wert bei EOF haben.
Probier statt der Schleife mal folgendes:
rs.GetFieldValue(<Feldname>,<Variable>);
Feldname und Variable halt entsprechend ersetzen.
Gruß
M.
-
dann gibt er mir nur den ersten wert der tabelle zurück.
-
Ronnys schrieb:
hi,
CString spiel; GetDlgItem(IDC_COMBO1)->GetWindowText(spiel); CRecordset rs(&d); rs.Open(CRecordset::forwardOnly,"SELECT ID From spiel Where Spiel=spiel",CRecordset::readOnly); CString id; while(!rs.IsEOF()) { rs.GetFieldValue("ID",id); rs.MoveNext(); }
ich möchte das id den wert bekommt wo meine where-abfrage wahr wird. so wie ich es jetzt habe hat id immer den letzten wert vom letzten datensatz.
was muss ich ändern danke
ronny
das ist nicht der code 1:1 aus deinem programm oder?
in dem sql-string suchst du nach einem datensatz, der explizit den wert "spiel" besitzt.
der wert, der in der CString variable namens "spiel" steht ist völlig irrelevant.CString strSpiel; CString strSQL; CRecordset oSpielRecord; int iSpielID; GetDlgItem(IDC_COMBO1)->GetWindowText(strSpiel); strSQL = "SELECT * FROM SPIEL WHERE SPIEL = " strSQL = strSQL + strSpiel + ";"; oSpielRecord.Open(CRecordset::snapshot, strSQL); while (oSPielRecord != EOF()) { iSpielID = oSpielRecord.SpielID; } oSpielRecord.Close();
Esco
PS: ich würde mir mal n buch über c++ bzw visual c++ mit c++ grundlagen und datenbankverbindungen zulegen