ejercicio 1. - basededatos2esi.files.wordpress.com · ejercicios tema 5-6. 12/03/2009 ejercicio 1....

17
Ejercicios Tema 5-6. 12/03/2009 Ejercicio 1. Sobre la base de datos mantecados tabla clientes realizar las operaciones de siguiente, anterior, primero y ultimo con un record set. Insertar, borrar y modificar con un comando. En la modificación no vamos a cambiar la clave del cliente. Creamos un formulario con el siguiente formato, sin usar el asistente Access: La estructura y formato de los distintos elementos lo podemos copiar de diseños anteriores donde hemos manejado RecordSet. Los cuadros de texto son independientes (no se encuentran enlazados a campos de una tabla) y lo hemos denominado igual que los campos de la tabla Cliente de la base de datos mantecados. Antes de continuar establecemos una cadena de conexión ODBC contra la base de datos de mantecados. El código asociado a los botones es: Option Compare Database Dim Conexion As New ADODB.Connection Dim Conjunto As New ADODB.Recordset Dim Comando As New ADODB.Command Private Sub cmdAnterior_Click() Conjunto.MovePrevious If Conjunto.BOF Then Conjunto.MoveLast End If cargar End Sub Private Sub cmdAñadir_Click() Dim Sentencia As String Sentencia = "insert into cliente values (" + "'" + cClnCdg.Value + "'," + _ "'" + cClnNif.Value + "'," + _ "'" + cClnNmb.Value + "'," + _ "'" + cClnDrc.Value + "'," + _ "'" + cClnPbl.Value + "'," + _ Enrique Mora Moral. Pag: 1/17

Upload: phungtram

Post on 07-Oct-2018

224 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ejercicio 1. - basededatos2esi.files.wordpress.com · Ejercicios Tema 5-6. 12/03/2009 Ejercicio 1. Sobre la base de datos mantecados tabla clientes realizar las operaciones de siguiente,

Ejercicios Tema 5-6. 12/03/2009

Ejercicio 1.Sobre la base de datos mantecados tabla clientes realizar las operaciones de siguiente,

anterior, primero y ultimo con un record set. Insertar, borrar y modificar con un comando. En la modificación no vamos a cambiar la clave del cliente.

Creamos un formulario con el siguiente formato, sin usar el asistente Access:

La estructura y formato de los distintos elementos lo podemos copiar de diseños anteriores donde hemos manejado RecordSet. Los cuadros de texto son independientes (no se encuentran enlazados a campos de una tabla) y lo hemos denominado igual que los campos de la tabla Cliente de la base de datos mantecados.

Antes de continuar establecemos una cadena de conexión ODBC contra la base de datos de mantecados.

El código asociado a los botones es: Option Compare Database

Dim Conexion As New ADODB.ConnectionDim Conjunto As New ADODB.RecordsetDim Comando As New ADODB.CommandPrivate Sub cmdAnterior_Click() Conjunto.MovePrevious If Conjunto.BOF Then Conjunto.MoveLast End If cargarEnd SubPrivate Sub cmdAñadir_Click() Dim Sentencia As String Sentencia = "insert into cliente values (" + "'" + cClnCdg.Value + "'," + _ "'" + cClnNif.Value + "'," + _ "'" + cClnNmb.Value + "'," + _ "'" + cClnDrc.Value + "'," + _ "'" + cClnPbl.Value + "'," + _

Enrique Mora Moral. Pag: 1/17

Page 2: Ejercicio 1. - basededatos2esi.files.wordpress.com · Ejercicios Tema 5-6. 12/03/2009 Ejercicio 1. Sobre la base de datos mantecados tabla clientes realizar las operaciones de siguiente,

Ejercicios Tema 5-6. 12/03/2009

"'" + cClnTlf.Value + "')" Comando.CommandText = Sentencia Comando.CommandType = adCmdText On Error GoTo etiqueta Comando.Execute Exit Subetiqueta: MsgBox "El cliente ya existe"End SubPrivate Sub cmdBorrar_Click() Dim Sentencia As String Sentencia = "delete from DvlLns where nEntNmr in (select nEntNmr from Entregas where cclncdg = '" _ + cClnCdg.Value + "')" Comando.CommandText = Sentencia Comando.CommandType = adCmdText Comando.Execute Sentencia = "delete from EntLns where nEntNmr in (select nEntNmr from Entregas where cclncdg = '" _ + cClnCdg.Value + "')" Comando.CommandText = Sentencia Comando.CommandType = adCmdText Comando.Execute

