Cómo acceder a bases de datos?



Documentos relacionados
BASES DE DATOS EN VISUAL BASIC ACCESS + SQL

Cómo administrar una base de datos?

Resolver triángulos en Visual Basic. Parte 3/3

Visual Basic 1. Empleo de módulos y Procedimientos. Procedimientos definidos por el usuario

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

Prerrequisitos El alumno debe conocer y dominar los aspectos básicos de programación.

VISUAL BASIC Diseño de Formularios MDI y Menús - Proyectos Aplica

INDICE. 1. Introducción El panel Entities view El panel grafico Barra de botones Botones de Behavior...

Programa diseñado y creado por Art-Tronic Promotora Audiovisual, S.L.

Correo Electrónico: Webmail: Horde 3.1.1

/05/2009

Conectar Flash con Access usando MDM Zinc

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: Fax.:

La ventana de Microsoft Excel

2_trabajar con calc I

MEJORAR EL RENDIMIENTO DEL EXPLORADOR DE INTERNET

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD

Plataforma Educativa Manual del Docente Nivel II Módulo 3 Wiki

Comisión Nacional de Bancos y Seguros

Formulario VBA en Excel. Creación del formulario. Actividad grado 10.

Manual hosting acens

Proceso de cifrado. La fortaleza de los algoritmos es que son públicos, es decir, se conocen todas las transformaciones que se aplican al documento

Comencemos a programar con. Entrega 10. Estructuras de Control II

GENERACIÓN DE TRANSFERENCIAS

MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA. Perfil Entidad Proveedora

Manual para el uso del Correo Electrónico Institucional Via Webmail

Race Manager by Master Timing Guía del usuario GUIA RACE MANAGER. Eventronic, SL

... Formas alternativas de escribir un texto. Columnas. anfora CAPÍTULO 4

Plataforma e-ducativa Aragonesa. Manual de Administración. Bitácora

Uso de Visual C++ Pre-Practica No. 3

3. Presionar en el botón Buscar para obtener el siguiente cuadro:

Programa completo de resolución de ecuaciones de 2º grado

Apuntes de ACCESS. Apuntes de Access. Campos de Búsqueda:

GUÍA DE USUARIO DEL CORREO

Tutorial: Primeros Pasos con Subversion

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

Versión Página 2 de 29

GENERACIÓN DE ANTICIPOS DE CRÉDITO

Guía para el tratamiento en Allegro de recibos para centros no pertenecientes a la Generalitat Valenciana.

Para crear formularios se utiliza la barra de herramientas Formulario, que se activa a través del comando Ver barra de herramientas.

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

Manual de usuario de Windows Live Writer

GVisualPDA Módulo de Almacén

Para descargar la versión más reciente de Skype accedemos al sitio web de Skype y luego hacemos clic en Descargar Skype para escritorio de Windows.

PROCEDIMIENTOS Y FUNCIONES DE LA PROGRAMACIÓN (VISUAL BASIC)

Ejemplo de programa básico en Visual Basic. Option Explicit, Form, Dim, String, etc. (CU00310A)

Región de Murcia Consejería de Educación, Ciencia e Investigación. Manual Usuario FCT

Ejercicios - Persistencia en Android: ficheros y SQLite

LABORATORIO Nº 1 Sistemas de Información asociados a los Formularios en Excel

10. El entorno de publicación web (Publiweb)

Manual de ayuda para la utilización del Correo Interno en el Campus Virtual

Enviar Felicitación Navideña por con Off. 2007

PANEL DE CONTROL (Zona de Administración) MANUAL DE USO Por conexanet. Revisión 1.1 Fecha

Guía nuevo panel de clientes Hostalia

Cómo configurar Microsoft Outlook

Caso práctico: Proyecto Usuario y contraseña

Aplicateca. Manual de Usuario: Ilion Factura Electrónica. Espíritu de Servicio

Manual de Instalación y Configuración

BÚSQUEDA DE DOCUMENTOS DIGITALIZADOS

Mi correo con OUTLOOK

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

Herramientas CONTENIDOS. MiAulario

4794: Se añade la columna "Comercial" a la lista de servicios encontrados del Buscador de Servicios de Camión Completo.

NORMA 34.14(SEPA) 05/11/2013

Manual de software. Dynamic Cloud. 10/2014 MS-Dynamic_Cloud v1.2

