+ All Categories
Home > Documents > Visual Basic y SQL Server

Visual Basic y SQL Server

Date post: 28-Dec-2015
Category:
Upload: willian-marin-garzon
View: 57 times
Download: 0 times
Share this document with a friend
57
Transcript
Page 1: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

1

Page 2: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

2

Edición 1.0

Prohibida la reproducción total o parcialSin nuestro consentimiento

Derechos de copia reservadoswww.LibrosDigitales.NET

Page 3: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

3

Presentación del Caso a Desarrollar

Objetivos

En este primer módulo se desarrollaran los siguientes puntos:

ü Presentación del escenario de trabajo.ü Criterios para la estandarización de la base de datos.ü Modelo lógico y físico de la base de datos.ü Creación de tablas de la base de datos.ü Definir la integridad de la base de datos.ü Creación del diagrama de la base de datosü Cargar datos de muestra.ü Mecanismo de seguridad de SQL Server.

Page 4: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

4

Presentación del escenario de trabajoComercial Lima S.A.C. es una empresa que se dedica a la comercialización dediversos productos, donde la atención al cliente se describe en los siguientes pasos:

ü El cliente elabora su pedido y es anotado en una hoja de pedido.

ü Se verifica en el almacén si existe stock del pedido del cliente.

ü Si no hay problema de stock, se procede a elaborar la boleta ó factura, y eldocumento pasa a caja. Si hay problema de stock, se realiza las correccionesrespectivas en la hoja de pedido, y pasamos al paso 2.

ü El cliente pasa a caja a cancelar.

ü Con el documento cancelado, el cliente pasa a despacho a recoger susproductos.

En estos momentos todo el procedimiento de atención al cliente es manual por loque se tienen los siguientes problemas:

ü Atención lenta.

ü No se tiene un control de stock adecuado, por lo tanto nunca se sabe cuanto esel stock real de cada artículo.

ü Control de ingresos manual, por lo que el cierre de caja lleva muchas horas.

ü La elaboración de informes para el gerente es lenta ya que todo tipo deresumen del día es manual.

ü No existe ningún tipo de estadística para la toma de decisiones futuras.

La empresa atiende un promedio de 30 personas por hora con tendencia aaumentar, por lo que es necesario implementar un sistema computarizado.

☺ Se adjunta al libro el modelo de datos en Erwin

Page 5: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

5

Reglas de NegocioLas reglas de negocio son el conjunto de condición que la empresa establece pararealizar sus transacciones con sus clientes.Para este caso las condiciones son mínimas y se enumeran a continuación:

ü Solo compra con factura a sus proveedores.

ü Vende con factura o boleta.

ü Solo vende al contado y en efectivo.

ü Cuando el cliente compra mas de seis unidades por artículo se aplica undescuento que se define para cada artículo.

Page 6: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

6

Criterios para estandarizar la base dedatosDebemos tener en cuenta que cuando realizamos el modelo de una base de datoscumpla con un mínimo de objetivos básicos, que los explico a continuación:

ü Debe almacenar toda la información de la actividad de la empresa para la cualesta diseñada.

ü No debe guardar información redundante. Hay casos en los que es necesariopara facilitar otras operaciones, pero debe ser bien analizado.

ü Debe ser de fácil mantenimiento. Las inserciones, actualizaciones yeliminaciones no deben ser complejas desde el punto de vista de laprogramación.

ü Debe ser de fácil consulta. Si deseamos obtener cierta información debe ser enbase a una consulta sencilla, o en todo caso las operaciones a realizar no debenser complejas, en algunos casos no se puede evitar la complejidad, pero hayque tratar de minimizarla.

Generalmente el desarrollo del un sistema recae sobre un equipo, cuando hablamossobre estandarización de la base de datos, nos referimos al conjunto de criteriosque asume el equipo de trabajo como normas para el desarrollo del sistema. Estoquiere decir que no todos los equipos de trabajo tienen los mismos estándares,puede que coincidan en alguno de ellos, pero no es una norma.

Estandarizar una base de datos trae muchas ventajas, y algunas de ellas son:

ü Todas las personas del equipo desarrollan el sistema asumiendo los mismoscriterios.

ü Si alguien del equipo tiene que retirarse por alguna razón, cualquier otrapersona del equipo puede reemplazarlo.

ü Es fácil que una persona nueva se integre al equipo.

Recomendaciones

ü El nombre de las entidades deben estar en singular.ü Los nombres de las columnas en lo posible deben ser únicos en toda la Base de

Datos.ü Las columnas que correspondes a Claves Foráneas deben tener el mismo

nombre de la columna que corresponde a la clave primaria de la tabla con laque se relaciona.

ü No usar espacios en blanco, letras acentuadas, la letra ñ, ni subrayado al darnombre a las tablas y columnas.

ü Usar un prefijo para el nombre de las columnas cuando sea necesario. Porejemplo el atributo Nombre se repite en las entidades Empresa, y Vendedor,para diferenciarlas se utiliza el prefijo Nom, por lo tanto a las columnas se leasigna los siguientes nombre NomEmpresa y NomVendedor, tal como lo puedeapreciar en el modelo físico.

Page 7: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

7

Modelo Lógico y Físico de la Base deDatos

Introducción

Para llegar a un modelo lógico de la base de datos es necesario antes realizaralgunos pasos que por las características de este manual solo los mencionare.

ü Recoger información de las personas que trabajan en la empresa.

ü Recoger una copia de los diferentes tipos de documentos que utiliza la empresa.

ü Informarse de las proyecciones que la empresa tiene para el futuro.

ü Identificar las entidades y sus relaciones.

ü Identificar los atributos de cada entidad.

ü Normalizar el modelo.

En este caso son pocos pasos y aparentemente sencillos, pero es importantecomentar que en muchas empresas se requiere de personal altamente calificado ycon experiencia para realizar el análisis, cuyos factores pueden ser:

ü Tamaño de la empresa.

ü Volumen de información.

ü Reglas de negocio bastante complejas, etc.

☺ Información detallada sobre el correcto Diseño de Bases de Datos lo entrará enwww.LibrosDigitales.NET

Page 8: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

8

Modelo Lógico

A continuación se muestra el modelo lógico que se ha diseño para nuestro caso, loque se quiere con este modelo es que sea útil y a la vez fácil de entender.

Figura 1.1 Modelo Lógico de la Base de Datos.

Page 9: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

9

Modelo Físico

Luego de tener el modelo lógico, debemos pasarlo al modelo físico, donde definimosel nombre real de cada columna en la base de datos, con su respectivo tipo de datoy nulidad respectivamente.

El modelo físico se define para un tipo de motor de base de datos, en nuestro casose trata de SQL Server, y el resultado es el siguiente:

Figura 1.2 Modelo Físico de la Base de Datos.

