Transcript

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

1

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Edicin 1.0Prohibida la reproduccin total o parcial Sin nuestro consentimiento Derechos de copia reservados www.LibrosDigitales.NET

2

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Presentacin del Caso a DesarrollarObjetivosEn este primer mdulo se desarrollaran los siguientes puntos: Presentacin del escenario de trabajo. Criterios para la estandarizacin de la base de datos. Modelo lgico y fsico de la base de datos. Creacin de tablas de la base de datos. Definir la integridad de la base de datos. Creacin del diagrama de la base de datos Cargar datos de muestra. Mecanismo de seguridad de SQL Server.

3

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Presentacin del escenario de trabajoComercial Lima S.A.C. es una empresa que se dedica a la comercializacin de diversos productos, donde la atencin 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 almacn si existe stock del pedido del cliente. Si no hay problema de stock, se procede a elaborar la boleta factura, y el documento pasa a caja. Si hay problema de stock, se realiza las correcciones respectivas 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 sus productos.

En estos momentos todo el procedimiento de atencin al cliente es manual por lo que se tienen los siguientes problemas: Atencin lenta. No se tiene un control de stock adecuado, por lo tanto nunca se sabe cuanto es el stock real de cada artculo. Control de ingresos manual, por lo que el cierre de caja lleva muchas horas. La elaboracin de informes para el gerente es lenta ya que todo tipo de resumen del da es manual. No existe ningn tipo de estadstica para la toma de decisiones futuras.

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

J Se adjunta al libro el modelo de datos en Erwin

4

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Reglas de NegocioLas reglas de negocio son el conjunto de condicin que la empresa establece para realizar sus transacciones con sus clientes. Para este caso las condiciones son mnimas y se enumeran a continuacin: 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 artculo se aplica un descuento que se define para cada artculo.

5

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Criterios para estandarizar la base de datosDebemos tener en cuenta que cuando realizamos el modelo de una base de datos cumpla con un mnimo de objetivos bsicos, que los explico a continuacin: Debe almacenar toda la informacin de la actividad de la empresa para la cual esta diseada. No debe guardar informacin redundante. Hay casos en los que es necesario para facilitar otras operaciones, pero debe ser bien analizado. Debe ser de fcil mantenimiento. Las inserciones, actualizaciones y eliminaciones no deben ser complejas desde el punto de vista de la programacin. Debe ser de fcil consulta. Si deseamos obtener cierta informacin debe ser en base a una consulta sencilla, o en todo caso las operaciones a realizar no deben ser complejas, en algunos casos no se puede evitar la complejidad, pero hay que tratar de minimizarla.

Generalmente el desarrollo del un sistema recae sobre un equipo, cuando hablamos sobre estandarizacin de la base de datos, nos referimos al conjunto de criterios que asume el equipo de trabajo como normas para el desarrollo del sistema. Esto quiere decir que no todos los equipos de trabajo tienen los mismos estndares, 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 mismos criterios. Si alguien del equipo tiene que retirarse por alguna razn, cualquier otra persona del equipo puede reemplazarlo. Es fcil 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 Forneas deben tener el mismo nombre de la columna que corresponde a la clave primaria de la tabla con la que se relaciona. No usar espacios en blanco, letras acentuadas, la letra , ni subrayado al dar nombre a las tablas y columnas. Usar un prefijo para el nombre de las columnas cuando sea necesario. Por ejemplo 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 le asigna los siguientes nombre NomEmpresa y NomVendedor, tal como lo puede apreciar en el modelo fsico.

6

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Modelo Lgico y Fsico de la Base de DatosIntroduccinPara llegar a un modelo lgico de la base de datos es necesario antes realizar algunos pasos que por las caractersticas de este manual solo los mencionare. Recoger informacin 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 importante comentar que en muchas empresas se requiere de personal altamente calificado y con experiencia para realizar el anlisis, cuyos factores pueden ser: Tamao de la empresa. Volumen de informacin. Reglas de negocio bastante complejas, etc.

J

Informacin detallada sobre el correcto Diseo de Bases de Datos lo entrar en www.LibrosDigitales.NET

7

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Modelo LgicoA continuacin se muestra el modelo lgico que se ha diseo para nuestro caso, lo que se quiere con este modelo es que sea til y a la vez fcil de entender.

Figura 1.1 Modelo Lgico de la Base de Datos.

8

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Modelo FsicoLuego de tener el modelo lgico, debemos pasarlo al modelo fsico, donde definimos el nombre real de cada columna en la base de datos, con su respectivo tipo de dato y nulidad respectivamente. El modelo fsico se define para un tipo de motor de base de datos, en nuestro caso se trata de SQL Server, y el resultado es el siguiente:

Figura 1.2 Modelo Fsico de la Base de Datos. Para implementar este modelo utilizaremos tcnicas de scripting. La integridad de datos, si bien se puede definir en una herramienta de modelamiento de datos como ERwin, se definir ejecutando las sentencias del Lenguaje de Definicin de Datos (DDL) de SQL, desde la herramienta SQL Server Query Analyzer.

9

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Creacin de la Base de Datos1. Inicie SQL Server Enterprise Manager. 2. Conctese a su servidor de bases de datos (de ser necesario, registre previamente el servidor).

Figura 1.3 SQL Server Enterprise Manager.

10

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Creacin de la Base de Datos1. Haga clic sobre la carpeta Base de datos utilizando el botn secundario del ratn. 2. Del men contextual, ejecute Nueva base de datos. Aparece el dilogo Propiedades de la base de datos. 3. En el control Name de la ficha General, digite BDLima. 4. Todos los dems parmetros los dejaremos con sus valores por defecto, as que hacemos clic sobre el botn Aceptar.