Sentencia = "delete from Devoluciones where nEntNmr in (select nEntNmr from Entregas where cclncdg = '" _ + cClnCdg.Value + "')" Comando.CommandText = Sentencia Comando.CommandType = adCmdText Comando.Execute Sentencia = "delete from Entregas where cclncdg = '" + cClnCdg.Value + "'" Comando.CommandText = Sentencia Comando.CommandType = adCmdText Comando.Execute Sentencia = "delete from cliente where cclncdg = '" + cClnCdg.Value + "'" Comando.CommandText = Sentencia Comando.CommandType = adCmdText Comando.Execute cmdSiguiente_Click End Sub

Private Sub cmdModificar_Click() Dim Sentencia As String Sentencia = "update cliente set cclnnmb = '" + cClnNmb.Value + "'," _ + "cclndrc = '" + cClnDrc.Value + "'," _ + "cclnpbl = '" + cClnPbl.Value + "'," _ + "cclntlf = '" + cClnTlf.Value + "'" _ + " where cClnCdg = '" + cClnCdg.Value + "'" Debug.Print Sentencia Comando.CommandText = Sentencia Comando.CommandType = adCmdText On Error GoTo etiqueta Comando.Execute Exit Subetiqueta:

Enrique Mora Moral. Pag: 2/17

Page 3: Ejercicio 1. - basededatos2esi.files.wordpress.com · Ejercicios Tema 5-6. 12/03/2009 Ejercicio 1. Sobre la base de datos mantecados tabla clientes realizar las operaciones de siguiente,

Ejercicios Tema 5-6. 12/03/2009

MsgBox "Error al modificar el cliente" End Sub

Private Sub cmdPrimero_Click() Conjunto.MoveFirst cargarEnd Sub

Private Sub cmdSiguiente_Click() Conjunto.MoveNext If Conjunto.EOF Then Conjunto.MoveFirst End If cargarEnd Sub

Private Sub cmdUltimo_Click() Conjunto.MoveLast cargarEnd Sub

Private Sub Form_Load() Conexion.Open "dsn=mantecados;uid=sa" Conjunto.Open "select * from cliente", Conexion, adOpenDynamic Set Comando.ActiveConnection = Conexion cargarEnd Sub

Private Sub cargar() Me.cClnNif.Value = Conjunto!cClnCdg Me.cClnCdg.Value = Conjunto!cClnCdg Me.cClnNmb.Value = Conjunto!cClnNmb Me.cClnDrc.Value = Conjunto!cClnDrc Me.cClnPbl.Value = Conjunto!cClnPbl Me.cClnTlf.Value = Conjunto!cClnTlf End Sub

Private Sub descargar() cliente!cClnNif = Me.cClnCdg.Value cliente!cClnCdg = Me.cClnCdg.Value cliente!cClnNmb = Me.cClnNmb.Value cliente!cClnDrc = Me.cClnDrc.Value cliente!cClnPbl = Me.cClnPbl.Value cliente!cClnTlf = Me.cClnTlf.Value cliente!cClnCdg = Me.cClnCdg.ValueEnd Sub

De este código podemos resaltar los siguientes elementos:

● Descripción de las variables globales fuera de las sub-rutinasOption Compare DatabaseDim Conexion As New ADODB.ConnectionDim Conjunto As New ADODB.RecordsetDim Comando As New ADODB.Command

● Inicialización de los objetos en form_loadPrivate Sub Form_Load()

Enrique Mora Moral. Pag: 3/17

Page 4: Ejercicio 1. - basededatos2esi.files.wordpress.com · Ejercicios Tema 5-6. 12/03/2009 Ejercicio 1. Sobre la base de datos mantecados tabla clientes realizar las operaciones de siguiente,

Ejercicios Tema 5-6. 12/03/2009

Conexion.Open "dsn=mantecados;uid=sa" Conjunto.Open "select * from cliente", Conexion, adOpenDynamic Set Comando.ActiveConnection = Conexion cargarEnd Sub

