P. 1
Uso Del Control Data

Uso Del Control Data

|Views: 1.578|Likes:
Publicado porKazoa Habbo

More info:

Published by: Kazoa Habbo on Aug 03, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOC, PDF, TXT or read online from Scribd
See more
See less

03/06/2013

pdf

text

original

Uso del Control Data En Visual Basic puede utilizar el control Data para crear aplicaciones de bases de datos

para una gran variedad de formatos de base de datos. El control Data interactúa con el motor de base de datos Microsoft Jet y permite crear aplicaciones preparadas para datos con la mínima cantidad de código posible. En esta sección se explica cómo utilizar el control Data y otros controles avanzados enlazados a datos para ver, modificar y actualizar información de una base de datos. 5.3.1 Introducción 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 terminología 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 Método 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 Métodos de Acceso a Datos

He aquí otros métodos 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 código. En esta sección 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 tecnología proporciona acceso a muchos formatos de base de datos y le permite crear aplicaciones que manejan datos sin necesidad de escribir código.

 Uso de Controles Enlazados a Datos Cuando enlaza un control enlazado a datos que ha colocado en un formulario, se muestran automáticamente los datos de la base de datos en el control enlazado. Si un usuario cambia los datos de un control enlazado, dichos cambios se actualizarán automáticamente en la base de datos en cuanto el usuario se desplace a otro registro. Muchos controles intrínsecos de Visual Basic están enlazados a datos, como es el caso de los controles CheckBox, Image, Label, PictureBox, TextBox, ListBox, ComboBox y los contenedores OLE.

La siguiente ilustración es un ejemplo de un formulario que contiene un control Data y dos controles enlazados.

Enlazar Controles

Después de establecer los valores de las propiedades para el control Data, es necesario enlazar al control Data los controles enlazados a datos individuales y después especificar qué campo de la tabla mostrará cada control. Uso de las Propiedades y métodos del Control Data Para especificar qué datos desea recuperar, debe establecer las propiedades DatabaseName y RecordSource de un control Data. Además, puede establecer las siguientes propiedades y métodos:       Propiedad Connect Propiedad Exclusive Propiedad ReadOnly Propiedad Recordset Propiedades BOFAction y EOFAction Método Refresh El Objeto Recordset En una aplicación 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, transfiriéndose al disco si es necesario.  Determinar los límites de un Recordset

Si utiliza código para cambiar la posición 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 acción indicada por el valor de la propiedad BOFAction o EOFAction. En la siguiente ilustración se muestra cómo las propiedades BOF y EOF determinan los límites 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 código: Data1.Recordset.MoveNext 'Va al registro siguiente. If Data1.Recordset.EOF Then Data1.Recordset.MoveLast End If Uso de las Propiedades y Métodos de Recordset Utilice los métodos y las propiedades del objeto Recordset para recuperar información del conjunto de registros, desplazarse por los registros y agregar, actualizar o eliminar registros.      Propiedades BOF y EOF Método AddNew de Recordset Método UpdateRecord del control Data Método CancelUpdate del control Data El método Delete

El siguiente código muestra el uso de las propiedades y métodos de un Recordset: Sub cmdCancel_Click () Data1.CancelUpdate End Sub

Recordset. action As Integer.Recordset. Puede utilizar el evento Validate para pedir al usuario que confirme los cambios realizados.UpdateRecord End Sub Sub cmdAdd_Click () Data1.Delete Data1.MoveNext If Data1. Error y Reposition.Sub cmdUpdate_Click () Data1. MoveLast . MoveNext.Recordset.3. Usar el Evento Validate Utilice el evento Validate para comprobar los datos antes de guardar un registro en la base de datos.  Sintaxis: El evento Validate tiene la siguiente sintaxis: Private Sub Data1_Validate (index As Integer.Recordset. 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. El evento Validate se produce como resultado de realizar las operaciones siguientes:  MoveFirst.MoveLast End If End Sub 5.Recordset.EOF Then Data1.3 Uso de Eventos del Control Data El control Data proporciona tres eventos que puede utilizar para mejorar la aplicación de base de datos: Validate.AddNew End Sub Sub cmdDelete_Click () Data1. Dichos eventos le permiten omitir parte del comportamiento predeterminado del control Data. save As Integer)  El argumento action El argumento action indica la operación que provocó el evento Validate. MovePrevious.