Para implementar este modelo utilizaremos técnicas de scripting. La integridad dedatos, si bien se puede definir en una herramienta de modelamiento de datos comoERwin, se definirá ejecutando las sentencias del Lenguaje de Definición de Datos(DDL) de SQL, desde la herramienta SQL Server Query Analyzer.

Page 10: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

10

Creación de la Base de Datos

1. Inicie SQL Server Enterprise Manager.

2. Conéctese a su servidor de bases de datos (de ser necesario, registre previamente elservidor).

Figura 1.3 SQL Server Enterprise Manager.

Page 11: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

11

Creación de la Base de Datos

1. Haga clic sobre la carpeta Base de datos utilizando el botón secundario delratón.

2. Del menú contextual, ejecute Nueva base de datos. Aparece el diálogoPropiedades de la base de datos.

3. En el control Name de la ficha General, digite BDLima.4. Todos los demás parámetros los dejaremos con sus valores por defecto, así que

hacemos clic sobre el botón Aceptar.

Figura 1. 4 Creación de la Base de Datos.

☺ Estamos preparando un manual de Access, pronto en www.LibrosDigitales.NET

Page 12: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

12

Creación de las TablasLa creación de las tablas se hará mediante la ejecución de un script SQL que seencuentra en el archivo CreaTabla.sql.

1. En su aplicación SQL Server Enterprise Manager, haga clic sobre el botónHerramientas que se encuentra en la barra de herramientas.

2. En el menú desplegable, haga clic sobre Analizador de consultas SQL paracargar el Analizador de Consultas de SQL.

3. En el control desplegable de su barra de herramientas (Combo), seleccione labase de datos BDLima.

4. En el menú Archivo, ejecute el comando Abrir. Aparece el diálogo Abrirarchivo de consulta.

5. Ubique en la carpeta donde se encuentran los archivos y seleccione el archivoCreaTablas.sql. Luego, haga clic en el botón Abrir.

Figura 1. 5 Analizador de Consultas.

6. Este script crea todas las tablas definidas en el modelo físico de la base dedatos. Para ejecutarlo, en el menú Consulta haga clic en el comando Ejecutar,o haga clic sobre el botón Ejecutar consulta de la barra de herramientas.

Page 13: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

13

Visualización de las tablas desde Enterprise Manager

1. Conmute al Enterprise Manager.

2. Expanda la carpeta Base de datos. Luego expanda BDLima,

3. Haga clic con el botón secundarios del Mouse en Tablas y ejecute el comandoactualizar.

También puede verificar las tablas que se han creado ejecutando la siguienteconsulta:

use BDLimaselect * from sysobjects where type = 'u'GO

Page 14: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

14

Definición de la integridad de datos

La integridad de datos se puede definir de manera gráfica desde el EnterpriseManager. Sin embargo, utilizaremos el Analizador de consultas parafamiliarizarnos con las sentencias SQL del Lenguaje de Definición de Datos.

Creación de llaves primarias

La sintáxis de la sentencia SQL que permite añadir una llave primaria a una tabla esla siguiente:

ALTER TABLE nombre_tablaADD CONSTRAINT nombre_llave_primariaPRIMARY KEY ( columna(s)_llave_primaria )

Donde:

ü nombre_tabla es el identificador de la tabla a la que pertenece la llaveprimaria.

ü nombre_llave_primaria es el nombre de la restricción llave primaria, yademás el nombre del índice asociado a la restricción.

ü columna(s)_llave_primaria son los nombres de la columna o columnas quese desean definir como la llave primaria de la tabla.

Para verificar la definición de la restricción puede utilizar el procedimientoalmacenado del sistema sp_help entregándole como parámetro el nombre de latabla.

SP_HELP nombre_tabla

Page 15: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

15

Definir las Claves Primarias del Modelo

A continuación pasaremos a describir las claves primarias de cada una de las tablasy los criterios que se han tenido en cuenta para su regla de formación, usted debecompletar escribiendo la instrucción SQL que permita crearla.

El nombre de la clave primaria debe tener la siguiente regla de formaciónpk_xxxxx, donde xxxxx es el nombre de la tabla.

☺ Obtenga información adicional en www.LibrosDigitales.NET

Descripción de cada tabla

Tabla: Linea

Clave PrimariaIdLinea

ComentarioLos artículos están agrupados en líneas (ó categorías), cada línea representa unaclase de artículo y esta identificada por un número correlativo. Esta columna es detipo IDENTITY.

Además, cada línea tiene un prefijo y su propio contador los cuales se utilizan paragenerar el código de cada artículo. Por ejemplo la línea que corresponde a licores suprefijo es LIC y los artículos tienen los siguientes códigos LIC00001, LIC00002,LIC00003, etc.

Tabla: Articulo

Clave PrimariaIdArticulo

ComentarioPara generar el código del artículo es necesario tener en cuenta la línea a la cualpertenece, para determinar el prefijo y el número correlativo que le corresponde.Por ejemplo si pertenece a la línea de Granos su prefijo es GRA y los códigos de losartículos serian GRA00001, GRA00002, GRA00003, etc.

Tabla: Unidad

Clave PrimariaIdUnidad

ComentarioLa unidad determina la unidad de comercialización de cada artículo.

Page 16: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

16

Tabla: Empresa

Clave PrimariaIdEmpresa

ComentarioPara generar el código de la empresa se utiliza la siguiente plantilla E#####, porejemplo E00001, E00002, E00003, etc. El control del correlativo se lleva a cabo enla tabla Control.

Tanto los clientes como proveedores están registrados en esta tabla, esto por queun cliente de un artículo, puede ser proveedor de otro artículo diferente.Las columnas cliente y Proveedor determinan si es cliente, proveedor ó ambos.

Tabla: Vendedor

Clave PrimariaIdVendedor

ComentarioPara generar el código de un vendedor se utiliza la siguiente plantilla V#####, porejemplo V00001, V00002, V00003, etc. El control del correlativo se lleva a cabo enla tabla Control.

Tabla: TipoDoc

Clave PrimariaIdTipoDoc

ComentarioEsta tabla permite clasificar los documentos y controlar cada correlativo de losdocumentos de salida. Esta clave primaria es de tipo IDENTITY.

El contenido de esta tabla inicialmente es:

IdTipoDoc DesTipoDoc Accion Serie

Contador

1 Factura (Venta) Salida 1 18

2Factura(Compra) Ingreso 0 0

3 Boleta (Venta) Salida 1 1

La columna Accion, determina si el documento es de ingreso ó de salida, si eldocumento es de ingreso su número lo determina el proveedor, solamente secontrola la serie y el número del documento cuando es de salida (Venta).

Page 17: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

17

Tabla: Documento

Clave PrimariaIdDocumento