● Copia de procedimientos y técnicas en cargar, descargar y botones de movimiento.● Insertar un registro usando un objeto command

Private Sub cmdAñadir_Click() Dim Sentencia As String Sentencia = "insert into cliente values (" + "'" + cClnCdg.Value + "'," + _ "'" + cClnNif.Value + "'," + _ "'" + cClnNmb.Value + "'," + _ "'" + cClnDrc.Value + "'," + _ "'" + cClnPbl.Value + "'," + _ "'" + cClnTlf.Value + "')" Comando.CommandText = Sentencia Comando.CommandType = adCmdText On Error GoTo etiqueta Comando.Execute Exit Subetiqueta: MsgBox "El cliente ya existe"End Sub

● Borrado de un registro usando un objeto command, aunque en este caso se repite el proceso varias veces realizando un borrado en cascada, con sentencias Delete complejas.

Dim Sentencia As String Sentencia = "delete from DvlLns where nEntNmr in (select nEntNmr from Entregas where cclncdg = '" _ + cClnCdg.Value + "')" Comando.CommandText = Sentencia Comando.CommandType = adCmdText Comando.Execute

● Modificación de un registro utilizando la sentencia UpdatePrivate Sub cmdModificar_Click() Dim Sentencia As String Sentencia = "update cliente set cclnnmb = '" + cClnNmb.Value + "'," _ + "cclndrc = '" + cClnDrc.Value + "'," _ + "cclnpbl = '" + cClnPbl.Value + "'," _ + "cclntlf = '" + cClnTlf.Value + "'" _ + " where cClnCdg = '" + cClnCdg.Value + "'" Debug.Print Sentencia Comando.CommandText = Sentencia Comando.CommandType = adCmdText On Error GoTo etiqueta Comando.Execute Exit Subetiqueta: MsgBox "Error al modificar el cliente" End Sub

Ejercicio 2. Construir una tabla denominada perro que nos permita almacenar la siguiente información sobre perros:

Enrique Mora Moral. Pag: 4/17

Page 5: Ejercicio 1. - basededatos2esi.files.wordpress.com · Ejercicios Tema 5-6. 12/03/2009 Ejercicio 1. Sobre la base de datos mantecados tabla clientes realizar las operaciones de siguiente,

Ejercicios Tema 5-6. 12/03/2009

● #codigo char(12)● nombre char(30)● Raza a elegir con un Radio-Buttom entre (Podenco, galgo, Agresivo, Compañia, Sin

Raza)● Sexo a elegir con un Radio-Buttom entre (Macho y Hembra)● Seguro Check-Box si o no● Vacuna Check-Box si o no

El objetivo del ejercicio es probar los campos de Tipo check-box y radio Buttom.

Partimos del siguiente diseño de nuestra tabla:

Para los campos Check-Box utilizamos el tipo Booleano Si/No y para los campo Radio-Buttom un tipo Número entero en este caso Byte.

● Campo nPrrRz

● Campo nPrrSx

El tipo de los campos tanto para Check-box como para Radio-Buttom lo fija Access a Booleano y numerico/entero. Podemos mediante código cambiar dichos tipos pero la operación puede resultar bastante compleja.

Enrique Mora Moral. Pag: 5/17

Page 6: Ejercicio 1. - basededatos2esi.files.wordpress.com · Ejercicios Tema 5-6. 12/03/2009 Ejercicio 1. Sobre la base de datos mantecados tabla clientes realizar las operaciones de siguiente,

Ejercicios Tema 5-6. 12/03/2009

Una vez diseñada nuestra tabla construimos un formulario utilizando el Asistente obteniendo:

Como podemos observar en la figura anterior, los campo Check-box ya tienen el aspecto que se persiguia ahora tenemos que convertir los campos numéricos nPrrRz y nPrrSz en un formato de tipo Radio-Buttom.

Vamos a comenzar con el campo nPrrRz, activamos el asistente en nuestra barra de herramientas:

Y seleccionamos el Grupo que nos va a construir las opciones Radio-Buttom:

Aparece la siguiente ventana donde rellenamos las agrupaciones genéricas de perros que hemos considerado como razas:

Avanzamos a siguiente, donde seleccionamos la opción por defecto:

