ComboBox
-
hi
was meinst du damit?
Was muss ich da reinschreiben, kannst du mir da helfen?
merci
-
Da ich von DAO keine Ahnung habe, nicht wirklich.
Hier mal ein Versuch in Pseudocode:
Laden Daten aus DB
solange noch Daten
Füge String an Combobox an
Nächster DatensatzFür CRecordset hätte ich auch Quelltext...
-
aha
ich habe auch wenig Ahnung von ADO
schade egal,trotzdem danke
-
Hier mal der Quelltext für ODBC, musste nur eben umbauen vermute ich.
CBankenSet BankenSet; // Daten aus der Datenbank holen BankenSet.Open(); if (BankenSet.IsBOF()) { // Hab ich so kopiert, verhindert Fehler } else { while(!BankenSet.IsEOF()) { // Schleife über die Datensätze m_cbxBlz.AddString(BankenSet.GetBlz()); BankenSet.MoveNext(); // Nächster } }
-
Nach Open ist doch automatisch IsBOF, vorausgesetzt es sind Daten vorhanden und er rennt in den if-Zweig. Wenn keine da sind, ist IsEOF und er rennt in den else-Zweig...
-
Deswegen mein Kommentar - ich hatte das mal gelösch und prompt ein Problem. Ich warte nun also händeringend auf das Buch was hier wer in Arbeit hat um dann endlich mehr zu wissen als VC++ in 21 Tagen vermittelt.

Die Quellen sind sehr dürftig, was Datenbankzugriff angeht.