ComentarioCada documento tiene un número correlativo que lo identifica, este correlativo escontrolado en la tabla Control.

Todos los documentos de compra y venta están registrados en esta tabla, lacolumna IdTipoDoc determina la clase de documento y columna Numero guardael número real del documento.

Tabla: Detalle

Clave PrimariaIdDocumento, IdArticulo

ComentarioEn este caso la clave primaria esta formada por dos columnas, y los valores deestas columnas se obtienen de las entidades Documento y Artículo.

Esta clave primaria garantiza que en un documento no se repita un artículo.

Tabla: Control

Clave PrimariaParametro

ComentarioEsta clave primaria garantiza que no se repitan los parámetros.

Los parámetros que tenemos en esta tabla y un ejemplo de los valores que puedatener se muestran a continuación:

Parametro ValorDocumento 1Empresa 11IGV 18.0Vendedor 12

Es importante mencionar que la tabla Control tiene códigos disponibles.

Que el parámetro Empresa tenga valor 11, significa que hay 10 empresasregistradas, y si ingresamos una nueva su código debe ser E00011 y el valor delparámetro se incrementaría en uno, o sea su nuevo valor sería 12.

El parámetro IGV es de solo lectura cuando se realiza una venta, su valor esestable en el tiempo y no depende de la empresa, sino del gobierno.

Page 18: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

18

Creación de llaves foráneas

La sentencia SQL para definir una restricción llave foránea es la siguiente:

ALTER TABLE nombre_tabla_secundariaADD CONSTRAINT nombre_llave_foráneaFOREIGN KEY ( columna_llave_foránea )REFERENCES nombre_tabla_primaria

Donde:

ü nombre_tabla_secundaria es el identificador de la tabla a la que pertenece lallave foránea.

ü nombre_llave_foránea es el nombre de la restricción llave foránea..

ü columna_llave_foránea es el nombre de la columna que se desea definircomo la llave foránea de la tabla secundaria.

ü nombre_tabla_primaria es el identificador de la tabla primaria con la que lallave foránea relaciona a la tabla secundaria. La tabla primaria debe tenerdefinida como llave primaria la columna con el atributo común con la tablasecundaria.

Para verificar la definición de la restricción puede utilizar el procedimientoalmacenado del sistema sp_help.

Page 19: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

19

Definir las Claves Foráneas del Modelo

A continuación usted debe construir la instrucción SQL para definir la clave foráneade cada una de las tabla.

Tabla: Articulo

Instrucción SQL

Tabla: Documento

Instrucción SQL

Tabla: Detalle

Instrucción SQL

Page 20: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

20

Creación de un diagrama de base dedatos

SQL Server permite crear diagramas que muestran las relaciones de toda o partede la base de datos.

Para crear un diagrama de base de datos:

1. En el Enterprise Manager, expanda su base de datos BDLima.

2. Haga clic sobre Diagramas utilizando el botón secundario del mouse.

3. Del menú contextual ejecute Nuevo diagrama de base de datos. Se carga elAsistente para Diagramas de Base de Datos.

4. Haga clic en el botón Siguiente.

5. En la lista Tablas disponibles, seleccione la tabla que desea mostrar en eldiagrama, y haciendo clic en el botón Agregar, muévala a la lista Tablas queagregar al diagrama.

6. Repita el punto 5 con todas las tablas que desea mostrar en el diagrama. Paranuestro diagrama, seleccione todas las tablas.

7. Haga clic en el botón Siguiente. Luego, en el botón Finalizar.

8. Espere que SQL Server le responda que el diagrama ha sido generado. Luego,haga clic en el botón Aceptar.

9. Para finalizar, salve el diagrama como ModeloBDLima.

Page 21: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

21

Figura 1. 6 Esquema de la Base de Datos.

Page 22: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

22

Carga de los datos de muestraPara cargar datos de muestra se debe ejecutar la instrucción SQL INSERT, paranuestro caso se ha preparado un archivo llamado CargaDatos.SQL, lo que ustedtiene que hacer, es simplemente cargarlo en el analizador de consultas y ejecutarlo.

Figura 1.7 Datos de Muestra.

Visualización del contenido de las tablas

Para revisar el contenido de una tabla podemos utilizar el Enterprise Manager, ó lainstrucción SQL SELECT en el Analizador de Consultas. Veamos un ejemplo:

use BDLimaselect * from articuloGO

Page 23: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

23

El mecanismo de seguridad de SQLServer

En esta parte, veremos cómo se maneja la seguridad en SQL Server, y qué es loque determina lo que un usuario puede hacer en la base de datos a la que seconecta.

Un usuario, para realizar labores efectivas sobre una base de datos, debe efectuarun esquema de seguridad de dos etapas:

1. La autenticación, que define a través de una cuenta de identificación de usuario,si éste puede acceder a una base de datos de SQL Server, y

2. Los permisos de validación, que determinan qué actividades puede realizar elusuario sobre la base de datos.

Modos de autenticación SQL Server

Acerca de la autenticación, SQL Server soporta dos mecanismos de seguridad:

ü La autenticación integrada con Windows NT, que permite que un usuarioacceda a SQL Server utilizando su cuenta de usuario Windows NT, y

ü La autenticación SQL Server, que establece que el usuario debe tener unacuenta SQL Server, adicional a la cuenta Windows NT para poder acceder a SQLServer.

El mecanismo de seguridad SQL Server

Para explicar qué es lo que determina que un usuario pueda acceder a SQL Server,y ejecutar acciones sobre una base de datos, lo haremos en base a laautenticación SQL Server.

Se cuenta con un servidor Windows NT identificado como MiNTServer (ver Figura1.8); éste tiene instalado el servidor de bases de datos SQL Server de nombreMiSQLServer. A su vez, el servidor SQL cuenta con las bases de datos: Ventas,Personal, y Finanzas.

Las cuentas de usuario NT smatsukawa y lvillalba permiten a los propietarios dedichas cuentas acceder a determinados recursos del servidor Windows NT. Comolos propietarios de estas cuentas NT acceden al servidor SQL utilizando elmecanismo de autenticación SQL Server, necesitan contar con cuentas deidentificación para SQL Server (Login IDs). El administrador del servidor SQL hacreado para ellos los login IDs sergio y mila respectivamente.

El login ID sergio le permite a la cuenta NT smatsukawa acceder a las bases dedatos Ventas y Finanzas. El login ID mila otorga acceso a las bases de datosPersonal y Finanzas a la cuenta NT lvillalba.

Page 24: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

24

Figura 1.8 Autentificación de usuarios en SQL Server.

Los roles de bases de datos

Para que una persona pueda realizar operaciones en una base de datos SQL debeestar registrada como usuario de la base de datos. Las operaciones que un usuariopuede realizar sobre la base de datos están determinadas por los permisos devalidación que se le han concedido.