Figura 1. 4 Creacin de la Base de Datos.

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

11

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Creacin de las TablasLa creacin de las tablas se har mediante la ejecucin de un script SQL que se encuentra en el archivo CreaTabla.sql. 1. En su aplicacin SQL Server Enterprise Manager, haga clic sobre el botn Herramientas que se encuentra en la barra de herramientas. 2. En el men desplegable, haga clic sobre Analizador de consultas SQL para cargar el Analizador de Consultas de SQL. 3. En el control desplegable de su barra de herramientas (Combo), seleccione la base de datos BDLima. 4. En el men Archivo, ejecute el comando Abrir. Aparece el dilogo Abrir archivo de consulta. 5. Ubique en la carpeta donde se encuentran los archivos y seleccione el archivo CreaTablas.sql. Luego, haga clic en el botn Abrir.

Figura 1. 5 Analizador de Consultas. 6. Este script crea todas las tablas definidas en el modelo fsico de la base de datos. Para ejecutarlo, en el men Consulta haga clic en el comando Ejecutar, o haga clic sobre el botn Ejecutar consulta de la barra de herramientas.

12

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Visualizacin de las tablas desde Enterprise Manager1. Conmute al Enterprise Manager. 2. Expanda la carpeta Base de datos. Luego expanda BDLima, 3. Haga clic con el botn secundarios del Mouse en Tablas y ejecute el comando actualizar. Tambin puede verificar las tablas que se han creado ejecutando la siguiente consulta:

use BDLima select * from sysobjects where type = 'u' GO

13

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Definicin de la integridad de datosLa integridad de datos se puede definir de manera grfica desde el Enterprise Manager. Sin embargo, utilizaremos el Analizador de consultas para familiarizarnos con las sentencias SQL del Lenguaje de Definicin de Datos.

Creacin de llaves primariasLa sintxis de la sentencia SQL que permite aadir una llave primaria a una tabla es la siguiente:

ALTER TABLE nombre_tabla ADD CONSTRAINT nombre_llave_primaria PRIMARY KEY ( columna(s)_llave_primaria )Donde: nombre_tabla es el identificador de la tabla a la que pertenece la llave primaria. nombre_llave_primaria es el nombre de la restriccin llave primaria, y adems el nombre del ndice asociado a la restriccin. columna(s)_llave_primaria son los nombres de la columna o columnas que se desean definir como la llave primaria de la tabla.

Para verificar la definicin de la restriccin puede utilizar el procedimiento almacenado del sistema sp_help entregndole como parmetro el nombre de la tabla.

SP_HELP nombre_tabla

14

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Definir las Claves Primarias del ModeloA continuacin pasaremos a describir las claves primarias de cada una de las tablas y los criterios que se han tenido en cuenta para su regla de formacin, usted debe completar escribiendo la instruccin SQL que permita crearla. El nombre de la clave primaria debe tener la siguiente regla de formacin pk_xxxxx, donde xxxxx es el nombre de la tabla.

J Obtenga informacin adicional en www.LibrosDigitales.NETDescripcin de cada tablaTabla: Linea Clave Primaria IdLinea Comentario Los artculos estn agrupados en lneas ( categoras), cada lnea representa una clase de artculo y esta identificada por un nmero correlativo. Esta columna es de tipo IDENTITY. Adems, cada lnea tiene un prefijo y su propio contador los cuales se utilizan para generar el cdigo de cada artculo. Por ejemplo la lnea que corresponde a licores su prefijo es LIC y los artculos tienen los siguientes cdigos LIC00001, LIC00002, LIC00003, etc. Tabla: Articulo Clave Primaria IdArticulo Comentario Para generar el cdigo del artculo es necesario tener en cuenta la lnea a la cual pertenece, para determinar el prefijo y el nmero correlativo que le corresponde. Por ejemplo si pertenece a la lnea de Granos su prefijo es GRA y los cdigos de los artculos serian GRA00001, GRA00002, GRA00003, etc. Tabla: Unidad Clave Primaria IdUnidad Comentario La unidad determina la unidad de comercializacin de cada artculo.

15

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Tabla: Empresa Clave Primaria IdEmpresa Comentario Para generar el cdigo de la empresa se utiliza la siguiente plantilla E#####, por ejemplo E00001, E00002, E00003, etc. El control del correlativo se lleva a cabo en la tabla Control. Tanto los clientes como proveedores estn registrados en esta tabla, esto por que un cliente de un artculo, puede ser proveedor de otro artculo diferente. Las columnas cliente y Proveedor determinan si es cliente, proveedor ambos. Tabla: Vendedor Clave Primaria IdVendedor Comentario Para generar el cdigo de un vendedor se utiliza la siguiente plantilla V#####, por ejemplo V00001, V00002, V00003, etc. El control del correlativo se lleva a cabo en la tabla Control. Tabla: TipoDoc Clave Primaria IdTipoDoc Comentario Esta tabla permite clasificar los documentos y controlar cada correlativo de los documentos de salida. Esta clave primaria es de tipo IDENTITY. El contenido de esta tabla inicialmente es: IdTipoDo DesTipoDoc c 1 Factura (Venta) Factura 2 (Compra) 3 Boleta (Venta) Accion Salida Ingreso Salida Serie 1 0 1 Contado r 18 0 1

La columna Accion, determina si el documento es de ingreso de salida, si el documento es de ingreso su nmero lo determina el proveedor, solamente se controla la serie y el nmero del documento cuando es de salida (Venta).