Por ejemplo. Cada registro mostrará la información sobre un empleado distinto. utilice la propiedad AbsolutePosition del objeto Recordset.  El argumento save El argumento save indica si va a guardarse o no el registro. El código siguiente utiliza el evento Reposition para modificar la apariencia de un formulario: . El número de registro es relativo a cero.       AddNew Update Delete Find Establecer la propiedad Bookmark Cerrar la base de datos Descargar el formulario Para cancelar cualquiera de estas acciones. Para que se seleccione la opción correcta para cada registro. temporales. cuyas opciones pueden no ser las mismas para todos los registros. escriba código en el evento Reposition.  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. asigne al argumento action el valor vbDataActionCancel. los datos enlazados han cambiado. También se produce la primera vez que se abre la base de datos. si trabajan por horas o si son becarios. Para ver el número del registro actual. Usar el Evento Reposition Utilice el evento Reposition para modificar la apariencia de un formulario o realizar una acción necesaria cuando se desplace a un nuevo registro. Para cancelar la acción de guardar puede asignar a save el valor False.  Modificar la apariencia de un formulario Para cambiar la manera en que un formulario muestra información basándose en el registro seleccionado en ese momento hay que utilizar el evento Reposition. es posible que en un formulario que muestre registros de empleados haya distintas opciones dependiendo de si los empleados son fijos. puede modificar el título del control Data de forma que se muestre el registro número n. Este evento tiene lugar cuando Visual Basic desplaza el puntero del registro actual a otro registro de la base de datos. por lo que el primer registro es el 0. Por ejemplo. Si save es True.

se producirá el evento Error.Value = True Else optJunior.Private Sub Data1_Reposition() Data1. Por ejemplo. . Si se produce un error de acceso a datos durante la actualización.AbsolutePosition If Data1.Caption = "Registro " & _ Data1.Recordset. Usar el Evento Error El evento Error tiene lugar cuando un usuario interactúa con el control Data y se produce un error de acceso a datos.AbsolutePosition + 1 End Sub Esta ilustración muestra el formulario basado en el código anterior.Caption=Data1. Los valores de los campos enlazados no cambian tras producirse un error. el control Data actualizará el registro actual. El usuario puede corregir los valores y hacer clic en el control Data para tratar de actualizar nuevamente el registro. Utilice el evento Error para agregar tratamiento de errores personalizado al control Data.Recordset("IdEmpleado") > 5 Then optSenior.Recordset. si un usuario modifica un campo y después hace clic en el control Data para desplazarse al siguiente registro.Value = True End If Data1.

 Mostrar un mensaje de error personalizado Si no coloca código para tratar errores en el evento Error y se produce un error cuando un usuario interactúa con el control Data. .  Mostrar múltiples registros DBGrid es un control ActiveX que muestra una serie de filas y columnas que representan registros y campos de un objeto Recordset. el control DBGrid se llenará automáticamente de datos y se establecerán automáticamente sus encabezados de columna a partir del conjunto de registros del control Data. el control DBGrid le permite ver y modificar varios registros simultáneamente. Usar el Control DBGrid El control de cuadrícula enlazada a datos (control DBGrid) permite que los usuarios de su aplicación de base de datos trabajen con varios registros a la vez. Visual Basic ofrece varios controles ActiveX enlazados a datos. Al contrario que la mayoría de los controles enlazados a datos. En esta sección se describen algunos controles ActiveX enlazados a datos avanzados. Visual Basic muestra el mensaje de error y el programa continúa ejecutándose. Si no desea que se muestre el mensaje de error estándar. 5.4 Uso de Controles Enlazados a Datos ActiveX Además de los controles enlazados intrínsecos. Cuando asigne a la propiedad DataSource del control DBGrid un control Data.3. En la siguiente ilustración se muestra un formulario que utiliza un control DBGrid para presentar registros procedentes de la base de datos Neptuno. puede asignar al argumento Response el valor 0.

