Warum muss ich ein Item im Kombinationsfeld 2 mal auswählen?
-
Ich möchte einen Code,der den Inhalt eines Kombinationsfeld abhängig von der Auswahl
eines anderen Kombinationsfeld ändert ausführen,aber es kommt erst zu
änderungen wenn ich meine Auswahl zum zweiten Mal auswähle.void SP_Eingeben_DL::OnSelchangeCOMBOMa() { UpdateData(true); if(m_Modell_c.GetCount()>0) { m_Modell_c.ResetContent(); } COleVariant val; CDaoRecordset* r; int ran; ran = DB->AddRecordset("SELECT Modelle.Modell_Name FROM Marken INNER JOIN (Marken_Modell_Link INNER JOIN Modelle ON Marken_Modell_Link.Modell_Nr = Modelle.Modell_Nr) ON Marken.intern_MarkenNr = Marken_Modell_Link.Marken_Nr WHERE Marken.Name='"+m_Marke+"'"); r = DB->GetRecordset(ran); while(!r->IsEOF()) { r->GetFieldValue("Modell_Name",val); m_Modell_c.AddString(CString(val.pbVal)); r->MoveNext(); } DB->returnRecordset(ran); DB->DeleteRecordset(ran); }
[ Dieser Beitrag wurde am 13.03.2003 um 10:10 Uhr von Andorxor editiert. ]
-
hoch
-
Hm, vielleicht ist es so, weil er erst beim 2. Aufruf das UpdateData()
_nach_ den Änderungen ausführt ?
Du solltest noch ein UpdateData ans ende der Funktion anfügen.Devil
-
Das hat gar nichts bewirkt
-
Meinst Du nicht, dass Deine Infos etwas dürftig sind?
Was macht 'AddRecordSet'? Wieso liefert es ein 'int' zurück? Was macht 'GetRecordSet()'?Wahrscheinlich fehlt bei AddRecordSet einfach nur ein Update der Datenbank!
-
AddRecordset öffnet ein Recordset,fügt es einen Array hinzu,und liefert den Index zurück.
GetRecordset liefert den Zeiger auf das Recordset zurück.
Da ich Daten aus der Datenbank abfrage,und nicht Daten in der Datenbank ändere kann es nicht an einen fehlenden Aufruf von Update liegen.
-
OK, das AddRecordset verwirrt ganz schön!
Das mit der Combobox müsste eigentlich so gehen, bei mir funzt es ja auch. Also muss es wohl an der DB irgendwo liegen.
Debuggen müsste doch helfen, oder nicht?
-
Du solltest noch ein UpdateData ans ende der Funktion anfügen.
Hast Du UpdateData(True) oder UpdateData(False) eingefügt ?
Gruß
Bernd
-
Ich habs mit beiden versucht
-
Ich habe beim debuggen heraus gefunden das m_Marke den Text des vorher ausgewählten Items enthält,aber ich weiss nicht wieso.
-
Da haben wir den Fehler, ich nutze nicht UpdateData ... der Grund:
CBN_SELCHANGE wird gesendet, wenn sich die Auswahl in der Combobox geändert hat. Damit ist die Marke GetCurSel() richtig definiert. Das bedeutet aber noch nicht, dass das Editfeld schon den neuen Text erhalten hat, welcher in UpdateData verlangt wird.
Du musst also per GetCurSel die Selektion holen und per GetLBText die Variable m_Marke selber belegen.
-
Danke jetzt läuft es