Tutorial Básico de vbscript

Manual de Ayuda. Sistema de Comercializacion RUBROS SRL - Desarrollado por Pragmatia

MINI MANUAL PARA CREAR FORMULARIOS CON PHP Marzo 2007

01 Índice. GESTOR DE CONTENIDOS Manual de uso 01 ÍNDICE OBJETO DEL DOCUMENTO ESTRUCTURA GRÁFICA DEL SISTEMA... 3

Poder Judicial de Costa Rica

MUNIA Manual de usuario

CUALQUIERA, NO ES NECESARIO DISPONER DE ADSL

6.1. Conoce la papelera

Anexo 2: Configuración del Programa en Red.

SISTEMA DE APARTADO DE SALAS PARA EVENTOS

Tutorial para la creación de Bots de NTRadmin

GUIA APLICACIÓN DE SOLICITUDES POR INTERNET. Gestión de Cursos, Certificados de Aptitud Profesional y Tarjetas de Cualificación de Conductores ÍNDICE

Módulo 8: Ofimática básica. Unidad didáctica 4: Introducción y modificación de datos. Access

ÍTEMS DEL MENÚ CREACIÓN Y GESTIÓN (Última revisión: lunes, 9 de marzo de 2009)

MANUAL APLICACIÓN. SOFTWARE GESTIÓN DE CLÍNICAS DENTALES

" ##$ % & '( % & )*+),$ -##$ -!- $! "-./ - 0WebClass1-2

LiLa Portal Guía para profesores

APLICACIONES INFORMÁTICAS de BASE de DATOS

Paso 1 de 13. Paso 2 de 13. Guía de aprendizaje de Flash CS5 Tutorial 3. Creación de un logotipo textual.

Ejercicio de Microsoft Access

Ejercicio: Mensajes Alert, Confirm y Prompt

Capítulo 9. Archivos de sintaxis

Manual de operación Tausend Monitor

Acronis License Server. Guía del usuario

Tutorial de Introducción a la Informática Tema 0 Windows. Windows. 1. Objetivos

Tips Price Surfer Frontend

Manual para la instalación del cliente de correo electrónico Mozilla Thunderbird.

UTILIZACIÓN DE UNA CUENTA DE CORREO ELECTRÓNICO (NUEVO) Acceso al correo electrónico

COPIAR CORREOS ENTRE CUENTAS USANDO IMAPSIZE

MANUAL DE USO PROGRAMA DE GESTIÓN AGENCIAS DE VIAJES

BSCW en GMD: Trabajo colaborativo asíncrono ÍNDICE

Transcripción:

Cómo acceder a bases de datos? Para facilitar la explicación de la conexión a una base de datos utilizaremos la base de datos Access ya que en el capitulo anterior se explica cómo crearla. Usaremos una base existente dentro de la instalación del Visual Basic llamada Biblio.mdb Para comenzar crear un nuevo proyecto con un formulario como el que se muestra a continuación. Los controles usados son: cmdmover, un array de 0 a 3 Label1, un array de 0 a 2, Text1, un array de 0 a 2 cmdadd, cmdactualizar, cmdborrar Label2, Text2, cmdbuscar Un Listview1 para mostrar los resultados de la búsqueda Una etiqueta (LblData) para mostrar algunos mensajes Los controles necesarios son los utilizados hasta el momento en clase, excepto el Listview. Para agregar un Listview previamente hay que agregarlo a la barra de herramientas de la siguiente forma: Ir al menú Proyecto, seleccionar Componentes y de la solapa Controles tildar la opción Microsoft Windows Common Controls 5.0 (puede haber otras versiones). Referencias necesarias: En el menú Proyecto/Referencias... selecciona Microsoft ActiveX Data Objects 2.6 Library o cualquiera se las versiones, la única que no deberías seleccionar es la 2.0 que ya está obsoleta Una vez añadida la referencia a los objetos ADO, puedes usar los objetos expuestos por esta librería. En este ejemplo usaremos dos de esos objetos, que serán los que en la mayoría de los casos usemos: el objeto Connection y el objeto Recordset. El primero es el que permite acceder a la base de datos y el segundo será el que acceda a los datos propiamente dicho. Los objetos ADO más comunes: Normalmente, el objeto Connection suele declararse de forma que sea visible en todo el formulario, salvo en el caso de que añadieses algún, en cuyo caso, deberías declararlo Público o Global. J.T.P: Arce Gerardo. Pág. 1 de 5

