16
Universidad Austral de Chile Facultad de Ingeniería Instituto de Informática Ramo de Programación Felipe Bastidas M. Página 1 Hoy vamos trabajar con base de datos en archivos Access, para esto primero tenemos que realizar unos pasos sencillos. Abrimos Microsoft Access, como lo muestra la imagen de arriba. Puede que la ubicación varíe según la versión de Office que este instalada. Una vez abierto, en el menú archivo seleccionamos nuevo (ver arriba) y creamos una base de datos en blanco (ver derecha). Estas instrucciones corresponden a una versión de Office XP por lo que en versiones anteriores aparecerá una ventana con distinto formato pero prácticamente con las mismas opciones.

Clase05Vb

Embed Size (px)

DESCRIPTION

clase de visual basic con apuntes complementarios de programación

Citation preview

  • Universidad Austral de Chile Facultad de Ingeniera Instituto de Informtica Ramo de Programacin

    Felipe Bastidas M. Pgina 1

    Hoy vamos trabajar con base de datos en archivos Access, para esto primero tenemos que realizar unos pasos sencillos.

    Abrimos Microsoft Access, como lo muestra la imagen de arriba. Puede que la ubicacin vare segn la versin de Office que este instalada.

    Una vez abierto, en el men archivo seleccionamos nuevo (ver arriba) y creamos una base de datos en blanco (ver derecha).

    Estas instrucciones corresponden a una versin de Office XP por lo que en versiones anteriores aparecer una ventana con distinto formato pero prcticamente con las mismas opciones.

  • Universidad Austral de Chile Facultad de Ingeniera Instituto de Informtica Ramo de Programacin

    Felipe Bastidas M. Pgina 2

    Ahora nos pregunta donde queremos guardar nuestra base de datos, en este caso crearemos una carpeta nueva con el nombre Test haciendo click donde indica el circulo rojo. Finalmente lo guardamos dentro de la nueva carpeta obviamente con el nombre bd1.mdb (sin comillas) u otro mas adecuado al programa.

    Luego aparecer una ventana similar a la de abajo y hacemos doble click en crear una tabla en vista de diseo.

  • Universidad Austral de Chile Facultad de Ingeniera Instituto de Informtica Ramo de Programacin

    Felipe Bastidas M. Pgina 3

    Esta es la vista de diseo de una tabla de Access. En ella definiremos el nombre de los campos y su correspondiente tipo de dato.

    Para comenzar escribiremos el nombre del campo en este caso pondremos Rut y luego a la derecha el tipo de dato, en esta opcin se despliega un combo hacia abajo como lo muestra la imagen, en el seleccionamos texto. Llenamos el resto de los campos segn la imagen de abajo colocando el tipo de dato que corresponda a cada nombre de campo.

    Poner especial cuidado en la escritura de los nombres de campo ya que posteriormente los utilizaremos y tienen que estar estrictamente igual escrito esto incluye diferenciacin entre maysculas y minsculas. Es decir por ejemplo Nombre no es igual a nombre.

  • Universidad Austral de Chile Facultad de Ingeniera Instituto de Informtica Ramo de Programacin

    Felipe Bastidas M. Pgina 4

    Despus de ingresar todos los datos definiremos un indexamiento en nuestra tabla (una especie de ndice que utiliza el Access) este ser el Rut. Para ello seleccionamos el rut y abajo en las propiedades generales en el campo indexado seleccionamos Si(Sin duplicados) esto es que esta indexado y no puede tener un Rut igual a otro(duplicado).

    Guardamos nuestra tabla con el nombre Clientes (sin comillas). Lo ms seguro es que en algn momento aparezca una advertencia como esta, seleccionen NO.

    Una buena forma de ver si nuestros indexamientos son correctos es pincha en el botn ndice y verlo segn la imagen de abajo.

  • Universidad Austral de Chile Facultad de Ingeniera Instituto de Informtica Ramo de Programacin

    Felipe Bastidas M. Pgina 5

    Una vez terminada la tabla podemos ver que esta aparece en la ventana de la base de datos.

    Hacemos doble click en la tabla Clientes y vamos a tener una ventana como la de abajo, all ingresamos unos tres datos como los de la imagen. Se aconseja poner un Rut corto y fcil de recordar, despus veremos porque.

    Listo con eso estamos preparados para lo realmente importa, trabajar en visual. Cerramos Access y abrimos un nuevo proyecto de visual.

    En un nuevo formulario pondremos una Grilla, un botn y un Data.

    El data esta situado arriba de la grilla, marcado con un crculo en la imagen.

  • Universidad Austral de Chile Facultad de Ingeniera Instituto de Informtica Ramo de Programacin

    Felipe Bastidas M. Pgina 6

    Aqu una breve descripcin del control Data.

    Data (Control)

    Proporciona acceso a datos almacenados en bases de datos mediante uno de los tres tipos de objetos Recordset. El control Data le permite desplazarse de un registro a otro, as como presentar y manipular datos de los registros en controles enlazados. Sin un control Data o un control de origen de datos equivalente como el control RemoteData, los controles enlazados a datos (vinculados) de un formulario no pueden tener acceso a los datos automticamente.

    Comentarios Puede realizar la mayora de las operaciones de acceso a datos utilizando el control Data sin escribir cdigo. Los controles enlazados a datos vinculados a un control Data presentan automticamente los datos de uno o varios campos del registro actual o, en algunos casos, de un conjunto de registros situado a ambos lados del registro actual. El control Data realiza todas sus operaciones sobre el registro actual. Si el control Data recibe instrucciones para desplazarse a un registro diferente, todos los controles enlazados pasan automticamente los posibles cambios al control Data para que los guarde en la base de datos. Despus, el control Data se desplaza al registro solicitado y pasa los datos del registro actual a los controles enlazados, en los que se presentan. El control Data administra automticamente una serie de contingencias entre las que se incluyen los conjuntos de registros vacos, la insercin de nuevos registros, la modificacin y actualizacin de registros existentes, y la administracin de ciertos tipos de errores.

    Funcionamiento Una vez iniciada la aplicacin, Visual Basic utiliza las propiedades del control Data para abrir la base de datos seleccionada, crear un objeto Database y crear un objeto Recordset. Las propiedades Database y Recordset del control Data hacen referencia a los objetos Database y Recordset recin creados, que se pueden manipular de forma independiente del control Data con o sin controles enlazados. El control Data se inicializa antes del evento Form_Load inicial del formulario en el que se encuentra. Si se producen errores durante esta fase de inicializacin, se produce un error no interceptable.

    Objetos de acceso a datos En los procedimientos puede usar los objetos de acceso a datos Database y Recordset creados por el control Data. Cada objeto Database y Recordset tiene sus propias propiedades y mtodos, y puede escribir procedimientos que utilicen dichas propiedades y mtodos para manipular sus datos. Por ejemplo, el mtodo MoveNext de un objeto Recordset desplaza el registro actual al siguiente registro dentro del Recordset. Para invocar este mtodo, podra usar el cdigo siguiente: Data1.Recordset.MoveNext El control Data puede tener acceso a cualquiera de los tres tipos de objetos Recordset del motor Jet versin 3.0. Si no selecciona el tipo de conjunto de registros, se crea un Recordset de tipo dynaset.

  • Universidad Austral de Chile Facultad de Ingeniera Instituto de Informtica Ramo de Programacin

    Felipe Bastidas M. Pgina 7

    Nota Las constantes utilizadas para obtener un tipo de Recordset especfico mediante un control Data son diferentes de las constantes utilizadas para determinar el tipo de Recordset creado o para crear un Recordset mediante el mtodo OpenRecordset. Para seleccionar un tipo de Recordset especfico, establezca la propiedad RecordsetType del control Data a:

    RecordsetType Valor Constante

    Table 0 vbRSTypeTable

    Dynaset 1 (Predeterminado) vbRSTypeDynaset Snapshot 2 vbRSTypeSnapshot

    Ediciones Profesional y Empresarial En lo que concierne al acceso a datos, la principal diferencia entre las ediciones de Aprendizaje, Profesional y Empresarial de Visual Basic es la capacidad de crear nuevos objetos de acceso a datos. En la Edicin de Aprendizaje no puede declarar (con la palabra clave Dim) variables como objetos de acceso a datos dentro del cdigo. Esto significa que slo el control Data puede crear objetos Database y Recordset. En las ediciones Profesional y Empresarial puede crear un objeto Recordset y asignarlo a la propiedad Recordset de un control Data. Cualquier control enlazado que est conectado al control Data permitir manipular los registros del Recordset que ha creado. Asegrese de que las propiedades DataField de los controles enlazados estn establecidas a nombres de campo vlidos dentro del nuevo Recordset. Consultas almacenadas Otra opcin importante al usar el control Data es la posibilidad de ejecutar consultas almacenadas. Si antes ha creado un objeto QueryDef, el control Data puede ejecutarlo y crear un Recordset mediante las propiedades SQL, Connect y otras del objeto QueryDef. Para ejecutar un QueryDef, establezca la propiedad RecordSource del control Data al nombre del QueryDef y utilice el mtodo Refresh. Si el QueryDef almacenado contiene parmetros, tiene que crear el Recordset y pasarlo al control Data. Tratamiento de BOF/EOF El control Data tambin puede administrar lo que ocurre cuando se encuentre con un Recordset sin registros. Modificando la propiedad EOFAction puede programar el control Data para que pase al modo AddNew de forma automtica. Puede programar el control Data para que se ajuste automticamente a la parte superior o inferior del formulario primario utilizando la propiedad Align. En cualquiera de los casos, el control Data cambia de tamao horizontalmente para llenar todo el ancho de su formulario primario, siempre que ste cambie de tamao. Esta propiedad permite colocar un control Data en un formulario MDI sin que sea necesario un control Picture que lo contenga.

    Bueno no es tan breve, pero resumiendo es el vinculo entre el archivo Access y nuestro programa de visual.

  • Universidad Austral de Chile Facultad de Ingeniera Instituto de Informtica Ramo de Programacin

    Felipe Bastidas M. Pgina 8

    Primero configuraremos el control Data1 que colocamos, para eso tenemos que modificar tres de sus propiedades.

    La primera es DatabaseName el la ruta donde se encuentra nuestro archivo de access. Pinchamos en los tres puntitos que aparecen y buscamos la carpeta que creamos con anterioridad.

    Ac esta mi archivo de access que cree hace rato.

    Las otras dos propiedades son RecordsetType y RecordSourse.

    En RecordsetType seleccionaremos Table como lo muestra la imagen.

    En RecordSourse seleccionaremos la tabla consulta que creamos en el archivo access.

    Mira salio un error cuando pinchamos en RecordSourse eso quiere decir que esta todo malo y que tienes que botar tu computador. No mentira. Tan solo es una incompatibilidad de la versin de Access con la versin de Visual Basic que se encuentra instalada en el computador. Esto es si tienes un Office2000 o posterior pasa esto, pero si tienes Office97 no aparece este error y te salvaste.

  • Universidad Austral de Chile Facultad de Ingeniera Instituto de Informtica Ramo de Programacin

    Felipe Bastidas M. Pgina 9

    Para los que tenemos versiones modernas y estamos sonados tenemos que realizar lo siguiente:

    Abrir el Access nuevamente y la base de datos que realizamos antes. En el men herramientas seleccionamos Utilidades de la base de datos, Convertir base de datos, A formato de archivo de Access 97.

    Puede que sea levemente distinto para otras versiones del Office, pero tiene la misma base.

    Ac le daremos un nombre DISTINTO al del archivo anterior para no borrar la base de datos antigua.

    Aceptamos y esta listo.

    Lamentablemente si nos equivocamos en alguna cosa del archivo de Access tenemos que modificar el archivo bd1 y convertirlo de nuevo.

  • Universidad Austral de Chile Facultad de Ingeniera Instituto de Informtica Ramo de Programacin

    Felipe Bastidas M. Pgina 10

    Bueno regresando a Visual intentamos de nuevo

    Corregimos el nombre de nuestro nuevo archivo

    En RecordsetType seleccionaremos Table como lo muestra la imagen.

    En RecordSourse seleccionaremos la tabla consulta que creamos en el archivo Access. Mira ahora si funciona!!!

    Listo. Con el Data1 configurado correctamente podemos seguir con el resto del cdigo, si por casualidad colocamos ms de un data tambin hay configurar las tres propiedades de los nuevos datas.

    En el botn escribimos el siguiente cdigo:

    Observen que lo escrito entre comillas es textualmente idntico a los campos del Access. Se diferencian maysculas y minsculas, espacios y cualquier otro smbolo extrao.

    Do...Loop (Instruccin): Repite un bloque de instrucciones cuando una condicin es True o hasta que una condicin se convierta en True.

    Comentarios Se puede utilizar cualquier nmero de instrucciones Exit Do ubicadas en cualquier lugar dentro de una estructura de control DoLoop, para proporcionar una salida alternativa de un DoLoop. La instruccin Exit Do se utiliza frecuentemente en la evaluacin de alguna condicin, por ejemplo, IfThen; en este caso, la instruccin Exit Do transfiere el control a la instruccin que sigue inmediatamente a la instruccin Loop. Cuando se utiliza con instrucciones anidadas DoLoop, la instruccin Exit Do transfiere control al bucle que est anidado un nivel por encima del bucle donde ocurre.

  • Universidad Austral de Chile Facultad de Ingeniera Instituto de Informtica Ramo de Programacin

    Felipe Bastidas M. Pgina 11

    MoveFirst, MoveLast, MoveNext, MovePrevious (Mtodos):

    Mueven al registro primero, ltimo, siguiente o anterior de un objeto Recordset y lo convierten en el registro activo.

    Comentarios: Utilice el mtodo Move para ir de un registro a otro sin aplicar una condicin. Precaucin Si modifica el registro activo, utilice el mtodo Update para guardar los cambios antes de ir a otro registro. Si va a otro registro sin actualizar, los cambios se perdern sin previo aviso. Al abrir un Recordset, el primer registro est activo y la propiedad BOF es False. Si el Recordset no contiene registros la propiedad BOF es True y no habr ningn registro activo. Si el primer o el ltimo registro est activo cuando utiliza MoveFirst o MoveLast, el registro activo no cambia. Si utiliza MovePrevious cuando el primer registro est activo, la propiedad BOF es True y no habr ningn registro activo. Si vuelve a utilizar MovePrevious se producir un error y BOF ser True. Si utiliza MoveNext cuando el ltimo registro est activo, la propiedad EOF es True y no habr ningn registro activo. Si vuelve a utilizar MoveNext se producir un error y EOF ser True.

    BOF, EOF (Propiedades)

    BOF: indica si la posicin del registro activo es anterior al primer registro de un objeto Recordset. EOF: indica si la posicin del registro activo es posterior al ltimo registro de un objeto Recordset.

    Valores que se pueden obtener:

    Los valores que se obtienen para las propiedades BOF y EOF son un tipo de datos Boolean. La propiedad BOF devuelve el valor True, si la posicin del registro activo es anterior al primer registro y False si el registro activo est en el registro activo o en el posterior. La propiedad EOF devuelve el valor True, si la posicin del registro activo es posterior al ltimo registro y False si el registro activo est en el ltimo registro o antes de ste.

  • Universidad Austral de Chile Facultad de Ingeniera Instituto de Informtica Ramo de Programacin

    Felipe Bastidas M. Pgina 12

    Despus de comprender lo ledo podemos ejecutar nuestro programa y ver lo que resulta al presionar el botn consultar.

    Mira que casualidad ms grande. Nos muestra los mismos datos que escribimos en Access.

    Con eso ahora sabemos ver el contenido de un archivo Access, pero no tiene gracia solamente leer as que vamos hacer ms entretenida la cosa y en un nuevo formulario haremos que nos agregue datos.

    En un nuevo formulario insertamos los TextBox que correspondan, unos dos botones y un data.

    Como ya han de imaginarse el Data que insertaron hay configurarlo con las mismas propiedades del Data del formulario anterior.

    En el botn Agregar escribimos el siguiente cdigo que nos permite agregar campos al archivo de Access. Observen que igualmente que el botn consultar lo que est escrito entre comillas tiene que ser escrito textualmente como se puso en el Access, sino es as provoca errores.

    Ya se que soy cargante con la cuestin pero no faltan los pajarones.

  • Universidad Austral de Chile Facultad de Ingeniera Instituto de Informtica Ramo de Programacin

    Felipe Bastidas M. Pgina 13

    AddNew (Mtodo)

    Crea un nuevo registro para un objeto Recordset de tipo Table o Dynaset.

    Comentarios:

    Utilice el mtodo AddNew para crear y agregar un nuevo registro en el objeto Recordset llamado por el recordset. Este mtodo establece los campos a los valores predeterminados y si no se especifican valores predeterminados, establece los campos a Null (los valores predeterminados especificados pare el Recordset tipo Table).

    Despus de modificar el nuevo registro, utilice el mtodo Update para guardar los cambios y agregar el registro al Recordset. No se producirn cambios en la base de datos hasta que no se utilice el mtodo Update.

    Precaucin: Si ejecuta un AddNew y a continuacin realiza una operacin que desplace otro registro sin usar Update, los cambios se perdern sin previo aviso. Adems, si cierra el Recordset o finaliza el procedimiento que declara el Recordset o su objeto Database, el nuevo registro y los cambios realizados se descartarn sin previo aviso.

    Update (Mtodo)

    Guarda el contenido del bfer de copia en un objeto Recordset de tipo Dynaset o Table especificado.

    Comentarios: Utilice Update para guardar el registro activo y los cambios que haya efectuado en l.

    Precaucin: Los cambios realizados en el registro activo se perdern si:

    Utiliza el mtodo Edit o AddNew y a continuacin, pasa a otro registro sin actualizarlo previamente mediante Update. Utiliza Edit o AddNew y, a continuacin, vuelve a usar Edit o AddNew sin utilizar previamente Update. Cierra el conjunto de registros a los que hace referencia recordset sin utilizar primero Update. Cancela la operacin Edit utilizando el mtodo CancelUpdate.

    Para modificar un registro, utilice el mtodo Edit para copiar el contenido del registro activo al bfer de copia. Si no utiliza Edit en primer lugar, se producir un error cuando utilice Update o intente cambiar el valor de un campo.

  • Universidad Austral de Chile Facultad de Ingeniera Instituto de Informtica Ramo de Programacin

    Felipe Bastidas M. Pgina 14

    Ahora escribimos unos datos cualquiera y agregamos. Despus volvemos al formulario anterior y consultamos para ver

    Abajo tenemos el resultado de la consulta despus de agregar un registro.

    Pero juguemos un poco ms con el asunto y en el segundo formulario pongamos otro botn para que busque por Rut.

    En el botn Buscar por Rut pondremos el siguiente cdigo:

  • Universidad Austral de Chile Facultad de Ingeniera Instituto de Informtica Ramo de Programacin

    Felipe Bastidas M. Pgina 15

    Seek (Mtodo)

    Busca el registro de un objeto Recordset indexado de tipo Table que cumple el criterio especificado para el ndice activo y lo convierte en el registro activo

    Comentarios: Debe establecer el ndice activo con la propiedad Index antes de usar Seek. Si el ndice identifica un campo clave no nico, Seek busca el primer registro que cumpla los criterios. El mtodo Seek busca en los campos clave especificados y localiza el primer registro que cumpla el criterio especificado por comparacin y clave1. Cuando lo encuentra, convierte ese registro en activo y la propiedad NoMatch se establece en False. Si el mtodo Seek no consigue localizar ninguna coincidencia, la propiedad NoMatch se establece en True y el registro activo es indefinido.

    Si comparacin es igual (=),mayor o igual (>=) o mayor que (>), Seek empezar al principio del ndice y buscar hacia adelante. Si comparacin es menor que (

  • Universidad Austral de Chile Facultad de Ingeniera Instituto de Informtica Ramo de Programacin

    Felipe Bastidas M. Pgina 16

    Ac vemos el resultado de una bsqueda en el cual el Rut no existe, por lo muestra un mensaje.

    Por el contrario al anterior buscamos un Rut que si existe y nos muestra todos los datos al pinchar el botn buscar.

    Como trabajo practico realizar lo siguiente:

    Un programa que busque por Rut o por el Nombre, seleccionando las opciones por medio del OptionButton.

    Ya se imaginaran que tambin se debe indexar el campo Nombre en Access.

    Este impresionante mundo de conocimiento continuar