SQL Server ha concebido los roles de bases de datos como un mecanismo deadministración de la seguridad en una base de datos. Por ejemplo, el roldb_datareader establece que todos los usuarios que pertenecen a este rol solopueden efectuar operaciones de lectura sobre la base de datos a la que perteneceel rol. Cada base de datos cuenta con su propio conjunto de roles de bases dedatos.

En el diagrama, tanto el login ID sergio, como el login ID mila tienen acceso a labase de datos Finanzas ya que ambos están mapeados a los usuarios sergio ymila respectivamente, de dicha base de datos. Ambos pueden leer las tablas yvistas de la base de datos Finanzas porque los usuarios sergio y mila pertenecenal rol db_datareader. Adicionalmente, el usuario sergio puede modificar la datade la base de datos porque también pertenece al rol db_datawriter. Sin embargo,el administrador o el dueño de la base de datos podrían determinar que, porejemplo, el usuario sergio no pueda leer ni escribir sobre algunas tablasrevocándole el permiso sobre dichas tablas. En otras palabras, lo que un usuariopuede hacer en una base de datos está determinado por el rol o roles al que elusuario pertenece, y por los permisos específicos sobre los objetos de la base dedatos.

En el mismo diagrama de la Figura 1.8, el login ID mila está mapeado al usuariodbo (database owner - propietario de la base de datos) de la base de datosPersonal. Por lo tanto, mila como propietaria de la base de datos no tiene ningunarestricción sobre ella. Toda base de datos tiene su usuario dbo, el que pertenece demanera predeterminada al rol db_owner de dicha base de datos.

Page 25: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

25

Y, ¿en el caso de la autenticación integrada aWindows NT?

En este caso, el usuario accede a una base de datos utilizando su cuenta de usuarioNT sin necesidad de contar con un login ID SQL Server. Para que esto sea posible,la cuenta de usuario NT debe estar mapeada a un usuario de la base de datos a laque debe tener acceso.

En resumen

ü Una cuenta de usuario NT otorga acceso a los recursos del servidor WindowsNT.

ü Un login ID de SQL Server permite acceder a una o mas bases de datos delservidor SQL.

Un usuario de base de datos específica los roles a cumplir en la base de datos, ylos permisos específicos sobre los objetos de la base de datos. Para que un login IDo una cuenta de usuario NT puedan ejecutar tareas en la base de datos deben tenermapeado un usuario de la base de datos.

Page 26: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

26

Acceso a Datos

Objetivos

En este segundo módulo desarrollaremos los siguientes puntos:

ü OLE DB.

ü ActiveX Data Object (ADO)

ü Conexión con la Base de Datos.

ü Ejecución de Comandos.

ü Manejo de Resultados.

Page 27: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

27

OLE DBEs una arquitectura de base de datos que proporciona integración universal dedatos a través de una red empresarial, desde un gran sistema a un equipo deescritorio, independientemente del tipo de datos. OLE DB es una estrategia deacceso a datos más generalizada y más eficaz que ODBC, debido a que permite elacceso a un mayor número de tipos de datos y está basada en el Modelo de objetoscomponentes (COM).

OLE DB es una estratégica de programación de sistemas de Microsoft para obteneracceso a los datos de una organización. OLE DB es una especificación abiertadiseñada para desarrollar sobre el éxito de ODBC proporcionando un estándarabierto para tener acceso a todas las clases de datos. Mientras que ODBC se creópara tener acceso a bases de datos relacionales, OLE DB está diseñado paraorígenes de datos relacionales y no relacionales, incluyendo las bases de datosISAM/VSAM de los grandes sistemas y las bases de datos jerárquicas; almacenesde sistemas de archivos y correo electrónico; datos de texto, gráficos y geográficos,objetos de negocios personalizados, etc.

OLE DB define una colección de interfaces de tipo COM que encapsulan variosservicios de los sistemas de administración de bases de datos. Estas interfacespermiten la creación de componentes de software que implementen dichosservicios. OLE DB tiene tres tipos de componentes: Proveedores de datos,receptores de datos y Componentes de servicio. La Figura 2.1 muestra un esquemade la arquitectura OLE DB.

Figura 2. 1 Arquitectura OLE DB.

Page 28: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

28

Proveedores de datos (Data Providers)

Los proveedores de datos son aplicaciones, como Microsoft SQL Server o Exchange,o bien componentes del sistema operativo, como un sistema de archivos, quedispone de datos a los que otras aplicaciones pueden necesitar tener acceso. Dichosproveedores de datos exponen interfaces OLE DB a las que los componentes deservicio o los receptores de datos pueden tener acceso de forma directa. Existetambién un proveedor de OLE DB para ODBC, dicho proveedor pone los datosODBC a disposición de los receptores de datos OLE DB.

Receptores de Datos (Data Consumers)

Los receptores de datos son aplicaciones que utilizan los datos expuestos por losproveedores de datos. ADO es la interfaz de programación para utilizar OLE DB.Cualquier aplicación que utilice ADO es un receptor de datos OLE DB.

Componentes de Servicio (Service Components)

Los componentes de servicio son componentes OLE DB que procesan y transportandatos. Entre dichos componentes se incluyen los procesadores de consultas y losmotores de cursores. La arquitectura OLE DB está separada en componentes, demodo que no es preciso que los proveedores de datos tengan la capacidadinherente de proporcionar datos de forma comprensible para ADO. Estoscomponentes de servicio otorgan a ADO la capacidad de recibir datos OLE DB deproveedores que no ofrecen control de conjuntos de resultados o interpretación deconsultas SQL de un modo intrínseco.

Page 29: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

29

ActiveX Data Object (ADO)ADO se ha diseñado como una interfaz a nivel de aplicación, fácil de usar paracualquier proveedor de datos OLE DB, incluyendo bases de datos relacionales y norelacionales, sistemas de correo electrónico y de archivos, texto y gráficos, yobjetos empresariales personalizados, así como orígenes de datos ODBC existentes.Prácticamente todos los datos disponibles en la empresa están disponiblesmediante el uso de la tecnología de acceso a datos de ADO.

ADO es fácil de utilizar, independiente del lenguaje, utiliza un tráfico de red mínimoy posee menos capas entre la aplicación cliente y el origen de datos (de maneraque proporciona un acceso a datos ligero y de alto rendimiento).

Las características generales de ADO son:

ü Fácil de utilizar.ü Alto rendimiento.ü Control de cursores mediante programación.ü Tipos complejos de cursores, incluyendo cursores de proceso por lotes y

cursores de cliente y servidor.ü Capacidad de devolver múltiples conjuntos de resultados desde una única