El objeto Recordset de ADO produce eventos, por tanto, si necesitamos acceder a esos eventos, declararemos la variable con WithEvents, de esa forma podemos interceptar los eventos que produzca de la misma manera que lo hacemos con el resto de controles. En el procedimiento Buscar, veremos cómo usar otro recordset, pero de la forma tradicional: sin eventos. Escribe este código en las declaraciones generales del formulario: Option Explicit En ADO, se usa el objeto Connection para abrir las bases de datos Private cnn As ADODB.Connection Necesitamos los eventos para controlar algunas cosas Private WithEvents rst As ADODB.Recordset Al cargar el formulario, creamos los objetos y asignamos la información correspondiente para abrir la base de datos y crear o llenar el Recordset. La base de datos se abre usando el objeto Connection, del cual usaremos el método Open al cual hay que indicarle el "proveedor" y el nombre de la base de datos: Private Sub Form_Load() Text2 = "" Indicar el path correcto de la base de datos Lugar donde se encuentra la base de datos Const spathbase As String = "C:\Program Files\Microsoft Visual Studio\VB98\BIBLIO.MDB" Crear los objetos Set cnn = New ADODB.Connection Set rst = New ADODB.Recordset Crear la conexión manualmente Usar "Provider=Microsoft.Jet.OLEDB.3.51;" para bases de Access 97 Usar "Provider=Microsoft.Jet.OLEDB.4.0;" para bases de Access 2000 With cnn.connectionstring = _ "Provider=Microsoft.Jet.OLEDB.3.51;" & _ "Data Source=" & spathbase & ";".Open Indicarle de que tabla vamos a leer los datos rst.open "SELECT * FROM Authors", cnn, adopendynamic, adlockoptimistic With ListView1 El tipo de Listview que queremos es del tipo "reporte".view = lvwreport Que muestre las líneas de separación entre datos.gridlines = True Que no se puedan modificar los datos del listview.labeledit = lvwmanual Añadimos las cabeceras.columnheaders.add,, "Au_ID", 900.ColumnHeaders.Add,, "Autor", 2700.ColumnHeaders.Add,, "Año nacimiento", 1500, lvwcolumnright Si hay datos, posicionarlo en el primer registro: J.T.P: Arce Gerardo. Pág. 2 de 5

cmdmover_click 0 Como el Recordset de ADO produce eventos, vamos a usar uno de esos eventos: MoveComplete, el cual se produce cada vez que se cambia el registro activo para actualizar la información del registro que está activo. Las variables declaradas con WithEvents siguen la misma "nomenclatura" que los eventos de los controles, por tanto, ese evento estará en: rst_movecomplete (selecciona el objeto rst de la lista desplegable derecha y el evento MoveComplete de la lista de la izquierda), éste es el código para mostrar los datos cada vez que se cambia el registro activo, aunque realmente no sería necesario si hubiésemos "ligado" los controles con el recordset... pero de esa forma no tendríamos el control total sobre los datos, así que vamos a seguir con esto de usar los eventos: Private Sub rst_movecomplete(byval adreason As ADODB.EventReasonEnum, _ ByVal perror As ADODB.Error, adstatus As ADODB.EventStatusEnum, _ ByVal precordset As ADODB.Recordset) Cada vez que el registro actual cambie, se producirá este evento (igual que con el DataControl) ---------------------------------------------------------------------- Cuando en un Recordset no hay datos, tanto BOF como EOF devuelven True ---------------------------------------------------------------------- If.EOF And.BOF Then lbldata.caption = "No hay ningún registro activo" Text1(0) =.Fields("Au_ID") Si el dato es nulo, añadirle una cadena vacia Text1(1) =.Fields("Author") & "" Text1(2) =.Fields("Year Born") & "" En este evento podemos usar tanto el objeto rst como el que está en el parámetro: precordset, los dos se refieren al mismo objeto. Hacemos una pequeña comprobación de que no nos encontremos con un recordset vacío o que esté fuera de los límites permitidos, cosa que ocurre cuando queremos pasar al siguiente registro cuando estamos al final (se produce EOF) o cuando pasamos al registro anterior y estamos al principio, (se produce BOF). Si todo va bien, asignamos a las cajas de textos el contenido de los campos correspondientes. En algunos de los campos añadimos una cadena vacía al contenido del campo, esto es para los casos en que esos campos contengan un valor nulo. El resto del código para los botones de Mover, Nuevo, Actualizar y Eliminar los datos. Private Sub cmdmover_click(index As Integer) Mover según el botón pulsado On Error Resume Next If Index = 0 Then Primero If Index = 1 Then Anterior.MovePrevious If Index = 2 Then Siguiente J.T.P: Arce Gerardo. Pág. 3 de 5