Enrique Mora Moral. Pag: 6/17

Page 7: Ejercicio 1. - basededatos2esi.files.wordpress.com · Ejercicios Tema 5-6. 12/03/2009 Ejercicio 1. Sobre la base de datos mantecados tabla clientes realizar las operaciones de siguiente,

Ejercicios Tema 5-6. 12/03/2009

Fijamos un numero, valor que se almacena (el campo es numérico), para cada una de nuestras “razas”:

Enlazamos el control con el campo de la tabla:

Y escogemos el tipo o formato de los radio-buttoms:

Enrique Mora Moral. Pag: 7/17

Page 8: Ejercicio 1. - basededatos2esi.files.wordpress.com · Ejercicios Tema 5-6. 12/03/2009 Ejercicio 1. Sobre la base de datos mantecados tabla clientes realizar las operaciones de siguiente,

Ejercicios Tema 5-6. 12/03/2009

Tras finalizar el proceso, los aplicamos al campo nPrrSx, eliminamos los campos anteriores nPrrRz y nPrrSzm, renombramos los grupos Radio-Buttoms y tenemos:

Por último, comprobamos el orden de tabulación de los distintos cuadro de texto según su aparición en la ventana, desde la siguiente ventana de orden de tabulación que se accede desde el menu que aparece al pulsar con el botón derecho del ratón sobre cualquier cuadro de texto:

Enrique Mora Moral. Pag: 8/17

Page 9: Ejercicio 1. - basededatos2esi.files.wordpress.com · Ejercicios Tema 5-6. 12/03/2009 Ejercicio 1. Sobre la base de datos mantecados tabla clientes realizar las operaciones de siguiente,

Ejercicios Tema 5-6. 12/03/2009

Ejercicio 3.

Realizar un formulario sobre viaje con dos Combo-Box para autobús y conductor.

Comenzamos con un formulario sobre la tabla viaje creado con el asistente en formato columna. A este formulario y usando el asistente añadimos un Combo-Box (cuadro combinado), comenzando por:

Donde estoy indicando que voy a recoger los datos de una tabla o consulta en este caso autobús. Avanzo con el botón “Siguiente”:

Enrique Mora Moral. Pag: 9/17

Page 10: Ejercicio 1. - basededatos2esi.files.wordpress.com · Ejercicios Tema 5-6. 12/03/2009 Ejercicio 1. Sobre la base de datos mantecados tabla clientes realizar las operaciones de siguiente,

Ejercicios Tema 5-6. 12/03/2009

Tras escoger la tabla autobús, vuelvo a anvanzar:

Donde selecciono el campo que deseo mostrar, en este caso el campo cAtbMtrm, avanzo:

Enrique Mora Moral. Pag: 10/17

Page 11: Ejercicio 1. - basededatos2esi.files.wordpress.com · Ejercicios Tema 5-6. 12/03/2009 Ejercicio 1. Sobre la base de datos mantecados tabla clientes realizar las operaciones de siguiente,

Ejercicios Tema 5-6. 12/03/2009

Fijo el campo de la tabla viaje que va a recoger los valores que he seleccionado entre las matriculas disponibles en la tabla autobús. Pulso “Finalizar” y termino con el Cuadro-Combinado asociado al campo de la tabla viaje cAtbMtr.

Para el campo cCndNif de viaje que se enlaza con el campo cCndNif de conductor se va a construir sin usar el asistente. Inserto el cuadro combinado sin usar el asistente y accedo a las propiedades de este. En la pestaña datos:

Modifico las siguientes propiedades:● Origen del control: al que enlazo el campo de la tabla viaje cCndNif.● Origen de la fila: donde coloco la sentencia SQL de la que se extraen los valores del cuadro

combinado. En este caso: “select cCndNif, cCndNmb from conductor”● Columna dependiente: que le asigno el valor 1. Esta propiedad me indica que expresión de

la sentencia Select enlazo con el campo “Origen del control”

Además tengo que modificar la propiedad “Número de columnas” a 2 de la pestaña

Enrique Mora Moral. Pag: 11/17

Page 12: Ejercicio 1. - basededatos2esi.files.wordpress.com · Ejercicios Tema 5-6. 12/03/2009 Ejercicio 1. Sobre la base de datos mantecados tabla clientes realizar las operaciones de siguiente,