16

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server Tabla: Documento Clave Primaria IdDocumento Comentario Cada documento tiene un nmero correlativo que lo identifica, este correlativo es controlado en la tabla Control. Todos los documentos de compra y venta estn registrados en esta tabla, la columna IdTipoDoc determina la clase de documento y columna Numero guarda el nmero real del documento. Tabla: Detalle Clave Primaria IdDocumento, IdArticulo Comentario En este caso la clave primaria esta formada por dos columnas, y los valores de estas columnas se obtienen de las entidades Documento y Artculo. Esta clave primaria garantiza que en un documento no se repita un artculo. Tabla: Control Clave Primaria Parametro Comentario Esta clave primaria garantiza que no se repitan los parmetros. Los parmetros que tenemos en esta tabla y un ejemplo de los valores que pueda tener se muestran a continuacin: Parametro Documento Empresa IGV Vendedor Valor 1 11 18.0 12

Es importante mencionar que la tabla Control tiene cdigos disponibles. Que el parmetro Empresa tenga valor 11, significa que hay 10 empresas registradas, y si ingresamos una nueva su cdigo debe ser E00011 y el valor del parmetro se incrementara en uno, o sea su nuevo valor sera 12. El parmetro IGV es de solo lectura cuando se realiza una venta, su valor es estable en el tiempo y no depende de la empresa, sino del gobierno.

17

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Creacin de llaves forneasLa sentencia SQL para definir una restriccin llave fornea es la siguiente:

ALTER TABLE nombre_tabla_secundaria ADD CONSTRAINT nombre_llave_fornea FOREIGN KEY ( columna_llave_fornea ) REFERENCES nombre_tabla_primariaDonde: nombre_tabla_secundaria es el identificador de la tabla a la que pertenece la llave fornea. nombre_llave_fornea es el nombre de la restriccin llave fornea.. columna_llave_fornea es el nombre de la columna que se desea definir como la llave fornea de la tabla secundaria. nombre_tabla_primaria es el identificador de la tabla primaria con la que la llave fornea relaciona a la tabla secundaria. La tabla primaria debe tener definida como llave primaria la columna con el atributo comn con la tabla secundaria.

Para verificar la definicin de la restriccin puede utilizar el procedimiento almacenado del sistema sp_help.

18

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Definir las Claves Forneas del ModeloA continuacin usted debe construir la instruccin SQL para definir la clave fornea de cada una de las tabla. Tabla: Articulo Instruccin SQL

Tabla: Documento Instruccin SQL

Tabla: Detalle Instruccin SQL

19

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Creacin de un diagrama de base de datosSQL Server permite crear diagramas que muestran las relaciones de toda o parte de 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 botn secundario del mouse. 3. Del men contextual ejecute Nuevo diagrama de base de datos. Se carga el Asistente para Diagramas de Base de Datos. 4. Haga clic en el botn Siguiente. 5. En la lista Tablas disponibles, seleccione la tabla que desea mostrar en el diagrama, y haciendo clic en el botn Agregar, muvala a la lista Tablas que agregar al diagrama. 6. Repita el punto 5 con todas las tablas que desea mostrar en el diagrama. Para nuestro diagrama, seleccione todas las tablas. 7. Haga clic en el botn Siguiente. Luego, en el botn Finalizar. 8. Espere que SQL Server le responda que el diagrama ha sido generado. Luego, haga clic en el botn Aceptar. 9. Para finalizar, salve el diagrama como ModeloBDLima.

20

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Figura 1. 6 Esquema de la Base de Datos.

21

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Carga de los datos de muestraPara cargar datos de muestra se debe ejecutar la instruccin SQL INSERT, para nuestro caso se ha preparado un archivo llamado CargaDatos.SQL, lo que usted tiene que hacer, es simplemente cargarlo en el analizador de consultas y ejecutarlo.

Figura 1.7 Datos de Muestra.

Visualizacin del contenido de las tablasPara revisar el contenido de una tabla podemos utilizar el Enterprise Manager, la instruccin SQL SELECT en el Analizador de Consultas. Veamos un ejemplo:

use BDLima select * from articulo GO

22

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

El mecanismo de seguridad de SQL ServerEn esta parte, veremos cmo se maneja la seguridad en SQL Server, y qu es lo que determina lo que un usuario puede hacer en la base de datos a la que se conecta. Un usuario, para realizar labores efectivas sobre una base de datos, debe efectuar un esquema de seguridad de dos etapas: 1. La autenticacin, que define a travs de una cuenta de identificacin de usuario, si ste puede acceder a una base de datos de SQL Server, y 2. Los permisos de validacin, que determinan qu actividades puede realizar el usuario sobre la base de datos.

Modos de autenticacin SQL ServerAcerca de la autenticacin, SQL Server soporta dos mecanismos de seguridad: La autenticacin integrada con Windows NT, que permite que un usuario acceda a SQL Server utilizando su cuenta de usuario Windows NT, y La autenticacin SQL Server, que establece que el usuario debe tener una cuenta SQL Server, adicional a la cuenta Windows NT para poder acceder a SQL Server.

El mecanismo de seguridad SQL ServerPara 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 la autenticacin SQL Server. Se cuenta con un servidor Windows NT identificado como MiNTServer (ver Figura 1.8); ste tiene instalado el servidor de bases de datos SQL Server de nombre MiSQLServer. 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 de dichas cuentas acceder a determinados recursos del servidor Windows NT. Como los propietarios de estas cuentas NT acceden al servidor SQL utilizando el mecanismo de autenticacin SQL Server, necesitan contar con cuentas de identificacin para SQL Server (Login IDs). El administrador del servidor SQL ha creado para ellos los login IDs sergio y mila respectivamente. El login ID sergio le permite a la cuenta NT smatsukawa acceder a las bases de datos Ventas y Finanzas. El login ID mila otorga acceso a las bases de datos Personal y Finanzas a la cuenta NT lvillalba.

