Compartir a través de


Llenar un cuadro de lista con datos de otro conjunto de registros

Actualización: noviembre 2007

De manera predeterminada, una vista de registros se asocia a un objeto individual de conjunto de registros, cuyos campos se asignan a los controles de la vista de registros. A veces puede desear agregar un control de cuadro de lista o de cuadro combinado a la vista de registros y rellenar sus valores con los datos de otro objeto de conjunto de registros. El usuario puede utilizar el cuadro de lista para seleccionar una nueva categoría de información que desee mostrar en la vista de registros. En este tema se explica la forma y el momento de hacerlo.

Sugerencia:

Tenga en cuenta que el proceso de llenado de un cuadro combinado o un cuadro de lista desde un origen de datos puede ser lento. Tome precauciones para evitar el llenado de un control desde un conjunto de registros que contenga un número elevado de registros.

El modelo para este tema está formado por un conjunto de registros principal que llena los controles del formulario, y un conjunto de registros secundario que llena un cuadro de lista o un cuadro combinado. Cuando se seleccione una cadena del cuadro de lista, el programa volverá a consultar el conjunto de registros principal teniendo en cuenta la selección realizada. En el procedimiento siguiente se utiliza un cuadro combinado, pero también se aplica igualmente a un cuadro de lista.

Para llenar un cuadro combinado o un cuadro de lista con datos de otro conjunto de registros

  1. Cree el objeto de conjunto de registros (CRecordset para ODBC, CDaoRecordset para DAO).

  2. Obtenga un puntero al objeto CComboBox para el control de cuadro combinado.

  3. Vacíe el contenido existente del cuadro combinado.

  4. Desplácese por los registros del conjunto de registros, llamando a CComboBox::AddString para cada cadena del registro actual que desee agregar al cuadro combinado.

  5. Inicialice la selección en el cuadro combinado.

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

Esta función utiliza otro conjunto de registros, m_courseSet, que contiene un registro para cada curso impartido, y un control CComboBox, m_ctlCourseList, que se almacena en la clase de la vista de registros.

La función obtiene m_courseSet desde el documento y lo abre. A continuación, vacía m_ctlCourseList y se desplaza por m_courseSet. Para cada registro, la función llama a la función miembro AddString del cuadro combinado para agregar el valor del identificador de curso contenido en el registro. Por último, el código establece la selección del cuadro combinado.

Vea también

Conceptos

Vistas de registros

Lista de controladores ODBC