consulta.ü Ejecución de consulta síncrona, asíncrona o controlada por eventos.ü Objetos reutilizables y de propiedades modificables.ü Administración avanzada de caché de recordsets.ü Flexibilidad: funciona con tecnologías existentes de base de datos y con todos

los proveedores OLE DB.ü Excelente detección de errores.

La semántica sencilla de ADO y su aplicación universal implica mínimoentrenamiento de los programadores, programación rápida de aplicaciones y bajocosto de mantenimiento.

Modelo de Objetos ADO

El modelo de objetos de ADO define una colección de objetos programables queadmiten el Modelo de Objeto Componente (COM) y Automatización OLE paraaprovechar la tecnología denominada OLE DB. El modelo de objetos de ADO(cuando se compara con otros objetos de acceso a datos como RDO o DAO) es másplano (tiene menos objetos) y más sencillo de utilizar.

El modelo de objetos ADO consta de tres componentes principales: el objetoConnection, el objeto Command y el objeto RecordSet, En la Figura 2.2 puedeapreciar la relación que existe entre los objetos ADO.

Page 30: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

30

Figura 2.2 Modelo de Objetos ADO.

El modelo de objetos ADO se diferencia del los modelos de objetos RDO y DAO enque muchos de los objetos se pueden crear independientemente unos de otros. Porejemplo, puede crear un objeto RecordSet sin crear primero de forma explicita unobjeto Connection. ADO crea implícitamente el objeto Connection necesario.

En el modelo de objetos de ADO hay siete objetos, como se describe acontinuación:

Objeto: Connection

Mantiene información de conexión, el tipo de cursor, la cadena de conexión, eltiempo de espera de la consulta, el tiempo de espera de la conexión y la base dedatos.

Objeto: Command

Mantiene información acerca de un comando, como una cadena de consulta,definiciones de parámetro, etcétera. El objeto Command es útil cuando deseedefinir parámetros de consultas ó ejecutar procedimientos almacenados quedevuelva parámetros de resultados. Los objetos Command admiten variaspropiedades para describir el tipo y el propósito de la consulta y para ayudar a ADOa optimizar la operación.

Objeto: Recordset

Un conjunto de filas devueltas de una consulta, que incluye un cursor en las filas.Puede abrir un objeto Recordset (es decir, ejecutar una consulta) sin tener queabrir de forma explícita un objeto Connection. Sin embargo, si crea un objetoConnection en primer lugar, puede abrir múltiples objetos Recordset en la mismaconexión.

Page 31: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

31

Objeto: Error

Contiene información ampliada acerca de condiciones de error producida por elproveedor de datos. Como una única instrucción puede generar dos o más errores,la colección Errors puede contener más de un objeto Error al mismo tiempo.

Objeto: Field

Contiene información acerca de una única columna de datos de un recordset. Elobjeto Recordset utiliza la colección Fields para que contenga a todos sus objetosField. Esta información de Field incluye el tipo de datos, la precisión y la escalanumérica.

Objeto: Parameter

Es un parámetro individual asociado a un objeto Command. El objeto Commandutiliza la colección Parameters para que contenga a todos sus objetos Parameter.Los objetos Parameter de ADO se pueden generar automáticamente enviandoconsultas a la base de datos. Sin embargo, también puede generar esta colecciónmediante programación para mejorar el rendimiento en tiempo de ejecución.

Objeto Property

Una característica definida por el proveedor de un objeto ADO. Los objetos ADOtienen dos tipos de características: integradas y dinámicas. Las propiedadesintegradas son las que están implementadas en ADO y se encuentran disponiblespara cualquier objeto nuevo de ADO. Las propiedades dinámicas están definidas porel proveedor de datos subyacente y aparecen en la colección Properties para elobjeto de ADO apropiado. Por ejemplo, una propiedad puede indicar si un objetoRecordset admite transacciones o actualizaciones. Ésta es una de las principalescaracterísticas de ADO, que permite al proveedor de servicios de ADO presentarinterfaces especiales.

Page 32: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

32

Colecciones ADO

Los objetos ADO se agrupan en colecciones, como se puede apreciar en la Figura2.3.

Figura 2.3 Colecciones ADO.

Errors

La colección Errors contiene todos los objetos Error creados en respuesta a un únicofallo relacionado con el proveedor.

Parameters

La colección Parameters contiene todos los objetos Parameter de un objetoCommand.

Fields

La colección Fields contiene todos los objetos Field de un objeto Recordset.

Properties

La colección Properties contiene todos los objetos Property de una instanciaespecífica de un objeto.

Page 33: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

33

Cargar la Librería de Objetos ADO

Para poder usar los objetos ADO en un proyecto de Visual Basic es necesario enprimer lugar cargar la librería correspondiente, para lo cual debe seguir lossiguientes pasos:

1. Inicie Visual Basic con un proyecto de tipo Estándar.

2. Del menú Proyecto ejecute el comando Referencias.

3. En el diálogo Referencias, seleccione la opción Microsoft Actives Data Object2.0, (Como se muestra en la Figura 2.4) y luego haga clic en el botón Aceptar.

Figura 2.4 Librería de Objetos ADO.

Ahora esta en condiciones de utilizar los objetos ADO en su proyecto.

Page 34: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

34

Conexión con una Base de DatosA continuación tenemos un ejemplo típico para la conexión con una base de datosSQL Server.

Option ExplicitPublic cn As ADODB.Connection

Public Sub Main() Dim adoErr As ADODB.Error Set cn = New ADODB.Connection On Error GoTo TrataError With cn .Provider = "SQLOLEDB" .ConnectionString = "Data Source=NombreDelServidor;" & _ "Initial Catalog=NombreDeLaBD;" & _ "User Id=LoginId;" & _ "Password=Password" .Open End With MsgBox "Conexión Conforme" MDIPrincipal.Show Exit SubTrataError: Beep For Each adoErr In cn.Errors MsgBox adoErr.Description NextEnd Sub

Se asume que la variable pública será utilizada para que los otros objetos accedana la base de datos.

Page 35: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

35

Ejecución de Instrucciones Transact-SQLEl objeto Connection permite ejecutar instrucciones Transact-SQL, como se ilustra acontinuación.

Para una instrucción que no retorna resultados

Conecction.Execute CommandText, RecordsAffected, Options

Para una instrucción que retorna un conjunto de resultados

Set RecordSet = Conecction.Execute( CommandText,RecordsAffected, Options )

Ejemplos Ilustrativos

Insertar un nuevo vendedor

CmdSQL = “Insert Into Vendedor( IdVendedor, ApeVendedor, “ & _“NomVendedor, DirVendedor, TelVendedor ) “ & _“Values( ‘V55555’, ‘Roman Sanchez’, ‘David’, “ & _“‘Los Olivos’,‘534-4597’ )”

Cn.Execute cmdSQL, Rows, adCmdTextIf Rows = 1 Then