23

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Figura 1.8 Autentificacin de usuarios en SQL Server.

Los roles de bases de datosPara que una persona pueda realizar operaciones en una base de datos SQL debe estar registrada como usuario de la base de datos. Las operaciones que un usuario puede realizar sobre la base de datos estn determinadas por los permisos de validacin que se le han concedido. SQL Server ha concebido los roles de bases de datos como un mecanismo de administracin de la seguridad en una base de datos. Por ejemplo, el rol db_datareader establece que todos los usuarios que pertenecen a este rol solo pueden efectuar operaciones de lectura sobre la base de datos a la que pertenece el rol. Cada base de datos cuenta con su propio conjunto de roles de bases de datos. En el diagrama, tanto el login ID sergio, como el login ID mila tienen acceso a la base de datos Finanzas ya que ambos estn mapeados a los usuarios sergio y mila respectivamente, de dicha base de datos. Ambos pueden leer las tablas y vistas de la base de datos Finanzas porque los usuarios sergio y mila pertenecen al rol db_datareader. Adicionalmente, el usuario sergio puede modificar la data de la base de datos porque tambin pertenece al rol db_datawriter. Sin embargo, el administrador o el dueo de la base de datos podran determinar que, por ejemplo, el usuario sergio no pueda leer ni escribir sobre algunas tablas revocndole el permiso sobre dichas tablas. En otras palabras, lo que un usuario puede hacer en una base de datos est determinado por el rol o roles al que el usuario pertenece, y por los permisos especficos sobre los objetos de la base de datos. En el mismo diagrama de la Figura 1.8, el login ID mila est mapeado al usuario dbo (database owner - propietario de la base de datos) de la base de datos Personal. Por lo tanto, mila como propietaria de la base de datos no tiene ninguna restriccin sobre ella. Toda base de datos tiene su usuario dbo, el que pertenece de manera predeterminada al rol db_owner de dicha base de datos.

24

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Y, en el caso de la autenticacin integrada a Windows NT?En este caso, el usuario accede a una base de datos utilizando su cuenta de usuario NT 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 la que debe tener acceso.

En resumen Una cuenta de usuario NT otorga acceso a los recursos del servidor Windows NT. Un login ID de SQL Server permite acceder a una o mas bases de datos del servidor SQL.

Un usuario de base de datos especfica los roles a cumplir en la base de datos, y los permisos especficos sobre los objetos de la base de datos. Para que un login ID o una cuenta de usuario NT puedan ejecutar tareas en la base de datos deben tener mapeado un usuario de la base de datos.

25

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Acceso a DatosObjetivosEn este segundo mdulo desarrollaremos los siguientes puntos: OLE DB. ActiveX Data Object (ADO) Conexin con la Base de Datos. Ejecucin de Comandos. Manejo de Resultados.

26

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

OLE DBEs una arquitectura de base de datos que proporciona integracin universal de datos a travs de una red empresarial, desde un gran sistema a un equipo de escritorio, independientemente del tipo de datos. OLE DB es una estrategia de acceso a datos ms generalizada y ms eficaz que ODBC, debido a que permite el acceso a un mayor nmero de tipos de datos y est basada en el Modelo de objetos componentes (COM). OLE DB es una estratgica de programacin de sistemas de Microsoft para obtener acceso a los datos de una organizacin. OLE DB es una especificacin abierta diseada para desarrollar sobre el xito de ODBC proporcionando un estndar abierto 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 diseado para orgenes de datos relacionales y no relacionales, incluyendo las bases de datos ISAM/VSAM de los grandes sistemas y las bases de datos jerrquicas; almacenes de sistemas de archivos y correo electrnico; datos de texto, grficos y geogrficos, objetos de negocios personalizados, etc. OLE DB define una coleccin de interfaces de tipo COM que encapsulan varios servicios de los sistemas de administracin de bases de datos. Estas interfaces permiten la creacin de componentes de software que implementen dichos servicios. OLE DB tiene tres tipos de componentes: Proveedores de datos, receptores de datos y Componentes de servicio. La Figura 2.1 muestra un esquema de la arquitectura OLE DB.

Figura 2. 1 Arquitectura OLE DB.

27

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

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, que dispone de datos a los que otras aplicaciones pueden necesitar tener acceso. Dichos proveedores de datos exponen interfaces OLE DB a las que los componentes de servicio o los receptores de datos pueden tener acceso de forma directa. Existe tambin un proveedor de OLE DB para ODBC, dicho proveedor pone los datos ODBC a disposicin de los receptores de datos OLE DB.

Receptores de Datos (Data Consumers)Los receptores de datos son aplicaciones que utilizan los datos expuestos por los proveedores de datos. ADO es la interfaz de programacin para utilizar OLE DB. Cualquier aplicacin 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 transportan datos. Entre dichos componentes se incluyen los procesadores de consultas y los motores de cursores. La arquitectura OLE DB est separada en componentes, de modo que no es preciso que los proveedores de datos tengan la capacidad inherente de proporcionar datos de forma comprensible para ADO. Estos componentes de servicio otorgan a ADO la capacidad de recibir datos OLE DB de proveedores que no ofrecen control de conjuntos de resultados o interpretacin de consultas SQL de un modo intrnseco.