Ejercicios Tema 5-6. 12/03/2009

formato. Esta propiedad me indica el numero de columnas de la sentencia Select que se mostrarán en el cuadro combinado.

En este caso hemos escogido dos, para que se muestre el Nif y el Nombre del conductor.

Podemos realizar un ejemplo donde se muestre únicamente el nombre y se seleccione el Nif del conductor. Para ello debemos ajustar las propiedades anteriores a los siguientes valores:

● Origen del control: cCndNif.● Origen de la fila: “select cCndNmb, cCndNif from conductor”● Columna dependiente: 2● Número de Columnas: 1

Podemos jugar con la posición de la columna dependiente y con el numero de columnas a mostrar para los distintos diseños. Incluso podemos montar expresiones más o menos complejas dentro de la sentencia SQL para mostrar determinados valores.

El diseño definitivo a obtener:

Ejercicio 4.

Informe Crystal Report que muestre todas las revisiones de un mecánico maestro/detalle cuyo Nif se pide vía teclado. Mostrará numero revisiones y horas realizadas.

Comenzamos estableciendo una conexión a la base de datos Access Bus:

Enrique Mora Moral. Pag: 12/17

Page 13: Ejercicio 1. - basededatos2esi.files.wordpress.com · Ejercicios Tema 5-6. 12/03/2009 Ejercicio 1. Sobre la base de datos mantecados tabla clientes realizar las operaciones de siguiente,

Ejercicios Tema 5-6. 12/03/2009

Comprobamos que las relaciones establecidas entre las distintas tablas son las correctas:

Sobre esta conexión escogemos las tablas: Mecánico, Revisión y autobús:

Enrique Mora Moral. Pag: 13/17

Page 14: Ejercicio 1. - basededatos2esi.files.wordpress.com · Ejercicios Tema 5-6. 12/03/2009 Ejercicio 1. Sobre la base de datos mantecados tabla clientes realizar las operaciones de siguiente,

Ejercicios Tema 5-6. 12/03/2009

Seleccionamos todos los campos de mecánico y revisión, junto con la marca y modelo del autobús:

Se realiza un agrupamiento sobre el campo mecanico.cMcnNif:

Mantenemos el total sobre el numero de horas realizadas por el mecánico en las distintas

Enrique Mora Moral. Pag: 14/17

Page 15: Ejercicio 1. - basededatos2esi.files.wordpress.com · Ejercicios Tema 5-6. 12/03/2009 Ejercicio 1. Sobre la base de datos mantecados tabla clientes realizar las operaciones de siguiente,

Ejercicios Tema 5-6. 12/03/2009

revisiones, eliminando los totales no significativos:

Finalizamos con el asistente, obteniendo el siguiente diseño:

Es preciso reajustar el diseño pasando los datos del mecánico y las etiquetas a la cabecera de grupo y reorganizando el detalle hasta obtener el siguiente formato:

Sobre este formato podemos comenzar a añadir el parámetro desde el explorador de campos:

Enrique Mora Moral. Pag: 15/17

Page 16: Ejercicio 1. - basededatos2esi.files.wordpress.com · Ejercicios Tema 5-6. 12/03/2009 Ejercicio 1. Sobre la base de datos mantecados tabla clientes realizar las operaciones de siguiente,

Ejercicios Tema 5-6. 12/03/2009

Al parámetro le asignamos el siguiente diseño:

Una vez creado el diseño desde el Asistente de Selección,

establecemos la relación de igualdad entre este y el campo mecanico.cMcnNif:

Enrique Mora Moral. Pag: 16/17

Page 17: Ejercicio 1. - basededatos2esi.files.wordpress.com · Ejercicios Tema 5-6. 12/03/2009 Ejercicio 1. Sobre la base de datos mantecados tabla clientes realizar las operaciones de siguiente,

Ejercicios Tema 5-6. 12/03/2009

Por último, nos falta añadir al pie del grupo un campo total o sumario que nos cuente el numero de revisiones que ha realizado cada mecánico, lo añadimos desde el explorador de campos opción campos totales o acumulados, con el siguiente formato:

Enrique Mora Moral. Pag: 17/17