MsgBox “Proceso ejecutado correctamente”End If

Actualizar el stock de un artículo

CmdSQL = “Update Articulo ” & _“Set Stock = 1200 “ & _“Where IdArticulo = ‘LIC00001’”

Cn.Execute cmdSQL, Rows, adCmdTextIf Rows = 1 Then

MsgBox “Proceso ejecutado correctamente”End If

Page 36: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

36

Crear un ResordSet

Dim rs As ADODB.RecordsetDim cmdSQL As StringcmdSQL = "Select * From Linea"Set rs = cn.Execute(cmdSQL)Set dbDatLinea.DataSource = rs

Page 37: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

37

Objeto Command

El objeto Command también permite ejecutar instrucciones Transact-SQL, laventaja es que permite crear parámetros y pueden ser reutilizados.

Creación de un objeto Command (Caso 1)

Dim cmd as New ADODB.Command

Creación de un objeto Command (Caso 2)

Dim cmd as ADODB.CommandSet cmd = New ADODB.Command

Establecer las propiedades del objetos Command

cmd.ActiveConnection = cncmd.CommandText = InstrucciónTransactSQLcmd.CommandType = TipoDeComando

Crear un Parámetro

Dim prm as ADODB.ParameterSet prm = cmd.CreateParameter( Name, Type, Direction, Size,Value )cmd.Parameters.Append prm

Acceso a un Parámetro

cmd.Parameters(“NombreDelParametro”).Value

Ejecutar el comando que no retorna filas

cmd.Execute RecordsAffected, Parameters, Options

Page 38: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

38

Ejecutar un comando que retorna un conjunto de resultado

Set rs = cmd.Execute( RecordsAffected, Parameters, Options )

Page 39: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

39

Manejo de ResultadosPara el manejo de un conjunto de resultados debemos usar el objeto RecordSet,

Crear un objeto RecordSet (Caso 1)

Dim rs As New ADODB.RecordSet

Crear un objeto RecordSet (Caso 2)

Dim rs As ADODB.RecordSetSet rs = New ADODB.RecordSet

Establecer las principales propiedades del RecordSet

Rs.ActiveConnection = cnRs.Source = InstrucciónTransactSQLRs.CursorType = TipoDeCursorRs.CursorLocation = UbicaciónDelCursorRs.LockType = TipoDeBloqueo

Abrir el RecordSet

rs.Open Source, ActiveConnection, CursorType, LockType, Options

Verificar el estado de un RecordSet

Select Case rs.StateCase adStateClosed

MsgBox “Esta Cerrado”Case adStateOpen

MsgBox “Esta Abierto”Case adStateConnecting

MsgBox “Esta conectándose”Case adStateExecuting

MsgBox “Esta Ejecutando un Comando”Case adStateFetching

MsgBox “Esta Cargando filas”End Select

Page 40: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

40

Acceso a los campos de un RecordSet

Rs!NombreDelCampo

Enlazar un campo con un control, por ejemplo TextBox

Set Text1.DataSource = rsText1.DataField = “NombreDelCampo”

Desplazarnos por las filas de un RecordSet

Rs.MoveFirst ‘ Primera filaRs.MovePrevious ‘ Fila anteriorRs.MoveNext ‘ Fila SiguienteRs.MoveLast ‘ Ultima Fila

Cuando nos desplazamos por encima del primer registros, la propiedad BOF tomavalor TRUE, y si nos desplazamos más haya del último registro la propiedad EOFtoma valor TRUE.

Verificar el estado de edición de un RecordSet

Select Case rs.EditModeCase adEditNone

MsgBox “No Esta en Edición”Case adEditProgress

MsgBox “El registro actual esta en edición”Case adEditAdd

MsgBox “El registro actual es uno nuevo”Case adEditDelete

MsgBox “El registro actual se ha eliminado”End Select

Agregar un nuevo registro

Rs.AddNew

Page 41: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

41

Grabar los cambios realizados

Rs.Update

Cancelar los cambios

Rs.CancelUpdate

Eliminar el registro actual

Rs.Delete

Cerrar un RecordSet

Rs.CloseSet rs = Nothing

Manejo del puntero de registro

El RecordSet tiene una propiedad llamada BookMark que es un puntero al registroactual, si deseamos guardar este valor en una variable, esta variable debe ser detipo Variant. Esta propiedad es de lectura y escritura es tiempo de ejecución.

Page 42: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

42

Objetos del Servidor

Objetivos

En este tercer modulo desarrollaremos los siguientes puntos:

ü Creación de procedimientos almacenados.ü Uso de parámetros de entrada y salida en un procedimiento almacenado.ü Uso de valor de retorno de un procedimiento almacenado.ü Creación de vistas.ü Criterios para el uso de vistas.

Page 43: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

43

Procedimientos almacenadosUn procedimiento almacenado es un objeto que se almacena en la base de datos, yque ejecuta una serie de instrucciones SQL cuando es invocado.

Ventajas de los procedimientos almacenados

ü La lógica de la aplicación puede ser compartida con otras aplicaciones. Losprocedimientos almacenados pueden encapsular la lógica de negocios en unasola ubicación, y estar disponible para muchas aplicaciones.

ü Proporciona un mecanismo de seguridad. Se puede otorgar a un usuariopermiso para ejecutar un procedimiento almacenado aun cuando no tengapermiso para acceder a las tablas referenciadas por el procedimientoalmacenado.

ü Mejora el rendimiento del sistema y reduce el tráfico en la red. El uso de lógicacondicional determina qué sentencias se ejecutarán y cuáles no.

Creación de procedimientos almacenados

Procedimiento que no recibe ni devuelve parámetros

CREATE PROCEDURE nombre_procedimientoAS

instrucción_sql

Procedimiento que recibe parámetros

CREATE PROCEDURE nombre_procedimiento@parámetro1 tipo_dato [ = valor ] ,@parámetro2 tipo_dato [ = valor ] , ...

ASinstrucción_sql

Procedimiento que recibe y entrega parámetros

CREATE PROCEDURE nombre_procedimiento@parámetro1 tipo_dato [ = valor ] ,@parámetro2 tipo_dato [ = valor ] OUTPUT , ...

ASinstrucción_sql

Page 44: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

44

ü Un procedimiento almacenado puede hacer referencia a tablas, vistas y otrosprocedimientos almacenados, así como a tablas temporales. Estas últimas soloexisten mientras el procedimiento se está ejecutando.

ü La sentencia CREATE PROCEDURE no se puede combinar con otras sentenciasSQL en el mismo batch.

ü En un procedimiento almacenado no se puede ejecutar: CREATE DEFAULT,CREATE PROCEDURE, CREATE RULE, CREATE TRIGGER y CREATE VIEW.

