Inserimento di dati in una casella di riepilogo da un secondo recordset

Per impostazione predefinita, una visualizzazione di record è associata a un unico oggetto recordset i cui campi sono associati ai controlli della visualizzazione di record.In alcuni casi, può essere utile aggiungere un controllo casella di riepilogo o casella combinata nella visualizzazione di record e inserirvi valori provenienti da un secondo oggetto recordset.La casella di riepilogo potrà essere utilizzata per selezionare una nuova categoria di informazioni da visualizzare nella visualizzazione di record.In questo argomento viene spiegato come e quando eseguire questa operazione.

SuggerimentoSuggerimento

Tenere presente che l'inserimento di valori in una casella combinata o di riepilogo da un'origine dati può essere un'operazione lenta.Non inserire mai in un controllo valori di un recordset contenente un elevato numero di record.

Il modello utilizzato per questo argomento è rappresentato da un recordset primario da cui provengono i valori inseriti nel form e da un recordset secondario da cui provengono i valori inseriti in una casella di riepilogo o combinata.La selezione di una stringa nella casella di riepilogo avvia una nuova query sul recordset primario in base alla voce selezionata.Sebbene la procedura illustrata di seguito preveda l'utilizzo di una casella combinata, è applicabile anche a una casella di riepilogo.

  1. Creare l'oggetto recordset, CRecordset per ODBC, CDaoRecordset per DAO.

  2. Ottenere un puntatore all'oggetto CComboBox per il controllo casella combinata.

  3. Eliminare eventuali dati già presenti nella casella combinata.

  4. Spostarsi tra tutti i record del recordset, chiamando CComboBox::AddString per ciascuna stringa del record corrente che si desidera aggiungere alla casella combinata.

  5. Inizializzare la selezione nella casella combinata.

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);
}

Questa funzione utilizza un secondo recordset, denominato m_courseSet, che contiene un record per ogni corso disponibile, e un controllo CComboBox, denominato m_ctlCourseList, che è memorizzato nella classe di visualizzazione di record.

La funzione legge m_courseSet dal documento e lo apre.Elimina quindi il contenuto di m_ctlCourseList e scorre il contenuto di m_courseSet.Per ciascun record la funzione chiama la funzione membro AddString della casella combinata per aggiungere l'ID del corso ottenuto dal record.Al termine viene impostata la selezione della casella combinata.

Vedere anche

Concetti

Visualizzazioni di record

Elenco dei driver ODBC