Uso de CListCtrl y DAO
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
- void CDB_DAO_MiniSoftDmDlg::bpReadAllRecorset()
- {
- SYSTEMTIME mTime;
- CWaitCursor mCursor;
- // Hay que limpiar los valores del ListView
- LstReporte.DeleteAllItems( );
- // Preguntamos si tiene elementos....
- if( mDaoDataControl.RecordsetIsEmpty( ) )
- return;
- char & nbsp; szTmpString[20];
- long lngInd = 0;
- // Nos desplazmos hacia el 1er Registro
- mDaoDataControl.GetRecordset()->MoveFirst( );
- //mTime.GetCurrentTime( );
- GetLocalTime( &mTime );
- // Ahora un ciclo para determianar cuantos Registros
- // existen y leerlos directamente.....
- while( ! mDaoDataControl.GetRecordset()->IsEOF( ) )
- {
- // Algo será !!
- sprintf( szTmpString, "%03ld", lngInd+1 );
- // Insertar los valores...
- LstReporte.InsertItem ( lngInd, "" );
- LstReporte.SetItemText( lngInd, 0
- , szTmpString );
- LstReporte.SetItemText( lngInd, 1
- , mDaoDataControl.GetField_AsString( Field_Codigo ) );
- LstReporte.SetItemText( lngInd, 2
- , mDaoDataControl.GetField_AsString( Field_Datos ) );
- sprintf( szTmpString, "%ld"
- , mDaoDataControl.GetField_AsInteger( Field_AnioNac ) );
- LstReporte.SetItemText( lngInd, 3 , szTmpString );
- sprintf( szTmpString, "%d"
- , mTime.wYear-mDaoDataControl.GetField_AsInteger( Field_AnioNac ) );
- LstReporte.SetItemText( lngInd, 4 , szTmpString );
- // Sumar un Registro...
- lngInd++;
- &n bsp;// Ahora buscamos el Siguiente Registro...
- mDaoDataControl.GetRecordset()->MoveNext( );
- };
- };
Para Añadir un Registro a la Tabla tendremos:
- Code: Seleccionar todo
- void CDB_DAO_MiniSoftDmDlg::OnAddRow()
- {
- CDB_DAO_Aniadir DlgNuevo;
- if( DlgNuevo.DoModal()==IDOK )
- {
- if( mDaoDataControl.GetRecordset()->CanAppend( ) )
- {
- // Añadir nuevo Registro
- mDaoDataControl.GetRecordset()->AddNew( );
- mDaoDataControl.SetField_AsString( Field_Codigo
- , DlgNuevo.FldCodigo );
- mDaoDataControl.SetField_AsString( Field_Datos
- , DlgNuevo.FldDatos );
- mDaoDataControl.SetField_AsString( Field_AnioNac
- , DlgNuevo.FldAnioNac );
- mDaoDataControl.SetField_AsString( Field_Observs
- , DlgNuevo.FldObserv );
- // Guardar los Cambios Hechos....
- mDaoDataControl.GetRecordset()->Update( );
- // Ahora mostramos todo...
- CDB_DAO_MiniSoftDmDlg::OnListar( );
- }
- }
- };
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
Otros Artículos en esta sección
-
Tutorial paso a paso para crear una aplicación basada en dialogo utilizando las librerías MFC con Visual C++ 2010Es un tutorial que te enseña como programar un juego de ajedrez en Visual C++ paso a paso, empezando por dibujar el tablero hasta mover cada una de las piezas.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.¿Alguna duda? Sientete libre de hacer tus pruntas en nuestro:
foro deVisual C++ »