Documente Academic
Documente Profesional
Documente Cultură
para una gran variedad de formatos de base de datos. El control Data interacta con el motor de base de datos Microsoft Jet y permite crear aplicaciones preparadas para datos con la mnima cantidad de cdigo posible. En esta seccin se explica cmo utilizar el control Data y otros controles avanzados enlazados a datos para ver, modificar y actualizar informacin de una base de datos. 5.3.1 Introduccin al Acceso de Datos Antes de empezar a trabajar con la funcionalidad de bases de datos de Visual Basic, es necesario que comprenda las funciones de acceso a datos, as como la terminologa referente a bases de datos. Opciones de Acceso a Datos en Visual Basic Uso del Motor de Base de Datos Jet
Los Objetos de acceso a datos (DAO) y el control Data utilizan el motor de base de datos Microsoft Jet para tener acceso a las bases de datos. El motor de base de datos Jet puede obtener acceso a tres tipos de bases de datos: Bases de datos Jet.
Bases de datos del Mtodo de acceso secuencial indizado (ISAM, Indexed Sequential Access Method). Bases de datos compatibles con Open Database Connectivity (ODBC, Conectividad abierta de bases de datos). Otros Mtodos de Acceso a Datos
He aqu otros mtodos de acceso a datos que admite Visual Basic: Control de origen de datos remotos. Bibliotecas ODBC. Bibliotecas SQL para Visual Basic (VBSQL).
5.3.2 Trabajar con el Control Data El control Data de Visual Basic le permite escribir aplicaciones de bases de datos muy eficaces con muy poco cdigo. En esta seccin aprender a generar aplicaciones de bases de datos con el control Data y el objeto Recordset asociado. Tener Acceso a Datos con el Control Data El control Data implementa el acceso a datos mediante el motor de base de datos Microsoft Jet. Esta tecnologa proporciona acceso a muchos formatos de base de datos y le permite crear aplicaciones que manejan datos sin necesidad de escribir cdigo.
Uso de Controles Enlazados a Datos Cuando enlaza un control enlazado a datos que ha colocado en un formulario, se muestran automticamente los datos de la base de datos en el control enlazado. Si un usuario cambia los datos de un control enlazado, dichos cambios se actualizarn automticamente en la base de datos en cuanto el usuario se desplace a otro registro. Muchos controles intrnsecos de Visual Basic estn enlazados a datos, como es el caso de los controles CheckBox, Image, Label, PictureBox, TextBox, ListBox, ComboBox y los contenedores OLE.
La siguiente ilustracin es un ejemplo de un formulario que contiene un control Data y dos controles enlazados.
Enlazar Controles
Despus de establecer los valores de las propiedades para el control Data, es necesario enlazar al control Data los controles enlazados a datos individuales y despus especificar qu campo de la tabla mostrar cada control. Uso de las Propiedades y mtodos del Control Data Para especificar qu datos desea recuperar, debe establecer las propiedades DatabaseName y RecordSource de un control Data. Adems, puede establecer las siguientes propiedades y mtodos: Propiedad Connect Propiedad Exclusive Propiedad ReadOnly Propiedad Recordset Propiedades BOFAction y EOFAction Mtodo Refresh El Objeto Recordset En una aplicacin de base de datos, los usuarios trabajan con el control Data para desplazarse entre registros dentro de la base de datos. Los usuarios pueden hacer clic en los botones del control Data para avanzar o retroceder registro a registro o para ir directamente al primer o al ltimo registro. Qu es un Recordset?
Todo el conjunto de registros al que hace referencia un control Data se denomina conjunto de registros o Recordset. El Recordset se almacena en la memoria, transfirindose al disco si es necesario. Determinar los lmites de un Recordset
Si utiliza cdigo para cambiar la posicin del registro actual, debe comprobar las propiedades EOF y BOF del objeto Recordset para determinar el inicio y el final del mismo. Cuando se desplace al registro EOF o al BOF, se ejecutar la accin indicada por el valor de la propiedad BOFAction o EOFAction. En la siguiente ilustracin se muestra cmo las propiedades BOF y EOF determinan los lmites del objeto Recordset.
Para utilizar el objeto Recordset de un determinado control Data, especifique la propiedad Recordset del control Data, tal y como se muestra en el siguiente cdigo: Data1.Recordset.MoveNext 'Va al registro siguiente. If Data1.Recordset.EOF Then Data1.Recordset.MoveLast End If Uso de las Propiedades y Mtodos de Recordset Utilice los mtodos y las propiedades del objeto Recordset para recuperar informacin del conjunto de registros, desplazarse por los registros y agregar, actualizar o eliminar registros. Propiedades BOF y EOF Mtodo AddNew de Recordset Mtodo UpdateRecord del control Data Mtodo CancelUpdate del control Data El mtodo Delete
El siguiente cdigo muestra el uso de las propiedades y mtodos de un Recordset: Sub cmdCancel_Click () Data1.CancelUpdate End Sub
Sub cmdUpdate_Click () Data1.UpdateRecord End Sub Sub cmdAdd_Click () Data1.Recordset.AddNew End Sub Sub cmdDelete_Click () Data1.Recordset.Delete Data1.Recordset.MoveNext If Data1.Recordset.EOF Then Data1.Recordset.MoveLast End If End Sub 5.3.3 Uso de Eventos del Control Data El control Data proporciona tres eventos que puede utilizar para mejorar la aplicacin de base de datos: Validate, Error y Reposition. Dichos eventos le permiten omitir parte del comportamiento predeterminado del control Data. Usar el Evento Validate Utilice el evento Validate para comprobar los datos antes de guardar un registro en la base de datos. Este evento se produce justo antes de que Visual Basic escriba en la base de datos los cambios procedentes de los controles enlazados y de que vuelva a colocar el puntero del registro actual en otro registro de la base de datos. Puede utilizar el evento Validate para pedir al usuario que confirme los cambios realizados. Sintaxis: El evento Validate tiene la siguiente sintaxis:
Private Sub Data1_Validate (index As Integer, action As Integer, save As Integer) El argumento action
El argumento action indica la operacin que provoc el evento Validate. El evento Validate se produce como resultado de realizar las operaciones siguientes: MoveFirst, MovePrevious, MoveNext, MoveLast
AddNew Update Delete Find Establecer la propiedad Bookmark Cerrar la base de datos Descargar el formulario
Para cancelar cualquiera de estas acciones, asigne al argumento action el valor vbDataActionCancel. El argumento save
El argumento save indica si va a guardarse o no el registro. Si save es True, los datos enlazados han cambiado. Para cancelar la accin de guardar puede asignar a save el valor False. Usar el Evento Reposition Utilice el evento Reposition para modificar la apariencia de un formulario o realizar una accin necesaria cuando se desplace a un nuevo registro. Este evento tiene lugar cuando Visual Basic desplaza el puntero del registro actual a otro registro de la base de datos. Tambin se produce la primera vez que se abre la base de datos. Modificar la apariencia de un formulario
Para cambiar la manera en que un formulario muestra informacin basndose en el registro seleccionado en ese momento hay que utilizar el evento Reposition. Por ejemplo, puede modificar el ttulo del control Data de forma que se muestre el registro nmero n.
Para ver el nmero del registro actual, utilice la propiedad AbsolutePosition del objeto Recordset. El nmero de registro es relativo a cero, por lo que el primer registro es el 0. Tratar los cambios al desplazarse a un nuevo registro
Cuando un usuario se desplaza a un nuevo registro mediante el control Data, puede que los datos del formulario tengan que presentarse de una forma distinta en el caso del nuevo registro. Por ejemplo, es posible que en un formulario que muestre registros de empleados haya distintas opciones dependiendo de si los empleados son fijos, temporales, si trabajan por horas o si son becarios. Cada registro mostrar la informacin sobre un empleado distinto, cuyas opciones pueden no ser las mismas para todos los registros. Para que se seleccione la opcin correcta para cada registro, escriba cdigo en el evento Reposition. El cdigo siguiente utiliza el evento Reposition para modificar la apariencia de un formulario:
Data1.Caption=Data1.Recordset.AbsolutePosition If Data1.Recordset("IdEmpleado") > 5 Then optSenior.Value = True Else optJunior.Value = True End If Data1.Caption = "Registro " & _ Data1.Recordset.AbsolutePosition + 1 End Sub Esta ilustracin muestra el formulario basado en el cdigo anterior.
Usar el Evento Error El evento Error tiene lugar cuando un usuario interacta con el control Data y se produce un error de acceso a datos. Utilice el evento Error para agregar tratamiento de errores personalizado al control Data. Por ejemplo, si un usuario modifica un campo y despus hace clic en el control Data para desplazarse al siguiente registro, el control Data actualizar el registro actual. Si se produce un error de acceso a datos durante la actualizacin, se producir el evento Error. Los valores de los campos enlazados no cambian tras producirse un error. El usuario puede corregir los valores y hacer clic en el control Data para tratar de actualizar nuevamente el registro.
Si no coloca cdigo para tratar errores en el evento Error y se produce un error cuando un usuario interacta con el control Data, Visual Basic muestra el mensaje de error y el programa contina ejecutndose. Si no desea que se muestre el mensaje de error estndar, puede asignar al argumento Response el valor 0. 5.3.4 Uso de Controles Enlazados a Datos ActiveX Adems de los controles enlazados intrnsecos, Visual Basic ofrece varios controles ActiveX enlazados a datos. En esta seccin se describen algunos controles ActiveX enlazados a datos avanzados. Usar el Control DBGrid El control de cuadrcula enlazada a datos (control DBGrid) permite que los usuarios de su aplicacin de base de datos trabajen con varios registros a la vez. Mostrar mltiples registros
DBGrid es un control ActiveX que muestra una serie de filas y columnas que representan registros y campos de un objeto Recordset. Cuando asigne a la propiedad DataSource del control DBGrid un control Data, el control DBGrid se llenar automticamente de datos y se establecern automticamente sus encabezados de columna a partir del conjunto de registros del control Data. Al contrario que la mayora de los controles enlazados a datos, el control DBGrid le permite ver y modificar varios registros simultneamente. En la siguiente ilustracin se muestra un formulario que utiliza un control DBGrid para presentar registros procedentes de la base de datos Neptuno.
El control DBGrid tiene varias propiedades que especifican cmo se comporta el control. Por ejemplo, si asigna a la propiedad AllowUpdate el valor True, un usuario puede modificar los datos del control. Tambin puede establecer propiedades para columnas individuales del control DBGrid. Puede cambiar el ttulo de la columna, cambiar el campo de datos al que se enlaza la columna, agregar valores predeterminados, etc. Obtener y establecer texto de la celda actual
Utilice la coleccin Columns del control DBGrid para recuperar el texto de la celda seleccionada actualmente en tiempo de ejecucin. Por ejemplo: MsgBox DBGrid1.Columns(DBGrid1.Col).Text Para cambiar la informacin del control DBGrid, cambie el objeto Recordset asociado. Usar el evento BeforeUpdate
El evento BeforeUpdate tiene lugar antes de que se muevan datos desde un control DBGrid al bfer de copia del control Data. Puede validar los datos y cancelar la actualizacin si es necesario. Usar el Control MSFlexGrid El control MSFlexGrid proporciona caractersticas avanzadas para la presentacin de datos en una cuadrcula. Es similar al control DBGrid aunque, cuando se enlaza a un control Data, el control MSFlexGrid muestra datos de slo lectura. Puede utilizar el control MSFlexGrid para combinar filas o columnas de informacin y as agrupar la informacin relacionada.
En la siguiente ilustracin se muestran registros agrupados por Id. de pedido en la tabla Detalles de pedidos.
Usar el Control DBCombo Puede utilizar el control de cuadro de lista enlazado a datos (DBList) o el cuadro combinado enlazado a datos (DBCombo) para presentar automticamente una lista de valores de un Recordset. Esto resulta til para
Tambin puede utilizar estos controles en aplicaciones de "tabla de bsqueda". Por ejemplo, puede presentar una lista de nombres de categora vlidos (en vez de Id.) y utilizar el Id. correspondiente cuando el usuario agregue o modifique datos.
La ilustracin siguiente muestra un formulario que utiliza el control DBCombo para presentar nombres de categoras de la tabla Productos.
Para determinar el valor que se presenta en el control DBCombo, asigne a la propiedad RowSource un nombre de control Data y a la propiedad ListField un nombre de campo. El cuadro combinado enlazado a datos contiene todos los valores de ese campo. Para determinar qu campo de la base de datos se actualiza cuando un usuario cambia un valor, establezca las propiedades DataSource y DataField. Para establecer la relacin entre la tabla que contiene los valores de bsqueda y la tabla que se est modificando realmente, establezca la propiedad BoundColumn.
Si has intentado usar una base de datos creada o convertida con el Access 2000, te habrs llevado una pequea sorpresa al ver que usando el Data control que se incluye en el Visual Basic no te permite hacerlo. Esto es porque el nuevo formato de Access usa el motor Jet versin 4.0 y los datacontrol DAO slo "entienden" hasta la versin 3.5... Pero si tienes la versin 6.0 de Visual Basic, o bien has conseguido las DLLs de ADO (ActiveX Data Object), puedes usarlas sin problemas... incluso con el ADO Datacontrol. En el siguiente cdigo veremos cmo abrir y movernos en una base de datos, en este caso, lo mismo dar que la base de datos haya sido creada con Access 97 o con el Access 2000. Nota: En el zip con el cdigo de ejemplo se acompaa una base de datos de prueba creada con Access 97 y otra con el Access 2000.
Para empezar: Crea un nuevo proyecto, en Proyecto/Componentes... selecciona Microsoft ADO Data Control (OLEDB), pulsa Aceptar y vers que se aade un nuevo control a la barra de herramientas: Ese ser el control que usaremos! Haz dobleclick en ese control para que se aada al formulario, cmbiale la altura a un valor pequeo: 315 est bien, sitalo donde ms coraje te de y aade un TextBox, cambia el tamao, yo le he dado estos valores: alto 315, ancho 2955. Crea un array del Text1 recin aadido: Selecciona el Text1, pulsa el botn derecho y copialo; pulsa en cualquier lado del Form y pulsa el ratn derecho del ratn, selecciona Pegar... te preguntar si quieres crear un array del control Text1, responde que SI. Vuelve a pegar de nuevo y se crear un tercer Text1. Ahora tendrs tres controles Text1 con los ndices desde 0 a 2 Si te parece demasiado "bsico" todos estos pasos... te aguantas... y espera un poco que ya mismo termino. Ahora vamos a configurar el ADO datacontrol: Selecciona el datacontrol, en la ventana de propiedades pulsa en Custom... Te mostrar un cuadro de dilogo, (puede que si tienes la versin en castellano del VB, no te muestre lo que yo te digo, ya que la versin que tengo est en ingls, pero espero que no te lies...) En la ficha General, estar seleccionada la opcin "Use Connection String", pulsa en el botn "Build..." Te mostrar otro cuadro de dilogo, en la ficha "Provider", selecciona Microsoft Jet 4.0 OLE DB Provider, pulsa en "Next>>" y selecciona la base de datos que quieres usar, (si tienes la que
estn incluidas en el ZIP, se llamar db2000.mdb); el resto de opciones djalos como est; pulsa en "Aceptar" dos veces para que se cierren los cuadros de dilogo. Ahora tenemos que decirle que tabla usar y otras cosillas. Selecciona la propiedad CursorType y de la lista desplegable selecciona 2-adOpenDynaset. Selecciona la propiedad RecordSource y pulsa en el botn, te mostrar un cuadro de dilogo. De la lista desplegable (Command type), selecciona: 2-adCmdTable, la lista "Table or Stored Procedure Name" se habr habilitado, selecciona el nombre de la tabla que quieres usar, en este caso Table1 y pulsa en Aceptar. Esto mismo se puede hacer mediante cdigo, para ello asgnale estos valores al datacontrol: (por ejemplo en el evento Form_Load) ' Indicar la base de datos a usar Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & App.Path & "\db2000.mdb" Adodc1.CursorType = adOpenDynamic ' Conectarlo a la tabla de prueba Adodc1.RecordSource = "Table1" ' Refresh es necesario para que se cargue la tabla Adodc1.Refresh
Nota: En el cdigo de ejemplo asignaremos en tiempo de ejecucin la base de datos y dems conexiones necesarias. Ahora ser necesario "ligar" los cuadros de texto con el Datacontrol y los campos correspondientes: Selecciona los tres Text1, en la ventana de propiedades selecciona DataSource y en la lista desplegable selecciona Adodc1
Para ligar cada Text1 con un campo de la base de datos: Pulsa en cualquier parte del formulario para quitar la seleccin actual. Selecciona el Text1 con ndice 0. En la ventana de propiedades, selecciona DataField y de la lista desplegable, selecciona "Nombre" Haz lo mismo con los otros dos Text1, pero para el de ndice 1, selecciona "e-mail" y para el otro: "Comentario" Este ltimo control sera conveniente que lo hicieras ms grande y MultiLine, ya que se supone que aceptar textos ms grandes porque el tipo de campo es "Memo" Ya puedes pulsar en F5 para probar que todo esto funciona.
Realmente no es necesario aadir nada de cdigo, pero si quieres hacerlo manualmente, aade lo siguiente en el evento Form_Load:
Private Sub Form_Load() ' Indicar la base de datos a usar Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & App.Path & "\db2000.mdb" Adodc1.CursorType = adOpenDynamic ' Conectarlo a la tabla de prueba Adodc1.RecordSource = "Table1" ' Refresh es necesario para que se cargue la tabla Adodc1.Refresh ' Conectar manualmente los Text1 al recordset Dim i As Long ' Asignar el control data For i = 0 To 2 Set Text1(i).DataSource = Adodc1 Next ' Asignar los nombres de los campos Text1(0).DataField = "Nombre" Text1(1).DataField = "e-mail" Text1(2).DataField = "Comentario" End Sub
Para que el Caption del data control nos muestre el nmero de registro, en este caso el campo ID de la tabla, aade este cdigo:
Private Sub Adodc1_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, _ ByVal pError As ADODB.Error, _ adStatus As ADODB.EventStatusEnum, _ ByVal pRecordset As ADODB.Recordset) ' Mostrar el ID del registro actual
' si se pasa del primero o del ltimo, dar error On Local Error Resume Next ' Mostrar el ID del registro actual usando el recordset pasado como parmetro 'Adodc1.Caption = "ID del Registro: " & pRecordset!ID ' Tambin se puede usar: Adodc1.Caption = "ID del Registro: " & Adodc1.Recordset!ID Err = 0 End Sub
Aadir y borrar registros de la tabla. Para tener estas dos opciones, aade dos botones al formulario, al primero lo llamas cmdAdd y en el Caption escribe Aadir, al otro botn le cambias el nombre a cmdDel y en el Caption escribe: Eliminar. Aade el siguiente cdigo: ' Private Sub cmdAdd_Click() Adodc1.Recordset.AddNew End Sub Private Sub cmdDel_Click() Adodc1.Recordset.Delete End Sub
Bueno, creo que con esto tienes para empezar, en otra ocasin te mostrar cmo hacer esto mismo pero sin usar el data control. En el zip con los listados hay otro proyecto que te permite seleccionar entre una base de Access 97 o una creada con Access 2000
1- Creamos un nuevo proyecto de Visual Basic 6 (cuando digo VB6, tambin se puede aplicar a VB5 e incluso a VB4), aadimos el control Data, que est en el Toolbox y se crear un objeto en el formulario llamado Data1. 2- Ahora le asignamos la base de datos que usaremos, lo ms usual es que el usuario seleccione el DataControl, se vaya a la ventana de propiedades, seleccione la propiedad DatabaseName y busque una base de datos (pulsando en el botn con los tres puntos suspensivos). 3- Una vez que hemos indicado el nombre de la base de datos, tendremos que indicarle la tabla a la que queremos acceder. Para ello tendremos que seleccionar la propiedad RecordSource y elegir de la lista desplegable la tabla a usar. Estos tres pasos sern los que nos permitan acceder a una base de datos desde nuestro proyecto de VB6.
Nota: En el zip con el cdigo completo he incluido una base de datos de prueba. Copia esa base de datos (db2000.mdb) en el mismo directorio del proyecto y sala para asignarla al control data. De esa forma ser ms fcil seguir las indicaciones de este artculo.
Ahora vamos a aadir un control DataGrid, de forma que podamos manejar de forma simple los datos de nuestra base de datos y de la tabla seleccionada. Para aadir un DataGrid tendremos que hacer lo siguiente: 1- En el men Proyecto (Project) seleccionamos Componentes (Components...), nos mostrar un cuadro de dilogo con los controles ActiveX que podemos aadir a nuestra aplicacin. De ese cuadro de dilogo seleccionaremos Microsoft Data Bound Grid Control (tambin se indicar la versin del VB y el SP que se est usando, en mi caso sera 5.0 (SP3)). Esto aadir a la barra de herramientas el control DataGrid y haciendo doble-click en l, lo aadiremos al formulario. 2- Seleccionamos el nuevo control que tenemos en el formulario, lo cambiamos de tamao y posicin y ahora le indicaremos de dnde obtendr los datos. Para ello nos vamos a la ventana de propiedades (el DataGrid debe estar seleccionado) y buscamos la propiedad DataSource, de la lista desplegable seleccionamos el DataControl que usaremos para obtener los datos. En este ejemplo ser Data1 (que debera ser el nico que se muestre). Hecho todo esto, podemos pulsar F5 para ejecutar la aplicacin y veremos que el DataGrid se llena con los datos que tenga la tabla de la base de datos que le indicamos al control Data.
Para probar que todo esto funciona como debe vamos a compilar el proyecto (crear el ejecutable) y veamos si siempre funciona. Para compilar el proyecto y crear el ejecutable, selecciona la opcin Make del men File (si tienes el VB en espaol, seguramente tendr otros nombres). Ahora ve al directorio en el que est el EXE y ejectalo (haz doble-click en l). Si has seguido los pasos de forma correcta, debera mostrarte lo mismo que cuando pulsaste F5 desde el IDE (entorno de desarrollo) de VB.
Pues que no funcionar el programa. Y en caso de que si tenga un disco E, tendremos que crear esos directorios para que todo funcione.
Nota: Si tienes varias tablas en la misma base de datos y tambin tienes varios controles data y a la vez varios controles DataGrid enlazados con esos controles data, lo nico que tendras que hacer es asignar a todos los controles data el path correcto de la base de datos. El resto de propiedades no hace falta cambiarlas ya que seguirn siendo los mismos valores.
Este primer ejemplo es para usar con acceso a datos DAO. Ahora veamos cmo hacer lo mismo pero con controles ADO.
8- Ahora vamos a indicarle al DataGrid que use el control data como fuente de datos, por tanto selecciona el DataGrid y en la ventana de propiedades selecciona la propiedad DataSource y de la lista desplegable tienes que seleccionar el control data que tiene la conexin a la tabla que queremos usar, en nuestro caso Adodc1. 9- Pulsa F5 para probar que todo funciona bien. Con todos estos pasos tendremos una aplicacin similar al del ejemplo anterior y adems, con los mismos problemas, es decir, la base de datos que usar el ejecutable (el cual no tiene ni una lnea de cdigo) ser la que hemos indicado en el control data. Por tanto para que funcione, la base de datos tiene que estar en el path indicado en tiempo de diseo. Si hacemos la misma prueba que antes de compilar la aplicacin y mover el ejecutable y la base de datos a un directorio diferente, no funcionar.
La primera opcin de ADO para que funcione: Para que funcione debemos indicarle al data control dnde se encuentra la base de datos, pero resulta que el control data ADO no tiene una propiedad DatabaseName como su primo el data control DAO. En el control ADO tenemos que usar la cadena de conexin (como en las bases de datos de SQL Server), por tanto debemos modificar dicha cadena de conexin para que apunte a la base de datos adecuada. Aqu tenemos el cdigo a aadir al proyecto para que todo funcione correctamente: Private Sub Form_Load() ' Aqu se puede indicar el path de la base de datos: Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & App.Path & "\db2000.mdb;" & _ "Persist Security Info=False" Adodc1.Refresh Set DataGrid1.DataSource = Adodc1.Recordset End Sub En el caso de ADO, adems de indicarle el path correcto debemos usar este cdigo adicional: Adodc1.Refresh para que se carguen los datos desde la base de datos. Set DataGrid1.DataSource = Adodc1.Recordset porque debemos asignar los datos que el control data ha cargado. Esto ltimo no es "estrictamente" necesario, pero si no lo hacemos el contenido de la base de datos no ser el correcto. Por qu este cdigo extra? Por la sencilla razn de que el control data intentar obtener los datos de la base de datos y despus rellenar el DataGrid.
Adems, en el caso del control data de ADO si la base de datos no est en el sitio adecuado, se mostrar un mensaje de aviso de que la base de datos no se ha encontrado, aunque despus cargar bien los datos y funcionar correctamente. La segunda opcin de ADO para que funcione Por tanto es preferible no asignar en tiempo de diseo la cadena de conexin a la base de datos, ni tampoco asignar el RecordSource, en este caso, el cdigo a usar ser el siguiente:
Private Sub Form_Load() ' Aqu se puede indicar el path de la base de datos: Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & App.Path & "\db2000.mdb;" & _ "Persist Security Info=False" Adodc1.RecordSource = "Table1" Adodc1.Refresh Set DataGrid1.DataSource = Adodc1.Recordset End Sub
En este caso, lo que hacemos es indicar tambin la tabla de la que se extraern los datos. La tercera opcin de ADO para que funcione Otra opcin es no indicar el path de la base de datos, sino slo el nombre de la base, de esta forma, la base se buscar en el mismo path del ejecutable. Con lo cual la cadena de conexin podra quedar de la siguiente forma: Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db2000.mdb;Persist Security Info=False Y ya no ser necesario usar ningn cdigo en el evento Load del formulario.
Bueno, confo en que con estas explicaciones, (las cuales he preferido indicarlas en plan "paso a paso para principiantes" porque, casi con seguridad, todo esto lo necesitarn los que no tengan mucho manejo con el uso de bases de datos...), te quede ms claro porqu algunas veces las aplicaciones que usan los controles enlazados no funcionan al cambiar el path en el que se encuentra la base de datos.
DATA ENVIRONMENT Lo primero que veremos es cmo agregar el Entorno de Datos a nuestro proyecto. Pues bien, para ello nos iremos al men Proyecto y elegiremos la opcin Agregar Data Environment. En nuestro proyecto tendremos algo parecido a lo mostrado en la figura siguiente. Bueno lo primero que debemos hacer es dar un nombre a nuestro Entorno de Datos. Por ejemplo, dteEntornoDatos. Para ello nos colocaremos en la propiedad Nombre del DataEnvironment y escribiremos su nombre. Como vemos, debajo del Entorno de datos aparece un nuevo objeto, el objeto Connection. En un principio vamos a ponerle un nombre a esta conexin, y luego definiremos sus propiedades. El nombre que vamos a elegir para nuestra primera conexin va a ser el de Listados.
Porqu este nombre, bueno normalmente solemos darle a nuestros objetos, nombres descriptivos para los mismos, y como esta conexin va a contener los listados que van a generar nuestros informes, pues por eso le damos este nombre. Ahora vamos a definir las propiedades de la conexin. Nos situaremos encima de la conexin con el ratn, y pulsando el botn derecho del mismo elegimos la opcin Propiedades del men contextual. La figura a la izquierda, muestra las propiedades de nuestra conexin.
En la pestaa Proveedor, deberemos seleccionar el motor que se encargar del manejo de las tablas de la base de datos, que contiene la informacin que debe generar nuestros informes. Para nuestro ejemplo, seleccionaremos Microsoft Jet 3.51 OLE DB Provider, ya que nuestra base de datos est creada con Access 97. Ahora pulsamos el botn Siguiente y se abre la pestaa Conexin. En ella deberemos seleccionar la base de datos de la cual tomaremos la informacin para confeccionar los informes. En nuestro caso se ha seleccionado la base de datos Biblio.mdb, que se encuentra en el directorio VB98 de Visual Basic.
Te informamos cada semana de los nuevos cursos gratuitos que colocamos on-line para ti! Pon aqu tu e-mail y aprende gratis con nosotros
d) En la ventana aparece un pequeo icono de un reporte al cual puedes cambiarle el nombre fcilmente seleccionndolo y modificando su propiedad (Name) por otro como Reportes, etc. e) Ms abajo se puede ver otro objeto con una clavija elctrica llamado Connection1 al cual tambin puedes cambiarle el nombre modificando su propiedad (Name) por otro como Alumnos, Maestros, etc.
f) Ahora haz clic con el botn derecho del ratn sobre la Connection1 y haz clic en Properties... g) Y aparecer la caja Propiedades de vnculo de datos, haz clic en la opcin Conexin.
h) Haz clic en: Usar la cadena de conexin y haz clic en Generar. i) Y aparecer la caja Seleccionar origen de datos, haz clic en la opcin Origen de datos de equipo.
j) Selecciona el tipo de base de datos en donde se cre la base de datos, en nuestro caso MS Access Database y haz doble clic ah. k) Y aparecer la caja Conexin, haz clic en el botn Base de datos...
l) Y aparecer la caja Seleccionar base de datos, localiza la carpeta en donde se halla tu base de datos, seleccinala y haz clic en Aceptar.
m) Enseguida se vuelve a mostrar la caja Conexin tambin haz clic en Aceptar. n) Y se mostrar la caja Propiedades de vnculo de datos, mostrando en la caja de texto Cadena de conexin bajo Usar la cadena de conexin la ruta de la base de datos que hemos conectado, para finalizar la conexin haz clic en Aceptar.
Reporte II
Creando la estructura del reporte a) En Visual Basic haz clic en el botn Project de la barra de herramientas y haz clic en Add Data Report y se mostrar la caja DataReport1, la caja de herramientas y la caja de propiedades para trabajar en el DataReport.
b) Hay varias maneras de elaborar la estructura del reporte, vamos a emplear una muy sencilla, haz clic en la herramienta RptLabel y dibuja una etiqueta en la seccin 4, ReportHeader, y modifica su propiedad Caption con el ttulo que tendr el reporte. c) Ahora en la seccin 2 PageHeader, haz clic en RptLabel y coloca etiquetas con los ttulos de los encabezados de la tabla y modifica sus propiedades Font, ForeColor, etc. A tu gusto. d) Al terminar, haz clic en RptTextBox y coloca cajas de texto en la seccin 1 Detail. e) Ahora selecciona la primer caja de texto y haz clic en la cajita que se halla en la esquina superior izquierda para mostrar las propiedades de las cajas de texto y modifica sus propiedades como sigue: DataMember: Command1 DataField: selecciona el campo que corresponda de la tabla y repite los pasos para cada caja de texto para que se vea ms o menos as.