.MoveNext If Index = 3 Then Último.MoveLast If.BOF Or.EOF Then lbldata.caption = " No hay datos..." lbldata.caption = " Registro actual: " & rst("au_id") Err = 0 Private Sub cmdadd_click() Añadir un nuevo registro rst.addnew Añadimos algún texto, para que no se pierda este registro Text1(1) = "Nuevo" Actualizamos los datos rst.update Movemos al último registro para que los cambios se hagan permanentes y se muestre el nuevo registro rst.movelast Private Sub cmdactualizar_click() Guardar el contenido de las cajas de texto Este campo es auto numérico, así que no asignarlo.fields("au_id") = Text1(0) + 0 Añadimos una cadena vacía al final ya que si Text1(1) está vacío, se asignará un valor NULL y dará error.fields("author") = Text1(1) & "" Idem con el año de nacimiento, pero como es numérico, se sumará 0.Fields("Year Born") = Text1(2) + 0 Actualizar los datos en el recordset.update Private Sub cmdborrar_click() Borrar el registro actual Se comprueba que haya algún registro activo, para ello se comprueba que no hayamos pasado del principio o el final del Recordset Comprobar que hay registros, porque si no hay, dará error If (rst.eof Or rst.bof) Then Avisar de que no hay registros lbldata.caption = "Ningún registro activo" Eliminar el registro actual rst.delete Movemos al primer registro para que los cambios se hagan permanentes (también podríamos haberlo movido al último registro) J.T.P: Arce Gerardo. Pág. 4 de 5

rst Para terminar, vamos a ver el código para Buscar datos: Private Sub cmdbuscar_click() Mostrar los datos en el listview Dim sbuscar As String Dim trs As Recordset Dim tli As ListItem Comprobar si tiene caracteres "no válidos" para ADO: NOTA: Replace es una función de VB6 sbuscar = Text2 sbuscar = Replace(sBuscar, "*", "%") sbuscar = Replace(sBuscar, "?", "_") Text2 = sbuscar Formar la cadena de la consulta: Se busca por el nombre del autor y se muestran clasificados por el nombre sbuscar = "SELECT * FROM Authors WHERE Author LIKE " & sbuscar & " ORDER BY Author" Creamos un recordset del tipo "estático", el cual no es modificable para poder modificarlo, tendría que ser del tipo dbopendynamic Set trs = cnn.execute(sbuscar) Comprobar que hay datos en el recordset With trs Si no hay datos... ---------------------------------------------------------------------- Cuando en un Recordset no hay datos, tanto BOF como EOF devuelven True ---------------------------------------------------------------------- If (.BOF And.EOF) Then MsgBox "No se han encontrado los datos buscados" Mostrar los datos hallados ListView1.ListItems.Clear Do While Not.EOF Set tli = ListView1.ListItems.Add(,,.Fields("Au_ID") & "") tli.subitems(1) =.Fields("Author") & "" tli.subitems(2) =.Fields("Year Born") & "".MoveNext Loop Caracteres comodines: Hacemos una comprobación para cambiar los caracteres comodines que hubiese en el texto indicado para la búsqueda. Según la ayuda de ADO, se usará el carácter % (tanto por ciento), cuando queramos indicar cualquier cosa que haya en el sitio en que se encuentra dicho carácter, por ejemplo: %jan% encontrará todos los registros que contenga "jan", esté en el sitio que esté: Janet, Alejandro, etc. Si pusiéramos jan%, sólo mostraría los que empezaran con jan, etc. Por otro lado, el carácter _ (subrayado bajo) significa "cualquier carácter que esté en esa posición", por ejemplo: %r_us% encontrará cualquier palabra que contenga: una r seguida de cualquier cosa, seguida de us. Tal es el caso de Rouse, Marcus, etc. J.T.P: Arce Gerardo. Pág. 5 de 5