ü Para crear un procedimiento almacenado se debe ser miembro de alguno de lossiguientes roles: sysadmin, db_owner, o db_ddladmin, o debe tener el permisopara crear procedimientos.

Obtención de la definición de un procedimientoalmacenado

Tabla delsistema

Almacena Procedimiento

sysobjects Nombre delprocedimientoalmacenado

sp_help [nombre_procedimiento ]

sysdepends Nombre de los objetosdependientes delprocedimientoalmacenado

sp_dependsnombre_procedimiento

syscomments Sentencia que definió elprocedimientoalmacenado

sp_helptextnombre_procedimiento

Page 45: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

45

Modificación de un procedimiento almacenado

Para modificar un procedimiento almacenado conservando su asignación depermisos, ejecute la sentencia ALTER PROCEDURE. La definición previa delprocedimiento será reemplazada por la definición establecida en ALTERPROCEDURE.

ALTER PROCEDURE nombre_procedimiento[ @parámetro1 tipo_dato [ = valor ] ,@parámetro2 tipo_dato [ = valor ] OUTPUT , ... ]

ASinstrucción_sql

Eliminación de un procedimiento almacenado

DROP PROCEDURE nombre_procedimiento

Ejecución de un procedimiento almacenado

Procedimiento que no recibe ni devuelve parámetros

CREATE PROCEDURE nombre_procedimientoAS

instrucción_sql

EXECUTE nombre_procedimiento

Procedimiento que recibe parámetros

CREATE PROCEDURE nombre_procedimiento@parámetro1 tipo_dato [ = valor ] ,@parámetro2 tipo_dato [ = valor ] , ...

ASinstrucción_sql

EXECUTE nombre_procedimiento parámetro1 , parámetro2 , ...

Page 46: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

46

Procedimiento que recibe y entrega parámetros

CREATE PROCEDURE nombre_procedimiento@parámetro1 tipo_dato [ = valor ] ,

@parámetro2 tipo_dato [ = valor ] OUTPUT , ...AS

instrucción_sql

EXECUTE nombre_procedimiento parámetro1 ,@var_salida OUTPUT , ...

☺ En www.LibrosDigitales.NET, encontrará manuales sobre éste tema.

Page 47: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

47

Estado de un procedimiento almacenado

Un procedimiento almacenado tiene un valor de estado, denominado código deretorno, para indicar el estado de su ejecución. Se especifica el código de retornopara un procedimiento mediante la instrucción RETURN. Al igual que con losparámetros OUTPUT, debe guardar el código de retorno en una variable cuando seejecute el procedimiento almacenado para utilizar su valor en el programa querealiza la llamada. Por ejemplo, la variable @result del tipo int se utiliza paraalmacenar el código de retorno del procedimiento almacenado mi_procedimiento:

DECLARE @result intEXECUTE @result = mi_procedimiento

Los códigos de retorno suelen utilizarse en los bloques de control de flujo dentro delos procedimientos almacenados con el fin de establecer el valor del código deretorno para cada situación de error posible. Puede utilizar la variable @@ERRORdespués de una instrucción Transact-SQL para detectar si se ha producido un errordurante la ejecución de la instrucción.

Ejemplo Ilustrativo

Procedimiento Ejemplo

CREATE PROCEDURE usp_ejemplo@valor1 smallint,@valor2 smallint,@resultado smallint OUTPUT

ASIf @valor1 is null or @valor2 is null

return -1SET @resultado = @valor1 * @valor2return 0GO

Prueba 01

Declare @Ret Int, @Prod SmallIntExec @Ret = usp_ejemplo 56, 80, @Prod OutPutSelect 'Código de Estado' = @Ret, Producto = @ProdGo'El resultado es ' , @salidaGO

Page 48: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

48

El resultado de esta prueba es:

Código de Estado Producto

---------------- --------

0 4480

(1 filas afectadas)

Prueba 02

Declare @Ret Int, @Prod SmallIntExec @Ret = usp_ejemplo Null, 80, @Prod OutPutSelect 'Código de Estado' = @Ret, Producto = @ProdGo

El resultado de esta prueba es:

Código de Estado Producto

---------------- --------

-1 NULL

(1 filas afectadas)

Page 49: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

49

Ejecutar un procedimiento desde VisualBasicPara ejecutar un procedimiento almacenado debemos utilizar un objeto Command,y si el procedimiento tiene parámetros debemos agregarle objetos de tipoParameter al objeto Command; uno por cada parámetro del procedimiento.

Ejemplo Ilustrativo

Como ejemplo ilustrativo crearemos un formulario que permita ejecutar elprocedimiento usp_ejemplo.

Formulario Utilizado

El formulario que utilizaremos es el que se muestra en la siguiente figura:

El nombre de los controles es:

Control DescripciónTxtN1 Cuadro de texto para ingresar el primer número.TxtN2 Cuadro de texto para ingresar el segundo número.

TxtProd Cuadro de texto para el resultado.CmdCalcular Botón de comando que ejecuta el procedimiento

almacenado.CmdLimpiar Botón de comando que limpia los controles.CmdCerrar Botón de comando que cierra el procedimiento.

Page 50: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

50

Ejecución del Procedimiento Almacenado

El procedimiento almacenado es ejecutado cuando el usuario hace clic en el botóncalcular, el script de este botón es el siguiente:

Private Sub cmdEjecutar_Click() On Error GoTo TrataError Dim cmd As ADODB.Command Dim prm As ADODB.Parameter ' Creamos en Objeto Command Set cmd = New ADODB.Command With cmd .ActiveConnection = cn .CommandText = "usp_Ejemplo" .CommandType = adCmdStoredProc End With ' Creamos los parámetros Set prm = cmd.CreateParameter("Ret", adInteger,adParamReturnValue) cmd.Parameters.Append prm Set prm = cmd.CreateParameter("N1", adSmallInt, adParamInput) cmd.Parameters.Append prm Set prm = cmd.CreateParameter("N2", adSmallInt, adParamInput) cmd.Parameters.Append prm Set prm = cmd.CreateParameter("Prod", adSmallInt,adParamOutput) cmd.Parameters.Append prm ' Asignar Datos a los parametros cmd.Parameters("N1").Value = txtN1.Text cmd.Parameters("N2").Value = txtN2.Text ' Ejecutar el Procedimiento cmd.Execute ' Verificar el Estado de la Ejecución If cmd.Parameters("Ret").Value = 0 Then txtProd.Text = cmd.Parameters("Prod").Value Else MsgBox "Falló el Procedimiento", vbOKOnly + vbCritical,"Error" End If ' Destruir el objeto Command Set cmd = Nothing Exit SubTrataError: MsgBox Err.Description, vbOKOnly + vbCritical, "Error"End Sub

☺ Este y el resto de programas se encuentran en www.LibrosDigitales.NET.