-
danke erstmal
für was steht "banken"? ist das die Datenbanktabelle? Muss das in die OnInitDialog Funktion?Mit dem hier geht das nicht oder :? GetCurSel(), hab ich in der Hilfe gefunden
merci
-
Da wird eine Liste von Banken gefüllt. Das war das kleinste Beispiel, was ich finden konnte.
Was willst du mit GetCurSel? Die Funktion gibt dir zurück, die wievielte Zeile der Combobox markiert ist. Die hat nix mit Füllen zu tun.
-
Achja, in OnInitDialog ist es gut aufgehoben. Oder du machst eine kleine Funktion, die von dort aufgerufen wird, ganz wie du magst.
-
...._T("Provider=MSDASQL.1;Data Source=Adressen");
... = _T("select * from Kunden");m_ptrRs->Open((LPCTSTR)m_strCmdText, (LPCTSTR)m_strConnection,
adOpenDynamic, adLockOptimistic, adCmdUnknown)muss ich dann dass nicht mehr angeben um die Tabelle zu öffnen
-
Das kann ich dir nicht sagen. Ich gebe das nicht an, weil es durch zwei Funktionen in CRecordset schon erledigt wird.
Denk bitte daran, dass ich die Anbindung über ODBC und nicht DAO habe.
Ich würde es einfach da stehen lassen, solange es geht und dir nicht jemand erklärt, wie es anders geht.
(Siehe mein "unnützes" if im anderen Beitrag.)
-
sorry wen ich jetzt so blöd frage aber ich hab jetzt mal den code in die OnInitDialog Funkt. reingeschrieben, Anstatt Banken habe ich meine Datenbanktabelle genommen
[code]CAnlassSet AnlassSet;
// Daten aus der Datenbank holen
AnlassSet.Open();if (AnlassSet.IsBOF())
{ // Hab ich so kopiert, verhindert Fehler}
else
{
while(!AnlassSet.IsEOF())
{ // Schleife über die Datensätze
m_ctlComboAnlass.AddString(AnlassSet.GetAnlass());
AnlassSet.MoveNext(); // Nächster
}
}jetzt kommen natürlich Fehlermeldungen
error C2065: 'CAnlassSet' : nichtdeklarierter Bezeichner
AnlassSet' : nichtdeklarierter Bezeichner
Der linke Teil von '.Open' muss eine Klasse/Struktur/Union seinwie muss ich dass noch machen?
danke
-
Das heißt bei dir doch
m_ptrRsoder?
Du musst schon deine Variablentypen verwenden.

-
_RecordsetPtr m_ptrRs;
ja so ist m_ptrRs definiert, au man ich raff dass immer noch nicht
_RecordsetPtr m_ptrRs;[/code]_RecordsetPtr m_ptrRs;
// Daten aus der Datenbank holen
AnlassSet.Open();if (AnlassSet.IsBOF())
{ // Hab ich so kopiert, verhindert Fehler}
else
{
while(!AnlassSet.IsEOF())
{ // Schleife über die Datensätze
m_ctlComboAnlass.AddString(AnlassSet.GetAnlass());
AnlassSet.MoveNext(); // Nächster
}
}und asnstatt AnlassSet steht _RecordsetPtr das jetzt?
-
Du stehst irgendwie noch mit den Codetags auf Kriegsfuß.

m_ptrRs->Open(); //Oder auch das was du vorhin geschrieben hattest: m_ptrRs->Open((LPCTSTR)m_strCmdText, (LPCTSTR)m_strConnection, adOpenDynamic, adLockOptimistic, adCmdUnknown); if (m_ptrRs->IsBOF()) { // Hab ich so kopiert, verhindert Fehler } else { while(!m_ptrRs->IsEOF()) { // Schleife über die Datensätze m_ctlComboAnlass.AddString(m_ptrRs->GetAnlass()); m_ptrRs->MoveNext(); // Nächster } }
-
wie machste dass immer dass der code so aussieht im Fenster ?
dass hab ich nun reinkopiert
m_ptrRs->Open((LPCTSTR)m_strCmdText, (LPCTSTR)m_strConnection,
adOpenDynamic, adLockOptimistic, adCmdUnknown);if (m_ptrRs->IsBOF())
{ // Hab ich so kopiert, verhindert Fehler
}
else
{
while(!m_ptrRs->IsEOF())
{ // Schleife über die Datensätze
m_ctlComboAnlass.AddString(m_ptrRs->GetAnlass());
m_ptrRs->MoveNext(); // Nächster
}
}Jetzt kommt noch der Fehler und wahrscheinlich Folgefehler
error C2039: 'IsBOF' : Ist kein Element von '_Recordset'je mehr ich da rum mach umso tiefer steck ich im Sumpf

-
Unter dem Eingabefeld für Text ist ein Knopf wo "C/C++" drauf steht. Den drückst du, dann fügst du deinen Quelltext ein und dann drückst du noch mal.
Das sieht dann so aus, aber ohne *
[cpp]
//hier kommt dein Quelltext hin.
[/cpp]So, da es mit der Übertragbarkeit von CRecordset zu dem was du da hast sehr hapert, müssen wir mal herausfinden WAS du da hast, damit man mal in die Hilfe schauen kann.
Was ist _Recordset? Das ist ein Datentyp, soweit bin ich. Aber er steht nicht in meiner MSDN. Und in der im Internet sah der Beispielquelltext völlig unbekannt aus, wie Visual Basic.

Ich bin langsam echt ratlos, was du da hast.Die if kannst du auch testweise rauswerfen, aber ob dir das so viel weiter hilft?
m_ptrRs->Open((LPCTSTR)m_strCmdText, (LPCTSTR)m_strConnection, adOpenDynamic, adLockOptimistic, adCmdUnknown); while(!m_ptrRs->IsEOF()) { // Schleife über die Datensätze m_ctlComboAnlass.AddString(m_ptrRs->GetAnlass()); m_ptrRs->MoveNext(); // Nächster }
-
http://www.se.fh-heilbronn.de/usefulstuff/VCPLUS6/kap15.htm
also ich hab mir von dieser seite mal das beispiel copiert ( nur 3 sachen Nachname vorname alter)
merh kann ich dazu auch nicht sagen , leiderm_ctlComboAnlass.AddString("???");
Das funktionier auch, dann seh ich meiner Combobox wasaber ich wills ja nicht so, aber das hab ich ja alles schon geschrieben
ne leider nicht, geht nicht
error C2039: 'IsEOF' : Ist kein Element von '_Recordset'
-
Ich glaube, das heißt anders, lies mal in dem Kapitel den Abschnitt: Durch den Recordset navigieren (Achte besonders auf die Buchstaben EOF!)
Das "Datensätze aktualisieren" sieht dem, was ich versucht hatte sehr ähnlich. Komisch, dass es nicht geht.
Ich lese das Morgen nochmal, wenn ich mehr Ruhe habe - jetzt muss ich los.
Vielleicht findest du ja noch was.
-
yup mache ich , danke für deine Hilfe, echt super nett von dir
schönen abend noch,