UNIDAD 2: Bases de Datos en Visual Basic 3. Identificar las acciones sobre bases de datos: añadir, consultar, modificar y eliminar registros, indexar. Como sabemos el sentido de contar con un entorno de desarrollo como Visual Basic es contar con controles visuales que permitan que el trabajo del usuario sea más ameno y fácil. Una base de datos y sus tablas, cuando se trata de sistemas de nivel operativo, sufren una gran cantidad de actualizaciones diarias. Ya sea que estas actualizaciones se refieran a inserciones, modificaciones o eliminaciones de registros. Igualmente está sujeta a un sinnúmero de consultas internas incluso para poder realizar operaciones de inserción. Visual Basic, como ya se vio en el punto anterior, permite realizar estas operaciones básicamente de dos formas utilizando DAO: • • Mediante la utilización de controles visuales que traen incorporadas propiedades relacionadas con datos y permiten efectuar las operaciones del lenguaje DML mediante el uso de controles gráficos; Mediante la utilización directa de variables y sentencias definidas en los procedimientos para utilizar el lenguaje DML tanto de SQL como el equivalente DML de Visual Basic. En uno u otro caso, hay que tener en cuenta la jerarquía de objetos vista en el punto anterior para DAO. Por lo tanto aquí vamos a definir estos objetos y explicarlos con mayor detalle de lo que se ha visto en el material teórico-práctico propuesto para las Actividades y repasar algunos temas ya vistos en el punto anterior. DML o Lenguaje de Manipulación de Datos presupone que la base de datos ya existe y se conoce sus características. Esto tiene que ver con cuáles son las claves primarias de las tablas, cuáles las claves foráneas, cuáles son los tipos de datos, si existen validaciones a nivel de campo (cuando un campo es requerido, por ejemplo), etc. Las operaciones básicas DML de Visual Basic son: a. b. c. d. apertura y cierre de la base de datos escritura de datos (AddNew,Edit, Update y Delete [que son los equivalentes al DML de SQL: básicamente insert, update y delete) búsqueda de datos (fundamentalmente el método Seek de VB; y en algunos casos FindFirst, FindNext, etc.) movimiento de datos (que mueven el apuntador de registro entre las tablas: MoveFirst, MovLast, etc.) a. Apertura y cierre de la base de datos: se encargan de abrir y cerrar una base de datos los siguientes métodos: • • • OpenDatabase OpenRecordSet Close OpenDatabase (Archivo) se encarga de abrir la base de datos y ponerla a disposición de DAO a través de la creación de un objeto Database. Este objeto puede crearse mediante código o bien al añadir un control Data a un Formulario. [para mayor información ver teoría vista en los Proyectos Cargos y DBGrid]. OpenRecordset (Tabla, Tipo) es un método del objeto Database que devuelve un objeto Recorset. Un Recordset es un objeto de Visual Basic que representa un conjunto lógico de registros; y en definitiva está representando los registros físicos de una tabla o de una consulta. Un Recordset que es el objeto fundamental de DML ya que al consultar el Recorset y manipularlo se puede afectar directamente la estructura física de la base de datos. Un objeto TableDef representa la estructura de una tabla de la base de datos, en cambio un objeto Recordset representa a los registros contenidos en una tabla que pertenece a la base de datos abierta. En el Proyecto DMLVB en su formulario Cargos5 puede verse un ejemplo de estos métodos. Página 1 / 1 Un RecordSet puede ser abierto de cinco formas distintas; es decir, existen cinco tipos de RecordSet: Table, Dynaset, Snapshot, Dynamic y Forwar-only. La siguiente tabla resume cada tipo y su funcionalidad así como las constantes usuales que se utilizan para declararlos. Close es un método de la base de datos abierta. Su sintaxis es: BaseDeDatos.Close. En el ejemplo mencionado más arriba también se muestra su utilización en un entorno gráfico. La lógica sin embargo se muestra aquí a modo de un ejemplo utilizando todos los métodos: b. Escritura de datos Para la escritura de datos se utiliza lenguaje DML de Visual Basic con métodos que se aplican sobre el Recordset: • • • • AddNew Edit Update Delete Dichos métodos fueron abordados en forma práctica mediante el Proyecto Cargos, Formulario Cargos4. Sin embargo ahora veremos un ejemplo Teórico-Práctico que se basa en utilizar el DML de Visual Basic sin utilizar el Control Data visto en el ejemplo anterior. En la última página se muestra cómo funcionan estos métodos y cómo se relacionan entre sí mediante un esquema. Recomendamos que se lleve a cabo la práctica propuesta. Pueden abrirse distinos formularios para cada situación y luego un formulario que contenga un DBGrid de modo de poder inspeccionar en forma visual el contenido de la tabla Cargos. A su vez en el Proyecto DMLVB, en el Formulario Cargos6, se ha incluido un ejemplo totalmente visual. En mismo está accesible en el zip llamado DMLVB.ZIP en la sección Actividades para su descarga. Para comprender los aspectos técnicos de las búsquedas vea el punto siguiente. En el esquema puede apreciarse una breve descripción de cómo funciona el método Seek. c. Búsqueda de datos utilizando el método Seek La búsqueda de datos en Visual Basic aplicando el lenguaje de manipulación de datos puede hacerse de varias formas. Una de las maneras más eficientes es utilizando el método Seek del objeto Recordset. Este método tiene la sintaxis: Recordset.Seek comparacion, valor. Este método además se utiliza con claves y el Recordset debe ser del tipo Table. No sirve para efectuar búsquedas sobre campos que no sean clave primaria. Página 2 / 2 Para hacer esto es necesario declarar un índice mediante programación utilizando la propiedad Recordset.index = 'nombre del índice', es decir que el índice es la clave primaria. Por lo tanto, para su aplicación es necesario primero establecer un índice mediante la propiedad index y además utilizar el método Recordset.NoMatch que devolverá un valor lógico de True o False según si la búsqueda tuvo o no éxito. En el esquema anterior se agregaron estos conceptos puesto que es imposible realizar una modificación o una eliminación sin efectuar antes una búsqueda en el Recordset. diferencia entre Seek y otros métodos existentes como FindFirst, FindNext, FindPreious,FindLast es que Seek sólo puede utilizarse con claves primarias, utiliza un índice La y el Recordset debe ser del tipo Table. Estos métodos utilizan cualquier campo que no sea clave primaria, en vez de utilizar un índice se efectúa la búsqueda en base a una condición y finalmente el Recordset debe ser del tipo Dynaset. Sí utilizan el método NoMatch para verificar si se cumple o no la condición. Un ejemplo típico por ejemplo sería con Seek buscar un regitro univoco utilizando el IdCargo o el IdEmp si quiero buscar un cargo específico o un empleado en particular en base al número de legajo. Sin embargo si quisiera encontrar todos los empleados que tienen un código de cargo determinado, se puede utilizar en la condición 'que el idcargo sea igual a X' y esto es una condición que al aplicarla con FindFirst me devolverá el primer registro que coincida con la búsqueda; luego con FindNext podré encontrar el siguiente. Estos últimos métodos están desarrollados con la teoría correspondiente en el proyecto DMLVB el proyecto Cargos7 y su pdf asociado explican en forma teórica y práctica la utilización de estos métodos. d. Movimiento de datos (moverse o navegar entre registros de un Recordset) Los métodos MoveFirst, MoveLast, MoveNext y MovePreious permiten mover el apuntador de registro al primer, último, siguiente o anterior registro respecto a dónde se encuentra el apuntador de registro antes de aplicar el método. La diferencia entre MoveFisrt y FindFirst es que MoveFirst mueve el puntero de registro al primer elemento del Recordset y FindFirst mueve el puntero de registro al primer registro del Recordset que coincide con la condición de búsqueda. Estos métodos son los que utiliza el control Data para navegar entre los distintos registros del recorset abierto y al cual referencia este objeto visual. En el proyecto DMLVB el proyecto Cargos8 y su pdf asociado explican en forma teórica y práctica la utilización de estos métodos. Página 3 / 3 Página 4 / 4