28

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

ActiveX Data Object (ADO)ADO se ha diseado como una interfaz a nivel de aplicacin, fcil de usar para cualquier proveedor de datos OLE DB, incluyendo bases de datos relacionales y no relacionales, sistemas de correo electrnico y de archivos, texto y grficos, y objetos empresariales personalizados, as como orgenes de datos ODBC existentes. Prcticamente todos los datos disponibles en la empresa estn disponibles mediante el uso de la tecnologa de acceso a datos de ADO. ADO es fcil de utilizar, independiente del lenguaje, utiliza un trfico de red mnimo y posee menos capas entre la aplicacin cliente y el origen de datos (de manera que proporciona un acceso a datos ligero y de alto rendimiento). Las caractersticas generales de ADO son: Fcil de utilizar. Alto rendimiento. Control de cursores mediante programacin. Tipos complejos de cursores, incluyendo cursores de proceso por lotes y cursores de cliente y servidor. Capacidad de devolver mltiples conjuntos de resultados desde una nica consulta. Ejecucin de consulta sncrona, asncrona o controlada por eventos. Objetos reutilizables y de propiedades modificables. Administracin avanzada de cach de recordsets. Flexibilidad: funciona con tecnologas existentes de base de datos y con todos los proveedores OLE DB. Excelente deteccin de errores.

La semntica sencilla de ADO y su aplicacin universal implica mnimo entrenamiento de los programadores, programacin rpida de aplicaciones y bajo costo de mantenimiento.

Modelo de Objetos ADOEl modelo de objetos de ADO define una coleccin de objetos programables que admiten el Modelo de Objeto Componente (COM) y Automatizacin OLE para aprovechar la tecnologa denominada OLE DB. El modelo de objetos de ADO (cuando se compara con otros objetos de acceso a datos como RDO o DAO) es ms plano (tiene menos objetos) y ms sencillo de utilizar. El modelo de objetos ADO consta de tres componentes principales: el objeto Connection, el objeto Command y el objeto RecordSet, En la Figura 2.2 puede apreciar la relacin que existe entre los objetos ADO.

29

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Figura 2.2 Modelo de Objetos ADO. El modelo de objetos ADO se diferencia del los modelos de objetos RDO y DAO en que muchos de los objetos se pueden crear independientemente unos de otros. Por ejemplo, puede crear un objeto RecordSet sin crear primero de forma explicita un objeto Connection. ADO crea implcitamente el objeto Connection necesario. En el modelo de objetos de ADO hay siete objetos, como se describe a continuacin: Objeto: Connection Mantiene informacin de conexin, el tipo de cursor, la cadena de conexin, el tiempo de espera de la consulta, el tiempo de espera de la conexin y la base de datos. Objeto: Command Mantiene informacin acerca de un comando, como una cadena de consulta, definiciones de parmetro, etctera. El objeto Command es til cuando desee definir parmetros de consultas ejecutar procedimientos almacenados que devuelva parmetros de resultados. Los objetos Command admiten varias propiedades para describir el tipo y el propsito de la consulta y para ayudar a ADO a optimizar la operacin. 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 que abrir de forma explcita un objeto Connection. Sin embargo, si crea un objeto Connection en primer lugar, puede abrir mltiples objetos Recordset en la misma conexin.

30

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server Objeto: Error Contiene informacin ampliada acerca de condiciones de error producida por el proveedor de datos. Como una nica instruccin puede generar dos o ms errores, la coleccin Errors puede contener ms de un objeto Error al mismo tiempo. Objeto: Field Contiene informacin acerca de una nica columna de datos de un recordset. El objeto Recordset utiliza la coleccin Fields para que contenga a todos sus objetos Field. Esta informacin de Field incluye el tipo de datos, la precisin y la escala numrica. Objeto: Parameter Es un parmetro individual asociado a un objeto Command. El objeto Command utiliza la coleccin Parameters para que contenga a todos sus objetos Parameter. Los objetos Parameter de ADO se pueden generar automticamente enviando consultas a la base de datos. Sin embargo, tambin puede generar esta coleccin mediante programacin para mejorar el rendimiento en tiempo de ejecucin. Objeto Property Una caracterstica definida por el proveedor de un objeto ADO. Los objetos ADO tienen dos tipos de caractersticas: integradas y dinmicas. Las propiedades integradas son las que estn implementadas en ADO y se encuentran disponibles para cualquier objeto nuevo de ADO. Las propiedades dinmicas estn definidas por el proveedor de datos subyacente y aparecen en la coleccin Properties para el objeto de ADO apropiado. Por ejemplo, una propiedad puede indicar si un objeto Recordset admite transacciones o actualizaciones. sta es una de las principales caractersticas de ADO, que permite al proveedor de servicios de ADO presentar interfaces especiales.

31

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Colecciones ADOLos objetos ADO se agrupan en colecciones, como se puede apreciar en la Figura 2.3.

Figura 2.3 Colecciones ADO. Errors La coleccin Errors contiene todos los objetos Error creados en respuesta a un nico fallo relacionado con el proveedor. Parameters La coleccin Parameters contiene todos los objetos Parameter de un objeto Command. Fields La coleccin Fields contiene todos los objetos Field de un objeto Recordset. Properties La coleccin Properties contiene todos los objetos Property de una instancia especfica de un objeto.