Por ejemplo: MsgBox DBGrid1. También puede establecer propiedades para columnas individuales del control DBGrid. cuando se enlaza a un control Data.Col). cambie el objeto Recordset asociado.  Obtener y establecer texto de la celda actual Utilice la colección Columns del control DBGrid para recuperar el texto de la celda seleccionada actualmente en tiempo de ejecución. . Puede validar los datos y cancelar la actualización si es necesario.  Usar el evento BeforeUpdate El evento BeforeUpdate tiene lugar antes de que se muevan datos desde un control DBGrid al búfer de copia del control Data. Usar el Control MSFlexGrid El control MSFlexGrid proporciona características avanzadas para la presentación de datos en una cuadrícula. etc. agregar valores predeterminados. Puede utilizar el control MSFlexGrid para combinar filas o columnas de información y así agrupar la información relacionada. Por ejemplo. Puede cambiar el título de la columna. En la siguiente ilustración se muestran registros agrupados por Id. si asigna a la propiedad AllowUpdate el valor True. un usuario puede modificar los datos del control.Columns(DBGrid1. el control MSFlexGrid muestra datos de sólo lectura.El control DBGrid tiene varias propiedades que especifican cómo se comporta el control.Text Para cambiar la información del control DBGrid. de pedido en la tabla Detalles de pedidos. cambiar el campo de datos al que se enlaza la columna. Es similar al control DBGrid aunque.

) y utilizar el Id. Por ejemplo. Acceso a base de datos de Access 2000 Usando el ADO data control . El cuadro combinado enlazado a datos contiene todos los valores de ese campo. correspondiente cuando el usuario agregue o modifique datos. puede presentar una lista de nombres de categoría válidos (en vez de Id.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 automáticamente una lista de valores de un Recordset. Esto resulta útil para proporcionar valores válidos al usuario. Para determinar qué campo de la base de datos se actualiza cuando un usuario cambia un valor. Para establecer la relación entre la tabla que contiene los valores de búsqueda y la tabla que se está modificando realmente. La ilustración siguiente muestra un formulario que utiliza el control DBCombo para presentar nombres de categorías de la tabla Productos. asigne a la propiedad RowSource un nombre de control Data y a la propiedad ListField un nombre de campo. establezca las propiedades DataSource y DataField.  Establecer propiedades del control DBCombo Para determinar el valor que se presenta en el control DBCombo. establezca la propiedad BoundColumn.  Obtener información de una tabla de búsqueda También puede utilizar estos controles en aplicaciones de "tabla de búsqueda".

o bien has conseguido las DLLs de ADO (ActiveX Data Object).. en Proyecto/Componentes. Pero si tienes la versión 6. puedes usarlas sin problemas.. te preguntará si quieres crear un array del control Text1.Publicado: 31/Ago/1999 Actualizado: 31/Ago/1999 Si has intentado usar una base de datos creada o convertida con el Access 2000... estará seleccionada la opción "Use Connection String". selecciona Microsoft Jet 4. y espera un poco que ya mismo termino.. cambia el tamaño.. Te mostrará un cuadro de diálogo. (si tienes la que .0 y los datacontrol DAO sólo "entienden" hasta la versión 3.5.) En la ficha General. sitúalo donde más coraje te de y añade un TextBox. en la ventana de propiedades pulsa en Custom.. selecciona Pegar. en la ficha "Provider". te habrás llevado una pequeña sorpresa al ver que usando el Data control que se incluye en el Visual Basic no te permite hacerlo.. pulsa en cualquier lado del Form y pulsa el ratón derecho del ratón. Esto es porque el nuevo formato de Access usa el motor Jet versión 4. En el siguiente código veremos cómo abrir y movernos en una base de datos. ancho 2955. Ahora tendrás tres controles Text1 con los índices desde 0 a 2 Si te parece demasiado "básico" todos estos pasos... pero espero que no te lies...0 OLE DB Provider.. (puede que si tienes la versión en castellano del VB.. ya que la versión que tengo está en inglés. pulsa el botón derecho y copialo. Nota: En el zip con el código de ejemplo se acompaña una base de datos de prueba creada con Access 97 y otra con el Access 2000. Para empezar: Crea un nuevo proyecto. cámbiale la altura a un valor pequeño: 315 está bien. pulsa Aceptar y verás que se añade un nuevo control a la barra de herramientas: ¡Ese será el control que usaremos! Haz dobleclick en ese control para que se añada al formulario.. Crea un array del Text1 recién añadido: Selecciona el Text1.0 de Visual Basic. responde que SI.. Vuelve a pegar de nuevo y se creará un tercer Text1. pulsa en el botón "Build. incluso con el ADO Datacontrol. Ahora vamos a configurar el ADO datacontrol: Selecciona el datacontrol. selecciona Microsoft ADO Data Control (OLEDB). yo le he dado estos valores: alto 315.. en este caso.. pulsa en "Next>>" y selecciona la base de datos que quieres usar. te aguantas." Te mostrará otro cuadro de diálogo. lo mismo dará que la base de datos haya sido creada con Access 97 o con el Access 2000. no te muestre lo que yo te digo.

En la ventana de propiedades. Ahora tenemos que decirle que tabla usar y otras cosillas. en este caso Table1 y pulsa en Aceptar.están incluidas en el ZIP. selecciona el nombre de la tabla que quieres usar.4.RecordSource = "Table1" ' Refresh es necesario para que se cargue la tabla Adodc1. selecciona "Nombre" Haz lo mismo con los otros dos Text1. .mdb). se llamará db2000. 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 selección actual. Selecciona la propiedad CursorType y de la lista desplegable selecciona 2-adOpenDynaset. el resto de opciones déjalos como está.Refresh Nota: En el código de ejemplo asignaremos en tiempo de ejecución la base de datos y demás conexiones necesarias. ya que se supone que aceptará textos más grandes porque el tipo de campo es "Memo" Ya puedes pulsar en F5 para probar que todo esto funciona.OLEDB.CursorType = adOpenDynamic ' Conectarlo a la tabla de prueba Adodc1.mdb" Adodc1. Esto mismo se puede hacer mediante código. selecciona: 2-adCmdTable. De la lista desplegable (Command type).Jet. Selecciona la propiedad RecordSource y pulsa en el botón. para ello asígnale estos valores al datacontrol: (por ejemplo en el evento Form_Load) ' Indicar la base de datos a usar Adodc1.0. Ahora será necesario "ligar" los cuadros de texto con el Datacontrol y los campos correspondientes: Selecciona los tres Text1. selecciona DataField y de la lista desplegable.Path & "\db2000. selecciona "e-mail" y para el otro: "Comentario" Este último control sería conveniente que lo hicieras más grande y MultiLine. pero para el de índice 1. pulsa en "Aceptar" dos veces para que se cierren los cuadros de diálogo. la lista "Table or Stored Procedure Name" se habrá habilitado. te mostrará un cuadro de diálogo. Selecciona el Text1 con índice 0.ConnectionString = "Provider=Microsoft." & _ "Data Source=" & App.

DataField = "e-mail" Text1(2). _ ByVal pRecordset As ADODB.Jet.CursorType = adOpenDynamic ' Conectarlo a la tabla de prueba Adodc1. pero si quieres hacerlo manualmente.RecordSource = "Table1" ' Refresh es necesario para que se cargue la tabla Adodc1. en este caso el campo ID de la tabla. _ adStatus As ADODB.OLEDB." & _ "Data Source=" & App.Recordset) ' Mostrar el ID del registro actual .Refresh ' Conectar manualmente los Text1 al recordset Dim i As Long ' Asignar el control data For i = 0 To 2 Set Text1(i).EventReasonEnum.4.0.DataField = "Comentario" End Sub Para que el Caption del data control nos muestre el número de registro. añade este código: Private Sub Adodc1_MoveComplete(ByVal adReason As ADODB.DataField = "Nombre" Text1(1). añade lo siguiente en el evento Form_Load: Private Sub Form_Load() ' Indicar la base de datos a usar Adodc1.Realmente no es necesario añadir nada de código.Error.ConnectionString = "Provider=Microsoft.DataSource = Adodc1 Next ' Asignar los nombres de los campos Text1(0).EventStatusEnum.mdb" Adodc1. _ ByVal pError As ADODB.Path & "\db2000.

Caption = "ID del Registro: " & Adodc1. dará error On Local Error Resume Next ' Mostrar el ID del registro actual usando el recordset pasado como parámetro 'Adodc1.Recordset. Para tener estas dos opciones.' si se pasa del primero o del último. en otra ocasión te mostraré cómo hacer esto mismo pero sin usar el data control.Recordset.AddNew End Sub Private Sub cmdDel_Click() Adodc1. al primero lo llamas cmdAdd y en el Caption escribe Añadir.Caption = "ID del Registro: " & pRecordset!ID ' También se puede usar: Adodc1. al otro botón le cambias el nombre a cmdDel y en el Caption escribe: Eliminar.Delete End Sub Bueno.Recordset!ID Err = 0 End Sub Añadir y borrar registros de la tabla. añade dos botones al formulario. Añade el siguiente código: ' Private Sub cmdAdd_Click() Adodc1. creo que con esto tienes para empezar. 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 .

Pero como resulta que aún hay mucha gente que usa los controles "enlazados" y los data control y los asigna en modo de diseño. Usando controles enlazados DAO Estos son los pasos que debemos seguir para poder hacer el proyecto de prueba: . Los precedentes (la situación) Empecemos el ejemplo usando DAO. es decir cuando la aplicación esté ejecutándose. pues. Seguramente si lees el párrafo anterio en la que te digo lo que te voy a explicar. Seguramente cuando te explique la situación en la que puede ser útil saber lo que te voy a contar... no te parecerá nada del otro mundo. ya que eso se ha dicho y explicado en varias ocasiones. pero lo haremos en tiempo de ejecución. ya que en VB6 puede que haya más gente (sobre todo los que empiezan) que usen el DataControl que está de forma predeterminada en la barra de herramientas...Indicar el path de la base de datos usando un data control Ejemplos con ADO y DAO Publicado: 18/Sep/2004 Actualizado: 18/Sep/2004 Autor: Guillermo 'guille' Som En este ejemplo vamos a ver cómo indicar el path en el que se encuentra la base de datos. cambies de opinión. para ellos seguros que le irá bien esta "historia" que voy a contar.

Ahora vamos a añadir un control DataGrid.). Para ello nos vamos a la ventana de propiedades (el DataGrid debe estar seleccionado) y buscamos la propiedad DataSource. 3.1. se vaya a la ventana de propiedades. Para añadir un DataGrid tendremos que hacer lo siguiente: 1. . En este ejemplo será Data1 (que debería ser el único que se muestre). nos mostrará un cuadro de diálogo con los controles ActiveX que podemos añadir a nuestra aplicación. Nota: En el zip con el código completo he incluido una base de datos de prueba. Hecho todo esto.Creamos un nuevo proyecto de Visual Basic 6 (cuando digo VB6. lo cambiamos de tamaño y posición y ahora le indicaremos de dónde obtendrá los datos. Copia esa base de datos (db2000. en mi caso sería 5. tendremos que indicarle la tabla a la que queremos acceder.. Esto añadirá a la barra de herramientas el control DataGrid y haciendo doble-click en él.Una vez que hemos indicado el nombre de la base de datos. 2. 2.Ahora le asignamos la base de datos que usaremos. podemos pulsar F5 para ejecutar la aplicación 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. de la lista desplegable seleccionamos el DataControl que usaremos para obtener los datos.En el menú Proyecto (Project) seleccionamos Componentes (Components. seleccione la propiedad DatabaseName y busque una base de datos (pulsando en el botón con los tres puntos suspensivos). que está en el Toolbox y se creará un objeto en el formulario llamado Data1.mdb) en el mismo directorio del proyecto y úsala para asignarla al control data. también se puede aplicar a VB5 e incluso a VB4).Seleccionamos el nuevo control que tenemos en el formulario. De ese cuadro de diálogo seleccionaremos Microsoft Data Bound Grid Control (también se indicará la versión del VB y el SP que se está usando. De esa forma será más fácil seguir las indicaciones de este artículo. lo más usual es que el usuario seleccione el DataControl. añadimos el control Data. Estos tres pasos serán los que nos permitan acceder a una base de datos desde nuestro proyecto de VB6. de forma que podamos manejar de forma simple los datos de nuestra base de datos y de la tabla seleccionada. Para ello tendremos que seleccionar la propiedad RecordSource y elegir de la lista desplegable la tabla a usar.. lo añadiremos al formulario.0 (SP3)).

Corta el ejecutable y la base de datos (se supone que la base de datos estaba en el mismo directorio del proyecto. tal como se comenta en la nota) 4. La aplicación se abrirá..Crea un directorio en otro sitio. vamos a hacer ahora lo siguiente: 1. 3. la única forma de que funcione es creando un directorio que se encuentre en el mismo "camino" que el que nosotros tenemos en nuestro equipo. El problema (colateral): Pero. 2. imagínate que lo que quieres hacer. La solución: Para que la aplicación vuelva a funcionar.Pégalos en el nuevo directorio. Para probar que no siempre funcionará. pero en el DataGrid no habrá nada. Por ejemplo. ya sabes. Como hemos podido comprobar. doble-click. Para compilar el proyecto y crear el ejecutable. es distribuir esta aplicación y la base de datos.. 5. ¿que pasa si el disco E del cliente es un CD-ROM? .) Al ejecutarse la aplicación.Para probar que todo esto funciona como debe vamos a compilar el proyecto (crear el ejecutable) y veamos si siempre funciona.. Haciendo que falle todo esto. Ahora ve al directorio en el que está el EXE y ejecútalo (haz doble-click en él)..Asegúrate de que has cerrado la aplicación.. tendríamos que volver a copiar la base de datos en el directorio en el que estaba (el del proyecto). en mi caso el directorio del proyecto es: E:\gsCodigo\VBpruebas\Bases de datos\indicar el path de una base de datos usando Data Control\conDAO ¿Que pasa si el cliente no tiene un disco E? O. ya que no se ha podido abrir la base de datos y por tanto no se pueden "ver" esos datos. selecciona la opción Make del menú File (si tienes el VB en español. debería mostrarte lo mismo que cuando pulsaste F5 desde el IDE (entorno de desarrollo) de VB.Abre el ejecutable (ejecútalo.. seguramente tendrá otros nombres). peor aún.. Cierra también el VB6. nos indicará que no se puede encontrar la base de datos y nos mostrará el path en el que estaba anteriormente.. Si has seguido los pasos de forma correcta. Compruébalo moviendo (cortar y pegar) la base de datos al directorio del proyecto.

Por ejemplo si leemos el path de un fichero de configuración (INI) o desde el registro de Windows usando GetSetting. nos dará igual si el disco en el que está la base y el exe es el disco C.DatabaseName = App. y lo más importante es: sea cual sea ese directorio. además de que el directorio puede ser cualquiera. indicamos que el directorio en el que se encuentra la base de datos es el mismo directorio desde el que se está ejecutando la aplicación.mdb" End Sub De esta forma le indicamos al control data dónde localizar la base de datos y todo volverá a funcionar de forma satisfactoria. Este primer ejemplo es para usar con acceso a datos DAO. Nota: Si tienes varias tablas en la misma base de datos y también tienes varios controles data y a la vez varios controles DataGrid enlazados con esos controles data. El resto de propiedades no hace falta cambiarlas ya que seguirán siendo los mismos valores. Si la base de datos está en el mismo directorio que el ejecutable. tendremos que crear esos directorios para que todo funcione. etc..Path & "\db2000. ¿Cómo podemos hacerlo? Indicándole al programa dónde está la base de datos. Ahora veamos cómo hacer lo mismo pero con controles ADO. el E o el X. ¿Cual es la mejor solución? Creo que sería mejor que el programa pudiera funcionar si tanto el ejecutable y la base de datos están en el mismo directorio. En este código. lo único que tendrías que hacer es asignar a todos los controles data el path correcto de la base de datos. podemos hacer lo siguiente: Private Sub Form_Load() Data1. En el caso de que la base de datos esté en otro directorio.Pues que no funcionará el programa.. Es decir. simplemente tenemos que usar ese directorio a la propiedad DatabaseName del data control. . Y en caso de que si tenga un disco E.

en el cuadro de diálogo tenemos que seleccionar el control data de ADO..OLEDB. -De las tres opciones que nos muestra. (usando ADO).Creamos un nuevo proyecto de VB6 2.). . enlazarlos con la base de datos.Con los dos pasos anteriores tendremos en el Toolbox dos nuevos controles.0 (SP5) (OLEDB). En la ventana de propiedades seleccionamos ConnectionString y pulsamos en el botón con los tres puntos suspensivos para que se muestre el asistente de conexión. etc. déjalos con los valores predeterminados.. -De la segunda lista selecciona la tabla que quieres usar (en nuestro caso será Table1).0 (si no se muestra.Repetimos el paso anterior. es casi lo mismo que en el caso de DAO.adCmdTable. Select or enter a database name o pulsa en el botón con los tres puntos para seleccionar una base (recuerda usar la base de datos que acompaña al código la cual debe estar en el mismo directorio del proyecto) -No escribas nada en usuario y password.Jet. Así que. -Seleccionamos la primera ficha (Provider) y de la lista de proveedores que muestra seleccionamos Microsoft. -Escribe el nombre de la base de datos en la caja de texto que hay bajo 1. -Para comprobar que se puede abrir la base de datos. Asegúrate que el control data está seleccionado y en la ventana de propiedades selecciona RecordSource y pulsa en el botón con los tres puntos para que se muestre el asistente.En el menú Proyecto (Project) seleccionamos Controles (Controls. y se mostrará otro cuadro de diálogo. es que no tienes ese proveedor y la base de datos de ejemplo no te funcionará) -Pulsa en Next>> para indicar el nombre de la base de datos. agregar los controles. 5. te dirá que la conexión ha funcionado correctamente. veamos paso a paso cómo crear el proyecto. 3. pero en esta ocasión seleccionamos Microsoft DataGrid Control 6. 6. -De la primera lista desplegable selecciona 2.Usando controles enlazados ADO Tal como vamos a comprobar. lo que vamos a hacer en esta ocasión.Ya tenemos asignado el control data para que sepa que base de datos y que tabla debe usar. seleccionamos la última: Use Connection String.Ahora vamos a indicar que tabla queremos usar.4.. pulsamos en el botón Build. 1. además de que el control data de ADO no tiene las mismas propiedades que el de DAO. 4.. 7. hacemos doble-click en cada uno de ellos para agregarlos al formulario. pulsa en el botón Test Connection y si todo va bien. lo único que cambiará serán los controles que vamos a usar. ya que usaremos autentificación de Windows para abrir la base.Seleccionamos el control data (Adodc1) para indicar la base de datos y la tabla que vamos a usar. el cual (en mi caso) tiene el nombre Microsoft ADO Data Control 6.. se mostrará la segunda ficha (Connection). etc.0 (SP4) (OLEDB).

.Pulsa F5 para probar que todo funciona bien. la base de datos tiene que estar en el path indicado en tiempo de diseño. la base de datos que usará el ejecutable (el cual no tiene ni una línea de código) será la que hemos indicado en el control data.mdb. Esto último no es "estrictamente" necesario.Jet. 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 conexión a la tabla que queremos usar.Recordset porque debemos asignar los datos que el control data ha cargado.8. es decir. Si hacemos la misma prueba que antes de compilar la aplicación y mover el ejecutable y la base de datos a un directorio diferente.Ahora vamos a indicarle al DataGrid que use el control data como fuente de datos.0.Refresh para que se carguen los datos desde la base de datos." & _ "Persist Security Info=False" Adodc1.Refresh Set DataGrid1.Recordset End Sub En el caso de ADO. con los mismos problemas. no funcionará. Por tanto para que funcione. 9. Aquí tenemos el código a añadir al proyecto para que todo funcione correctamente: Private Sub Form_Load() ' Aquí se puede indicar el path de la base de datos: Adodc1. pero resulta que el control data ADO no tiene una propiedad DatabaseName como su primo el data control DAO.DataSource = Adodc1. además de indicarle el path correcto debemos usar este código adicional: Adodc1." & _ "Data Source=" & App. por tanto debemos modificar dicha cadena de conexión para que apunte a la base de datos adecuada. Con todos estos pasos tendremos una aplicación similar al del ejemplo anterior y además. En el control ADO tenemos que usar la cadena de conexión (como en las bases de datos de SQL Server).OLEDB. pero si no lo hacemos el contenido de la base de datos no será el correcto.ConnectionString = "Provider=Microsoft. en nuestro caso Adodc1.4. Set DataGrid1.DataSource = Adodc1.Path & "\db2000. La primera opción de ADO para que funcione: Para que funcione debemos indicarle al data control dónde se encuentra la base de datos. ¿Por qué este código extra? Por la sencilla razón de que el control data intentará obtener los datos de la base de datos y después rellenar el DataGrid.

OLEDB. Con lo cual la cadena de conexión podría quedar de la siguiente forma: Provider=Microsoft. todo esto lo necesitarán los que no tengan mucho manejo con el uso de bases de datos. en este caso.OLEDB. ni tampoco asignar el RecordSource. la base se buscará en el mismo path del ejecutable. La segunda opción de ADO para que funcione Por tanto es preferible no asignar en tiempo de diseño la cadena de conexión a la base de datos.Recordset End Sub En este caso.Jet. Bueno.mdb. de esta forma.mdb. La tercera opción de ADO para que funcione Otra opción es no indicar el path de la base de datos. se mostrará un mensaje de aviso de que la base de datos no se ha encontrado.Persist Security Info=False Y ya no será necesario usar ningún código en el evento Load del formulario." & _ "Data Source=" & App.Path & "\db2000. lo que hacemos es indicar también la tabla de la que se extraerán los datos.Jet. ..Data Source=db2000..Refresh Set DataGrid1.0. (las cuales he preferido indicarlas en plan "paso a paso para principiantes" porque. confío en que con estas explicaciones.RecordSource = "Table1" Adodc1. sino sólo el nombre de la base.4. te quede más 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.).DataSource = Adodc1. el código a usar será el siguiente: Private Sub Form_Load() ' Aquí se puede indicar el path de la base de datos: Adodc1. aunque después cargará bien los datos y funcionará correctamente.ConnectionString = "Provider=Microsoft." & _ "Persist Security Info=False" Adodc1.Además. en el caso del control data de ADO si la base de datos no está en el sitio adecuado.4. casi con seguridad.0.

El nombre que vamos a elegir para nuestra primera conexión va a ser el de Listados. En un principio vamos a ponerle un nombre a esta conexión. . Como vemos. Bueno lo primero que debemos hacer es dar un nombre a nuestro Entorno de Datos. y luego definiremos sus propiedades. dteEntornoDatos. para ello nos iremos al menú Proyecto y elegiremos la opción Agregar Data Environment. debajo del Entorno de datos aparece un nuevo objeto. Pues bien. Para ello nos colocaremos en la propiedad Nombre del DataEnvironment y escribiremos su nombre. el objeto Connection.DATA ENVIRONMENT Lo primero que veremos es cómo agregar el Entorno de Datos a nuestro proyecto. Por ejemplo. En nuestro proyecto tendremos algo parecido a lo mostrado en la figura siguiente.

Porqué este nombre. y como esta conexión va a contener los listados que van a generar nuestros informes. Nos situaremos encima de la conexión con el ratón. y pulsando el botón derecho del mismo elegimos la opción Propiedades del menú contextual. bueno normalmente solemos darle a nuestros objetos. pues por eso le damos este nombre. . La figura a la izquierda. Ahora vamos a definir las propiedades de la conexión. muestra las propiedades de nuestra conexión. nombres descriptivos para los mismos.

que se encuentra en el directorio VB98 de Visual Basic. Ahora pulsamos el botón Siguiente y se abre la pestaña Conexión. ya que nuestra base de datos está creada con Access 97. En ella deberemos seleccionar la base de datos de la cual tomaremos la información para confeccionar los informes.En la pestaña Proveedor. Para nuestro ejemplo. En nuestro caso se ha seleccionado la base de datos Biblio. que contiene la información que debe generar nuestros informes.51 OLE DB Provider. deberemos seleccionar el motor que se encargará del manejo de las tablas de la base de datos.mdb. seleccionaremos Microsoft Jet 3. .

¡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 .

La situación que genera este tipo de problemas de actualización (en rigor no es un problema de actualización de datos.State = adStateOpen Then .Close End If End With End Sub Nota: rsCommand1 es el recordset del objeto Command asociado al reporte.. y siempre hablando de un DataReport enlazado en tiempo de diseño al entorno de datos. la manera en que el objeto Data Report. y esto no es así. en reiteradas oportunidades en distintos foros de programación. intentar resolverlas por medio de este artículo. Puntualmente. Pero no sucede lo que uno esperaría al cerrar el reporte. Cuando un usuario cierra un reporte. Hay que codificar el cierre del Recordset subyacente. interactúa con los objetos Command del Data Environment cuando ambos están enlazados en tiempo de diseño.rsCommand1 If . cuando cierro el Data Report y lo vuelvo a abrir luego de haber agregado datos. Muchas veces he visto en foros de programación la siguiente consulta: ". . Luego al ejecutar el programa y mostrar el reporte la información nueva si aparece. el Recordset de datos no se cierra junto con él.. Es entonces mi inquietud... en realidad es muy sencilla. Y la solución. la apertura y cierre del Recordset. es que al momento de utilizar la instrucción Datareport." Lo que sucede aquí.Show se abre el Recordset perteneciente al objeto Command enlazado a la propiedad DataMember del reporte.Data Report y Data Environment La intención de este artículo consiste en aclarar. tiene que ver con que el programador usualmente asume que el recordset se cerrará automáticamente al descargar el reporte. Sucede que he visto consultas relacionadas con esta situación. el reporte no los muestra hasta que cierro la aplicación. mas bien es una dificultad para visualizarlos cabalmente). A continuación se expone código que ejemplifica esta situación: Private Sub Datareport1_Terminate() ' Cerramos el recordset en el evento terminate del reporte ' Previa verificación del estado de éste para evitar errores ' en tiempo de ejecución With Dataenvironment1.

Comando Introducción 1. . Opciones del menú 8. Reporte II 12. Reporte III 13. Visual Basic 2. Reporte IV Para crear reportes en Visual Basic vamos a crear primero el Data Environment (Entorno de Datos) el cual es una herramienta para crear reportes tal como Crystal Reports o Access. b) Haz clic en Add Data Environment c) Y se abrirá el Data Environment mostrando el nombre del proyecto en su barra de título.Cómo crear un reporte usando Visual Basic Capítulo anterior: 7 . Formularios 5. Base de datos 3. Reporte I 11. Tablas 4. Comando 10. Cómo crear un reporte usando Visual Basic 9. La conexión de base de datos 6. Menú 7.Opciones del menú Capítulo siguiente: 9 . Creando el Data Environment a) Haz clic en el botón Project de la barra de herramientas.

