Freigeben über


Füllen eines Listenfelds aus einem zweiten Recordset MFC-(Datenzugriff)

Standardmäßig ist eine Datensatzansicht mit einem einzigen Recordset-Objekt verknüpft, dessen Felder den Steuerelementen der Datensatzansicht zugeordnet sind. Manchmal möchten Sie ein Listenfeld- oder Kombinationsfeld-Steuerelement in die Datensatzansicht einfügen und mit Werten aus einem zweiten Recordset-Objekt füllen. Der Benutzer kann das Listenfeld zur Auswahl einer neuen Kategorie von Informationen verwenden, die in der Datensatzansicht angezeigt werden sollen. In diesem Thema wird beschrieben, wie und wann Sie dies tun sollten.

Tipp

Beachten Sie, dass das Füllen eines Listen- oder Kombinationsfelds aus einer Datenquelle langsam sein kann. Treffen Sie Vorsichtsmaßnahmen, um zu vermeiden, dass ein Steuerelement mit einer großen Anzahl von Datensätzen aus einem Recordset gefüllt wird.

Das Modell für dieses Thema besteht aus einem primären Recordset, das die Steuerelemente des Formulars füllt. Mit einem sekundären Recordset wird ein Listen- oder Kombinationsfeld gefüllt. Die Auswahl einer Zeichenfolge im Listenfeld veranlasst das Programm, das primäre Recordset basierend auf der Auswahl abzufragen. In der folgenden Prozedur wird ein Kombinationsfeld verwendet, sie ist jedoch auch auf ein Listenfeld anwendbar.

So füllen Sie ein Kombinations- oder Listenfeld aus einem zweiten Recordset

  1. Erstellen Sie das Recordset-Objekt (CRecordset.

  2. Rufen Sie einen Zeiger auf das CComboBox -Objekt für das Kombinationsfeld-Steuerelement ab.

  3. Löschen Sie vorherige Inhalte aus dem Kombinationsfeld.

  4. Durchlaufen Sie alle Datensätze im Recordset, wobei Sie CComboBox::AddString für jede Zeichenfolge aus dem aktuellen Datensatz aufrufen, den Sie dem Kombinationsfeld hinzufügen möchten.

  5. Initialisieren Sie die Auswahl im Kombinationsfeld.

void CSectionForm::OnInitialUpdate()
{
    // ...

    // Fill the combo box with all of the courses
    CENROLLDoc* pDoc = GetDocument();
    if (!pDoc->m_courseSet.Open())
        return;

    // ...

    m_ctlCourseList.ResetContent();
    if (pDoc->m_courseSet.IsOpen())
    {
        while (!pDoc->m_courseSet.IsEOF() )
        {
            m_ctlCourseList.AddString(
                pDoc->m_courseSet.m_CourseID);
            pDoc->m_courseSet.MoveNext();
        }
    }
    m_ctlCourseList.SetCurSel(0);
}

Diese Funktion verwendet das zweites Recordset m_courseSet, das einen Datensatz für jeden angebotenen Kurs enthält, sowie ein CComboBox-Steuerelement, m_ctlCourseList, das in der Datensatzansichtsklasse gespeichert ist.

Die Funktion ruft m_courseSet aus dem Dokument ab und öffnet sie. Anschließend leert sie m_ctlCourseList und scrollt durch m_courseSet. Die Funktion ruft für jeden Datensatz die AddString-Memberfunktion des Kombinationsfelds auf, um den Kurs-ID-Wert aus dem Datensatz hinzuzufügen. Abschließend legt der Code die Auswahl des Kombinationsfelds fest.

Siehe auch

Datensatzansichten (MFC-Datenzugriff)
Liste der ODBC-Treiber