32

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Cargar la Librera de Objetos ADOPara poder usar los objetos ADO en un proyecto de Visual Basic es necesario en primer lugar cargar la librera correspondiente, para lo cual debe seguir los siguientes pasos: 1. Inicie Visual Basic con un proyecto de tipo Estndar. 2. Del men Proyecto ejecute el comando Referencias. 3. En el dilogo Referencias, seleccione la opcin Microsoft Actives Data Object 2.0, (Como se muestra en la Figura 2.4) y luego haga clic en el botn Aceptar.

Figura 2.4 Librera de Objetos ADO. Ahora esta en condiciones de utilizar los objetos ADO en su proyecto.

33

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Conexin con una Base de DatosA continuacin tenemos un ejemplo tpico para la conexin con una base de datos SQL Server.

Option Explicit Public 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 "Conexin Conforme" MDIPrincipal.Show Exit Sub TrataError: Beep For Each adoErr In cn.Errors MsgBox adoErr.Description Next End Sub

Se asume que la variable pblica ser utilizada para que los otros objetos accedan a la base de datos.

34

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Ejecucin de Instrucciones Transact-SQLEl objeto Connection permite ejecutar instrucciones Transact-SQL, como se ilustra a continuacin. Para una instruccin que no retorna resultados

Conecction.Execute CommandText, RecordsAffected, Options

Para una instruccin 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, adCmdText If Rows = 1 Then MsgBox Proceso ejecutado correctamente End If

Actualizar el stock de un artculo

CmdSQL = Update Articulo & _ Set Stock = 1200 & _ Where IdArticulo = LIC00001 Cn.Execute cmdSQL, Rows, adCmdText If Rows = 1 Then MsgBox Proceso ejecutado correctamente End If

35

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server Crear un ResordSet

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

36

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Objeto CommandEl objeto Command tambin permite ejecutar instrucciones Transact-SQL, la ventaja es que permite crear parmetros y pueden ser reutilizados. Creacin de un objeto Command (Caso 1)

Dim cmd as New ADODB.Command

Creacin de un objeto Command (Caso 2)

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

Establecer las propiedades del objetos Command

cmd.ActiveConnection = cn cmd.CommandText = InstruccinTransactSQL cmd.CommandType = TipoDeComando

Crear un Parmetro

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

Acceso a un Parmetro

cmd.Parameters(NombreDelParametro).Value

Ejecutar el comando que no retorna filas

cmd.Execute RecordsAffected, Parameters, Options

37

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server Ejecutar un comando que retorna un conjunto de resultado

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

38

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

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.RecordSet Set rs = New ADODB.RecordSet

Establecer las principales propiedades del RecordSet

Rs.ActiveConnection = cn Rs.Source = InstruccinTransactSQL Rs.CursorType = TipoDeCursor Rs.CursorLocation = UbicacinDelCursor Rs.LockType = TipoDeBloqueo

Abrir el RecordSet

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

Verificar el estado de un RecordSet

Select Case rs.State Case adStateClosed MsgBox Esta Cerrado Case adStateOpen MsgBox Esta Abierto Case adStateConnecting MsgBox Esta conectndose Case adStateExecuting MsgBox Esta Ejecutando un Comando Case adStateFetching MsgBox Esta Cargando filas End Select

39

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server Acceso a los campos de un RecordSet

Rs!NombreDelCampo

Enlazar un campo con un control, por ejemplo TextBox

Set Text1.DataSource = rs Text1.DataField = NombreDelCampo

Desplazarnos por las filas de un RecordSet

Rs.MoveFirst Rs.MovePrevious Rs.MoveNext Rs.MoveLast

Primera fila Fila anterior Fila Siguiente Ultima Fila

Cuando nos desplazamos por encima del primer registros, la propiedad BOF toma valor TRUE, y si nos desplazamos ms haya del ltimo registro la propiedad EOF toma valor TRUE. Verificar el estado de edicin de un RecordSet

Select Case rs.EditMode Case adEditNone MsgBox No Esta en Edicin Case adEditProgress MsgBox El registro actual esta en edicin 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

40

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server Grabar los cambios realizados

Rs.Update

Cancelar los cambios

Rs.CancelUpdate

Eliminar el registro actual

Rs.Delete

Cerrar un RecordSet

Rs.Close Set rs = Nothing

Manejo del puntero de registroEl RecordSet tiene una propiedad llamada BookMark que es un puntero al registro actual, si deseamos guardar este valor en una variable, esta variable debe ser de tipo Variant. Esta propiedad es de lectura y escritura es tiempo de ejecucin.

41

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Objetos del ServidorObjetivosEn este tercer modulo desarrollaremos los siguientes puntos: Creacin de procedimientos almacenados. Uso de parmetros de entrada y salida en un procedimiento almacenado. Uso de valor de retorno de un procedimiento almacenado. Creacin de vistas. Criterios para el uso de vistas.

42

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

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

Ventajas de los procedimientos almacenados La lgica de la aplicacin puede ser compartida con otras aplicaciones. Los procedimientos almacenados pueden encapsular la lgica de negocios en una sola ubicacin, y estar disponible para muchas aplicaciones. Proporciona un mecanismo de seguridad. Se puede otorgar a un usuario permiso para ejecutar un procedimiento almacenado aun cuando no tenga permiso para acceder a las tablas referenciadas por el procedimiento almacenado. Mejora el rendimiento del sistema y reduce el trfico en la red. El uso de lgica condicional determina qu sentencias se ejecutarn y cules no.

Creacin de procedimientos almacenadosProcedimiento que no recibe ni devuelve parmetros

CREATE PROCEDURE nombre_procedimiento AS instruccin_sql

Procedimiento que recibe parmetros

