Uso de DAO para leer diversas bases de datos
Por: Demian Panello.
Con DAO, (a igual que ADO), no sólo se pueden usar bases de datos de Microsoft Access, sino que existe una importante cantidad de otras fuentes de datos disponibles.
Cuando uno pretende abrir una base de Access simplemente usa CDaoDatabase::Open() indicándole cuál es la ubicación de la base .mdb y omitiendo el resto de los parámetros:
|
CDaoDatabase* pBase = new CDaoDatabase; pBase->Open("c:\\Mis Documentos\\mibase.mdb"); CDaoRecordser rs(pBase); rs.Open(dbOpenDynaset, "select * from tabla1"); |
En realidad el método Open() tiene tres parámetros más:
CDaoDatabase::Open( LPCTSTR lpszName, BOOL bExclusive=FALSE, BOOL bReadOnly=FALSE, LPCTSTR lpszConnect="");
bExclusive=TRUE indica que la base se abre en modo exclusivo y FALSE es compartido.
bReadOnly : permite especificar si se abrirá de sólo lectura o no.
El tercer parámetro es importante para lo que estamos tratando: la apertura de diversas fuentes de datos. Si se omite este parámetro de conexión, (que es una cadena), es porque se quiere abrir una base de datos de Access, sino se puede especificar alguno de los siguientes:
| Tipo de base | Cadena para la conexión |
| Access | blank |
| dBASE III | dBASE III; |
| dBASE IV | dBASE IV; |
| dBASE 5 | dBASE 5.0; |
| Paradox 3.x | Paradox 3.x; |
| Paradox 4.x | Paradox 4.x; |
| Paradox 5.x | Paradox 5.x; |
| FoxPro 2.0 | FoxPro 2.0; |
| FoxPro 2.5 | FoxPro 2.5; |
| FoxPro 2.6 | FoxPro 2.6; |
| Excel 3.0 | Excel 3.0; |
| Excel 4.0 | Excel 4.0; |
| Excel 5.0 or Excel 95 | Excel 5.0; |
| Excel 97 | Excel 97; |
| HTML Import | HTML Import; |
| HTML Export | HTML Export; |
| Text | Text; |
Ejemplo 1:
Abrir una base de datos hecha en una hoja de una planilla de Excel 97:
|
CDaoDatabase* pBase = new CDaoDatabase; pBase->Open("c:\\Mis Documentos\\planilla.xls", FALSE, FALSE, "Excel 97;") CDaoRecordset rs(pBase); rs.Open(dbOpendynaset, "Select * from [Hoja1$]"); |
En el método Open() de CDaoDatabase simplemente se especifica el path + el nombre del archivo de Excel, (en el ejemplo c:\mis documentos\ planilla.xls), si se quiere se especifican los parámetros para el modo exclusivo y de sólo lectura, (que por defecto son FALSE), y luego la cadena para la conexión.
Para los parámetros del método Open() de CDaoRecordset lo único diferente está al especificar la cadena SQL que "llenará" el recordset con los datos, pues para una planilla de Excel cada hoja es una tabla cuyas filas son los registros y las columnas los campos, (a excepción de las columnas de la primer fila que DAO utiliza para los nombres de los campos), se necesita colocar el nombre de la hoja entre corchetes y agregarle el símbolo $ al final, (en el ejemplo: [Hoja1$]).
Ejemplo 2:
Abrir una base de datos de FOX, DBASE o PARADOX:
Estas bases son diferentes a las de Access en el sentido que simplemente son tablas libres, o sea, cada base de datos es una tabla con la extensión .DBF para DBase o FOX y .DB para Paradox.
Entonces ahora la diferencia está en el método CDaoDatabase::Open() ya que aquí, en el primer parámetro sólo hay que indicarle el PATH, pero no el nombre de la base y en el segundo parámetro de CDaoRecordset::Open(), en la sentencia SQL, hay que colocar el nombre del archivo con su extensión y encerrado entre corchetes.
|
CDaoDatabase* pBase = new DaoDatabase; pBase->Open("c:\\Mis Documentos", FALSE, FALSE, "FoxPro 2.6;"); CDaoRecordset rs(pBase); rs.Open(dbOpenDynaset, "Select * from [tabla.dbf]"); |