Uso de CListCtrl y DAO

El citar acceso completo, nos referimos a que podamos navegar en la base de datos en modo de lectura y escritura, pues no basta con leer los datos también es necesario el dar mantenimiento a dichas datos. Aquí un modo sencillo de uso con una clase implementada.

Un modo sencillo de acceder a las bases de datos de escritorio es usando un motor de base de datos como Microsoft Jet utilizando Data Acces Object (DAO). Visual C++ no tiene controles para realizar esta labor (al estilo Visual Basic o Delphi), pero si tiene varias clases implementadas, muchas de las cuales con complejas de inicializar y manipular, pero eso hace que nuestro código fuente este mas controlado y sea mas robusto. No necesitamos de un control prediseñado, nosotros podemos controlarlo con mucha facilidad, claro que eso se logra después de un tiempo de mucha practica y dedicación.

CListCtrl, nos permitirá poder mostrar visualmente los datos que iremos obteniendo de la tabla tblAlumnos, en la base de datos daoDataBase.mdb, y tendremos un resultado como este:

Código fuente para hacer un Listado desde la base de datos.


Code: Seleccionar todo
  1. void CDB_DAO_MiniSoftDmDlg::bpReadAllRecorset()

  2. {

  3.  

  4.    SYSTEMTIME       mTime;

  5.    CWaitCursor      mCursor;

  6.  

  7.  

  8.    // Hay que limpiar los valores del ListView

  9.    LstReporte.DeleteAllItems( );

  10.  

  11.    // Preguntamos si tiene elementos....

  12.    if( mDaoDataControl.RecordsetIsEmpty( ) )

  13.       return;

  14.  

  15.    

  16.    char & nbsp; szTmpString[20];

  17.    long   lngInd = 0;

  18.  

  19.    // Nos desplazmos hacia el 1er Registro

  20.    mDaoDataControl.GetRecordset()->MoveFirst( );

  21.  

  22.  

  23.    //mTime.GetCurrentTime( );

  24.    GetLocalTime( &mTime );

  25.    

  26.    // Ahora un ciclo para determianar cuantos Registros

  27.    // existen y leerlos directamente.....

  28.    while( ! mDaoDataControl.GetRecordset()->IsEOF( ) )

  29.    {

  30.       // Algo será !!

  31.       sprintf( szTmpString, "%03ld", lngInd+1 );

  32.  

  33.       // Insertar los valores...

  34.       LstReporte.InsertItem ( lngInd, "" );

  35.       LstReporte.SetItemText( lngInd, 0

  36.          , szTmpString );

  37.       LstReporte.SetItemText( lngInd, 1

  38.          , mDaoDataControl.GetField_AsString( Field_Codigo ) );

  39.       LstReporte.SetItemText( lngInd, 2

  40.          , mDaoDataControl.GetField_AsString( Field_Datos ) );

  41.  

  42.       sprintf( szTmpString, "%ld"

  43.          , mDaoDataControl.GetField_AsInteger( Field_AnioNac ) );

  44.       LstReporte.SetItemText( lngInd, 3 , szTmpString );

  45.  

  46.       sprintf( szTmpString, "%d"

  47.          , mTime.wYear-mDaoDataControl.GetField_AsInteger( Field_AnioNac ) );

  48.       LstReporte.SetItemText( lngInd, 4 , szTmpString );

  49.  

  50.       // Sumar un Registro...

  51.       lngInd++;

  52.  

  53.      &n bsp;// Ahora buscamos el Siguiente Registro...

  54.       mDaoDataControl.GetRecordset()->MoveNext( );

  55.    };

  56. };



Para Añadir un Registro a la Tabla tendremos:



Code: Seleccionar todo
  1. void CDB_DAO_MiniSoftDmDlg::OnAddRow()

  2. {

  3.    CDB_DAO_Aniadir   DlgNuevo;

  4.    if( DlgNuevo.DoModal()==IDOK )

  5.    {

  6.  

  7.     if( mDaoDataControl.GetRecordset()->CanAppend( ) )

  8.     {

  9.          // Añadir nuevo Registro

  10.       mDaoDataControl.GetRecordset()->AddNew( );

  11.  

  12.       mDaoDataControl.SetField_AsString( Field_Codigo

  13.          , DlgNuevo.FldCodigo );

  14.       mDaoDataControl.SetField_AsString( Field_Datos

  15.          , DlgNuevo.FldDatos );

  16.       mDaoDataControl.SetField_AsString( Field_AnioNac

  17.          , DlgNuevo.FldAnioNac );

  18.       mDaoDataControl.SetField_AsString( Field_Observs

  19.          , DlgNuevo.FldObserv );

  20.  

  21.       // Guardar los Cambios Hechos....

  22.       mDaoDataControl.GetRecordset()->Update( );

  23.  

  24.       // Ahora mostramos todo...

  25.       CDB_DAO_MiniSoftDmDlg::OnListar( );

  26.     }

  27.    }

  28. };



listctrl-dao.gif
Programa con acceso a datos ejecutándose


Compilen con mucha FE, y CTRL+F5 Ante todo….

Recomendaciones de MicroLogic©Software



  • La corporación de software MicroLogic©Software tiene como fin el difundir el trabajo en equipo, pues creemos en la comunidad, la reciprocidad y estamos depuestos a compartir conocimiento entre los miembros de la corporación como con nuestros colegas programadores, MicroLogic©Software esta compuesto por un stuff de programadores e incansables investigadores, que siempre estarán dispuestos a resolver dudas.
  • MicroLogic©Software – Trabaja como Integrante de F.I.L.I.C.C (Fundación para la Investigación de Lenguajes Informático y Ciencias de la Computación.) http://www.filicc.pe.kz

Archivos Adjuntos

Otros Artículos en esta sección

  • Botones con iconos en Visual C++
    Este artículo muestra como agregar imagenes/iconos a los botones de los diálogos MFC. Visual C++ no tiene la opción de mejorar la presentación de los botones al estilo Visual Basic.
    Por: ivancp,2004-03-14
  • Ventana de Inicio (Splash) en Visual C++
    Ventana que se muestra al inicio de una aplicación mientras cargan todos elementos de nuestro programa, con esto podemos hacer nuestras aplicaciones Visual C++ mas presentables.
    Por: ivancp,2004-09-19
  • Juego de la Serpiente en Visual C++
    Se trata de un juego donde hay una serpiente que esta en constante movimiento, cuando come algo crece, el juego termina cuando la serpiente ya no tiene espacio.
    Por: ivancp,2004-03-27
¿Alguna duda? Sientete libre de hacer tus pruntas en nuestro:
foro deVisual C++ »