etc. e) Más abajo se puede ver otro objeto con una clavija eléctrica llamado Connection1 al cual también puedes cambiarle el nombre modificando su propiedad (Name) por otro como Alumnos. Maestros. f) Ahora haz clic con el botón derecho del ratón sobre la Connection1 y haz clic en Properties.. . g) Y aparecerá la caja Propiedades de vínculo de datos. etc.d) En la ventana aparece un pequeño icono de un reporte al cual puedes cambiarle el nombre fácilmente seleccionándolo y modificando su propiedad (Name) por otro como Reportes.. haz clic en la opción Conexión.

haz clic en el botón Base de datos. . j) Selecciona el tipo de base de datos en donde se creó la base de datos. i) Y aparecerá la caja Seleccionar origen de datos. en nuestro caso MS Access Database y haz doble clic ahí... haz clic en la opción Origen de datos de equipo.h) Haz clic en: Usar la cadena de conexión y haz clic en Generar. k) Y aparecerá la caja Conexión.

m) Enseguida se vuelve a mostrar la caja Conexión también haz clic en Aceptar. para finalizar la conexión haz clic en Aceptar. mostrando en la caja de texto Cadena de conexión bajo Usar la cadena de conexión la ruta de la base de datos que hemos conectado. localiza la carpeta en donde se halla tu base de datos. . selecciónala y haz clic en Aceptar. n) Y se mostrará la caja Propiedades de vínculo de datos.l) Y aparecerá la caja Seleccionar base de datos.

vamos a emplear una muy sencilla. haz clic en RptLabel y coloca etiquetas con los títulos de los encabezados de la tabla y modifica sus propiedades Font. haz clic en RptTextBox y coloca cajas de texto en la sección 1 Detail.Reporte II Creando la estructura del reporte a) En Visual Basic haz clic en el botón Project de la barra de herramientas y haz clic en Add Data Report y se mostrará la caja DataReport1. 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 más o menos así. A tu gusto. y modifica su propiedad Caption con el título que tendrá el reporte. b) Hay varias maneras de elaborar la estructura del reporte. c) Ahora en la sección 2 PageHeader. ReportHeader. la caja de herramientas y la caja de propiedades para trabajar en el DataReport. . d) Al terminar. haz clic en la herramienta RptLabel y dibuja una etiqueta en la sección 4. ForeColor. etc.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->