CREATE PROCEDURE nombre_procedimiento @parmetro1 tipo_dato [ = valor ] , @parmetro2 tipo_dato [ = valor ] , ... AS instruccin_sql

Procedimiento que recibe y entrega parmetros

CREATE PROCEDURE nombre_procedimiento @parmetro1 tipo_dato [ = valor ] , @parmetro2 tipo_dato [ = valor ] OUTPUT , ... AS instruccin_sql

43

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Un procedimiento almacenado puede hacer referencia a tablas, vistas y otros procedimientos almacenados, as como a tablas temporales. Estas ltimas solo existen mientras el procedimiento se est ejecutando. La sentencia CREATE PROCEDURE no se puede combinar con otras sentencias SQL 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 los siguientes roles: sysadmin, db_owner, o db_ddladmin, o debe tener el permiso para crear procedimientos.

Obtencin de la definicin de un procedimiento almacenadoTabla sistema sysobjects sysdepends del Almacena Nombre del procedimiento almacenado Nombre de los objetos dependientes del procedimiento almacenado Sentencia que defini el procedimiento almacenado Procedimiento sp_help [ nombre_procedimiento ] sp_depends nombre_procedimiento sp_helptext nombre_procedimiento

syscomments

44

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Modificacin de un procedimiento almacenadoPara modificar un procedimiento almacenado conservando su asignacin de permisos, ejecute la sentencia ALTER PROCEDURE. La definicin previa del procedimiento ser reemplazada por la definicin establecida en ALTER PROCEDURE.

ALTER PROCEDURE nombre_procedimiento [ @parmetro1 tipo_dato [ = valor ] , @parmetro2 tipo_dato [ = valor ] OUTPUT , ... ] AS instruccin_sql

Eliminacin de un procedimiento almacenadoDROP PROCEDURE nombre_procedimiento

Ejecucin de un procedimiento almacenadoProcedimiento que no recibe ni devuelve parmetros

CREATE PROCEDURE nombre_procedimiento AS instruccin_sql EXECUTE nombre_procedimiento

Procedimiento que recibe parmetros

CREATE PROCEDURE nombre_procedimiento @parmetro1 tipo_dato [ = valor ] , @parmetro2 tipo_dato [ = valor ] , ... AS instruccin_sql EXECUTE nombre_procedimiento parmetro1 , parmetro2 , ...

45

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server Procedimiento que recibe y entrega parmetros

CREATE PROCEDURE nombre_procedimiento @parmetro1 tipo_dato [ = valor ] , @parmetro2 tipo_dato [ = valor ] OUTPUT , ... AS instruccin_sql EXECUTE nombre_procedimiento @var_salida OUTPUT , ... parmetro1 ,

J En www.LibrosDigitales.NET, encontrar manuales sobre ste tema.

46

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Estado de un procedimiento almacenadoUn procedimiento almacenado tiene un valor de estado, denominado cdigo de retorno, para indicar el estado de su ejecucin. Se especifica el cdigo de retorno para un procedimiento mediante la instruccin RETURN. Al igual que con los parmetros OUTPUT, debe guardar el cdigo de retorno en una variable cuando se ejecute el procedimiento almacenado para utilizar su valor en el programa que realiza la llamada. Por ejemplo, la variable @result del tipo int se utiliza para almacenar el cdigo de retorno del procedimiento almacenado mi_procedimiento:

DECLARE @result int EXECUTE @result = mi_procedimientoLos cdigos de retorno suelen utilizarse en los bloques de control de flujo dentro de los procedimientos almacenados con el fin de establecer el valor del cdigo de retorno para cada situacin de error posible. Puede utilizar la variable @@ERROR despus de una instruccin Transact-SQL para detectar si se ha producido un error durante la ejecucin de la instruccin. Ejemplo Ilustrativo Procedimiento Ejemplo

CREATE PROCEDURE usp_ejemplo @valor1 smallint, @valor2 smallint, @resultado smallint OUTPUT AS If @valor1 is null or @valor2 is null return -1 SET @resultado = @valor1 * @valor2 return 0 GO

Prueba 01

Declare @Ret Int, @Prod SmallInt Exec @Ret = usp_ejemplo 56, 80, @Prod OutPut Select 'Cdigo de Estado' = @Ret, Producto = @Prod Go'El resultado es ' , @salida GO

47

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server El resultado de esta prueba es: Cdigo de Estado Producto ---------------- -------0 4480

(1 filas afectadas)

Prueba 02

Declare @Ret Int, @Prod SmallInt Exec @Ret = usp_ejemplo Null, 80, @Prod OutPut Select 'Cdigo de Estado' = @Ret, Producto = @Prod Go

El resultado de esta prueba es: Cdigo de Estado Producto ---------------- --------1 NULL

(1 filas afectadas)

48

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Ejecutar un procedimiento desde Visual BasicPara ejecutar un procedimiento almacenado debemos utilizar un objeto Command, y si el procedimiento tiene parmetros debemos agregarle objetos de tipo Parameter al objeto Command; uno por cada parmetro del procedimiento.

Ejemplo IlustrativoComo ejemplo ilustrativo crearemos un formulario que permita ejecutar el procedimiento usp_ejemplo. Formulario Utilizado El formulario que utilizaremos es el que se muestra en la siguiente figura:

El nombre de los controles es: Control TxtN1 TxtN2 TxtProd CmdCalcular CmdLimpiar CmdCerrar Descripcin Cuadro de texto para ingresar el primer nmero. Cuadro de texto para ingresar el segundo nmero. Cuadro de texto para el resultado. Botn de comando que ejecuta el procedimiento almacenado. Botn de comando que limpia los controles. Botn de comando que cierra el procedimiento.