Page 51: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

51

Vistas

Es un objeto que almacena una consulta predefinida y que proporciona un modoalternativo de visualización de datos sin tener que redefinir la consulta.

CREATE VIEW v_Con_Empresa(IdEmpresa,NomEmpresa,Direccion,RUC,Telefono,Contacto,Cliente,Proveedor)

ASSELECT IdEmpresa,NomEmpresa,DirEmpresa,RUC,TelEmpresa,Contacto,

CASE ClienteWHEN 1 THEN 'Si'WHEN 0 THEN 'No'ELSE ''

END,CASE Proveedor

WHEN 1 THEN 'Si'WHEN 0 THEN 'No'ELSE ''

ENDFROM Empresa

GO

Para ejecutar la vista:

SELECT * FROM v_con_Empresa

Una vista puede incluir:

ü Un subconjunto de filas o columnas de una tablaü La unión de dos o mas tablasü Un join de dos o mas tablasü Un resumen estadístico de una o mas tablasü Un subconjunto de otra vista, o combinación de vistas y tablas.

Ventajas de las vistas

ü El usuario accede a la data importante o apropiada para él. Limita el acceso adatos sensibles.

ü Oculta la complejidad del modelo de datos. Un join de múltiples tablas seconvierte en un simple SELECT para el usuario.

ü Desde el punto de vista del usuario, una vista es una "tabla" pues puedeejecutar en ella todas las operaciones de datos: SELECT, INSERT, UPDATE yDELETE.

Page 52: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

52

Creación de vistas

CREATE VIEW nombre_vista [ ( lista_columnas ) ][ WITH ENCRYPTION ]

ASinstrucción_select[ WITH CHECK OPTION ]

Las siguientes restricciones se aplican a la creación de vistas:

ü No se puede definir una vista con ORDER BY, COMPUTE, COMPUTE BY o SELECTINTO.

ü No pueden hacer referencia a tablas temporales.ü No pueden hacer referencia a mas de 1024 columnas.

Ejemplo Ilustrativo

CREATE VIEW v_Rep_Articulo(Linea,IdArticulo,DesArticulo,Unidad,Stock, PreCosto,Dscto,PreVenta)

ASSELECT L.DesLinea, A.IdArticulo, A.DesArticulo, U.DesUnidad,

A.Stock, A.PreCosto, A.Dscto, A.PreVentaFROM Linea LINNER JOIN Articulo AON L.IdLinea = A.IdLineaINNER JOIN Unidad UON A.IdUnidad = U.IdUnidad

GO

Crea una vista de nombre v_rep_Articulo en la que se combina datos de las tablasLinea, Articulo y Unidad. El resultado de esta vista podría utilizarse en una consultao un reporte.

Obtención de la definición de una vista

Tabla desistema

Almacena Procedimiento

sysobjects Nombre de la vista sp_help [ nombre_vista ]sysdepends Nombre de los objetos dependientes

de la vistasp_dependsnombre_vista

syscomments Sentencia que definió la vista sp_helptextnombre_vista

syscolumns Columnas definidas en la vista sp_columnsnombre_vista

Page 53: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

53

Modificación de la definición de una vista

ALTER VIEW nombre_vistaAS

nueva_sentencia_select

Eliminación de una vista

DROP VIEW nombre_vista

Ocultando la definición de una vista

Ejecute CREATE VIEW con la opción WITH ENCRYPTION.

Modificación de datos a través de vistas

Desde el punto de vista del usuario, una vista es una "tabla" ya que él puedeejecutar sobre la vista las sentencias SELECT, INSERT, UPDATE y DELETE. Estassentencias ejecutadas sobre la vista afectan a las tablas dependientes de ella.Deben tenerse en cuenta las siguientes consideraciones al momento de crear lasvistas:

ü La modificación no puede afectar a más de una de las tablas dependientes.ü Las vistas con columnas computadas deben ser de solo lectura ya que producen

error cuando se trata de ejecutar modificaciones a través de ellas.ü Las columnas no nulas que no son referenciadas en la vista pueden producir

errores cuando se ejecuta una modificación a través de la vista.ü Si el SELECT asociado a la vista ha sido definido con una cláusula WHERE, el

uso de la opción WITH CHECK OPTION al momento de crear la vista hará quelas modificaciones que se hagan a través de ella respeten el criterio del WHERE.

Page 54: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

54

Ejecutar una Vista desde Visual Basic

Desde una aplicación cliente veremos una vista como si fuera una tabla, por lotanto debemos invocarla en una instrucción SELECT, como se hace con cualquierotra tabla.

Ejemplo Ilustrativo

En este ejemplo tenemos un control DataList con un listado de las líneas, donde elusuario al seleccionar una de ellas se muestra sus respectivos artículos en uncontrol DataGrid, como se muestra en el siguiente gráfico:

El nombre de los controles es:

Control DescripciónDBLstLinea Control DataList donde se muestra todas las líneas que se

encuentran grabadas en la tabla Linea.DBGrdProducto Control DataGrid donde se muestra los artículos de la línea

seleccionada en el control DataList.

Page 55: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

55

Variables del Formulario

Option ExplicitPrivate rsLinea As New ADODB.RecordsetPrivate rsArticulo As New ADODB.Recordset

Programar el Formulario

En el evento Load del formulario cargamos el control DBLstLinea.

Private Sub Form_Load() With rsLinea .ActiveConnection = cn .CursorType = adOpenStatic .CursorLocation = adUseClient .Open "Select DesLinea From Linea" End With Set DBLstLinea.RowSource = rsLinea DBLstLinea.ListField = "DesLinea" DBLstLinea.BoundColumn = "DesLinea"End Sub

☺ Es importante sus opiniones y sugerencias para mejorar el contenido y poder remitirles la siguienteentrega, hágalo en www.LibrosDigitales.NET.

Page 56: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

56

Programar el control DBLstLinea

Cuando el usuario selecciona una línea se deben cargar los artículoscorrespondientes en el control DBGrdArticulo.

Private Sub DBLstLinea_Click() If rsArticulo.State = adStateOpen Then rsArticulo.Close End If With rsArticulo .ActiveConnection = cn .CursorLocation = adUseClient .CursorType = adOpenStatic .Open "Select * From v_rep_articulo " & _ "Where Linea = '" & Trim(DBLstLinea.BoundText) & "'" End With Set DBGrdArticulo.DataSource = rsArticuloEnd Sub

☺ Este y los otros programas los puede bajar de www.LibrosDigitales.NET.

Page 57: Visual Basic y SQL Server

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

57

Próxima Entrega

Edición 1.1Dentro de una semana

Prohibida la reproducción total o parcialSin nuestro consentimiento

Derechos de copia reservadoswww.LibrosDigitales.NET


Recommended