Datacombo para Visual C++

Por:ivancp,enviado 14 Mar 2004
Éste es un control basado en un cuadro combinado, usa una conexion existente de tipo CDaoDatabase. Puede servirte en tus aplicaciones en donde ya tengas una conexión de ése tipo. En la imagen siguiente se puede ver en accion al control, donde recupera registros de una tabla "Paises" y el otro control de la tabla "Departamentos".

datacombo.gif
Datacombo en acción en un formulario Visual C++


Asignamos esta conexión mediante la función creada SetConnection.

Code: Seleccionar todo
  1. void CDatacombo::SetConnection(CDaoDatabase *pDB)

  2. {

  3.   m_pDB = pDB;

  4. }



La funcion LoadData recupera los datos segun la consulta SQL que se le envíe, pero esta consulta debe retornar un conjunto de registros de manera que el primer campo sea numérico y el segundo de tipo cadena, el primero es asigando mediante la función CComboBox::SetItemData(), es segundo es asginado como item del control para que se pueda ver.

Code: Seleccionar todo
  1. void CDatacombo::LoadData()

  2. {

  3.   ASSERT(::IsWindow(m_hWnd));

  4.   ASSERT(m_pDB);

  5.   ASSERT(m_pDB->IsOpen());

  6.   ASSERT(!m_sSQL.IsEmpty());

  7.  

  8.  

  9.   CDaoRecordset rs(m_pDB);

  10.   COleVariant var;

  11.  

  12.   try{

  13.     rs.Open(dbOpenSnapshot,m_sSQL);  

  14.     INT i = 0;

  15.     ResetContent();

  16.     while(!rs.IsEOF()){

  17.       rs.GetFieldValue(1,var);

  18.       InsertString(i,CCrack::strVARIANT(var));

  19.  

  20.       rs.GetFieldValue(0,var);

  21.       switch(var.vt){

  22.         case VT_I2:

  23.           SetItemData(i,(DWORD)V_I2(&var));

  24.           break;

  25.         case VT_I4:

  26.           SetItemData(i,(DWORD)V_I4(&var));

  27.           break;

  28.         case VT_R4:

  29.           SetItemData(i,(DWORD)V_R4(&var));

  30.           break;

  31.         case VT_R8:

  32.           SetItemData(i,(DWORD)V_R8(&var));

  33.           break;

  34.       }

  35.       i++;

  36.       rs.MoveNext();

  37.     }

  38.  

  39.   }catch(CDaoException e){

  40.  

  41.   }catch(CMemoryException e){

  42.  

  43.   }

  44.  

  45.   if(rs.IsOpen()){

  46.     rs.Close();

  47.   }

  48. }

Archivos Adjuntos

Otros Artículos en esta sección

  • Cadenas de Conexion ADO
    Una lista de Cadenas de Conexión que se pueden utilizar en conexiónes Bases de Datos desde Visual C++ utilizando ADO. También sirven para otros lenguajes de programación.
    Por: carlos.antollini,2008-02-02
  • Implementación del Juego Samegame en Visual C++
    Same Game es un juego tipo puzzle (rompecabezas) de un solo jugador. El juego consiste en eliminar la mayor cantidad de grupos de elementos de un tablero de N x M.
    Por: ivancp,2005-08-08
  • Graficador de Funciones 2D y 3D
    He aquí un programa que grafica todo tipo de funciones gracias a su interprete que utiliza un Analizador Léxico, Analizador Sintáctico, y un Analizador semántico.
    Por: Lizardo,2004-03-14
¿Alguna duda? Sientete libre de hacer tus pruntas en nuestro:
foro deVisual C++ »