49

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server Ejecucin del Procedimiento Almacenado El procedimiento almacenado es ejecutado cuando el usuario hace clic en el botn calcular, el script de este botn 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 parmetros 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 Ejecucin 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 Sub TrataError: MsgBox Err.Description, vbOKOnly + vbCritical, "Error" End Sub

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

50

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

VistasEs un objeto que almacena una consulta predefinida y que proporciona un modo alternativo de visualizacin de datos sin tener que redefinir la consulta.

CREATE VIEW v_Con_Empresa(IdEmpresa,NomEmpresa,Direccion,RUC, Telefono,Contacto,Cliente,Proveedor) AS SELECT IdEmpresa,NomEmpresa,DirEmpresa,RUC,TelEmpresa,Contacto, CASE Cliente WHEN 1 THEN 'Si' WHEN 0 THEN 'No' ELSE '' END, CASE Proveedor WHEN 1 THEN 'Si' WHEN 0 THEN 'No' ELSE '' END FROM Empresa GO

Para ejecutar la vista:

SELECT * FROM v_con_EmpresaUna vista puede incluir: Un subconjunto de filas o columnas de una tabla La unin de dos o mas tablas Un join de dos o mas tablas Un resumen estadstico de una o mas tablas Un subconjunto de otra vista, o combinacin de vistas y tablas.

Ventajas de las vistas El usuario accede a la data importante o apropiada para l. Limita el acceso a datos sensibles. Oculta la complejidad del modelo de datos. Un join de mltiples tablas se convierte en un simple SELECT para el usuario. Desde el punto de vista del usuario, una vista es una "tabla" pues puede ejecutar en ella todas las operaciones de datos: SELECT, INSERT, UPDATE y DELETE.

51

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Creacin de vistas

CREATE VIEW nombre_vista [ ( lista_columnas ) ] [ WITH ENCRYPTION ] AS instruccin_select [ WITH CHECK OPTION ]Las siguientes restricciones se aplican a la creacin de vistas: No se puede definir una vista con ORDER BY, COMPUTE, COMPUTE BY o SELECT INTO. 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) AS SELECT L.DesLinea, A.IdArticulo, A.DesArticulo, U.DesUnidad, A.Stock, A.PreCosto, A.Dscto, A.PreVenta FROM Linea L INNER JOIN Articulo A ON L.IdLinea = A.IdLinea INNER JOIN Unidad U ON A.IdUnidad = U.IdUnidad GO

Crea una vista de nombre v_rep_Articulo en la que se combina datos de las tablas Linea, Articulo y Unidad. El resultado de esta vista podra utilizarse en una consulta o un reporte.

Obtencin de la definicin de una vistaTabla sistema sysobjects sysdepends syscomments syscolumns de Almacena Nombre de la vista Nombre de los objetos dependientes de la vista Sentencia que defini la vista Columnas definidas en la vista Procedimiento sp_help [ nombre_vista ] sp_depends nombre_vista sp_helptext nombre_vista sp_columns nombre_vista

52

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Modificacin de la definicin de una vistaALTER VIEW nombre_vista AS nueva_sentencia_select

Eliminacin de una vistaDROP VIEW nombre_vista

Ocultando la definicin de una vistaEjecute CREATE VIEW con la opcin WITH ENCRYPTION.

Modificacin de datos a travs de vistasDesde el punto de vista del usuario, una vista es una "tabla" ya que l puede ejecutar sobre la vista las sentencias SELECT, INSERT, UPDATE y DELETE. Estas sentencias ejecutadas sobre la vista afectan a las tablas dependientes de ella. Deben tenerse en cuenta las siguientes consideraciones al momento de crear las vistas: La modificacin no puede afectar a ms 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 travs de ellas. Las columnas no nulas que no son referenciadas en la vista pueden producir errores cuando se ejecuta una modificacin a travs de la vista. Si el SELECT asociado a la vista ha sido definido con una clusula WHERE, el uso de la opcin WITH CHECK OPTION al momento de crear la vista har que las modificaciones que se hagan a travs de ella respeten el criterio del WHERE.

53

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Ejecutar una Vista desde Visual BasicDesde una aplicacin cliente veremos una vista como si fuera una tabla, por lo tanto debemos invocarla en una instruccin SELECT, como se hace con cualquier otra tabla.

Ejemplo IlustrativoEn este ejemplo tenemos un control DataList con un listado de las lneas, donde el usuario al seleccionar una de ellas se muestra sus respectivos artculos en un control DataGrid, como se muestra en el siguiente grfico:

El nombre de los controles es: Control DBLstLinea Descripcin Control DataList donde se muestra todas las lneas que se encuentran grabadas en la tabla Linea. DBGrdProducto Control DataGrid donde se muestra los artculos de la lnea seleccionada en el control DataList.

54

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server Variables del Formulario

Option Explicit Private rsLinea As New ADODB.Recordset Private 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

J Es importante sus opiniones y sugerencias para mejorar el contenido y poder remitirles la siguienteentrega, hgalo en www.LibrosDigitales.NET.

55

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server Programar el control DBLstLinea Cuando el usuario selecciona una lnea correspondientes en el control DBGrdArticulo. se deben cargar los artculos

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 = rsArticulo End Sub

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

56

Aplicaciones Cliente-Servidor con Visual Basic y SQL Server

Edicin 1.1Dentro de una semanaProhibida la reproduccin total o parcial Sin nuestro consentimiento Derechos de copia reservados www.LibrosDigitales.NET

Prxima Entrega

57


Top Related