Visual Basic y SQL Server
Visual Basic y SQL Server
Edicin 1.0
Prohibida la reproduccin total o parcial Sin nuestro consentimiento Derechos de copia reservados www.LibrosDigitales.NET
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.
Reglas de Negocio
Las 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.
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.
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.
Modelo Lgico
A 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.
Modelo Fsico
Luego 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.
10
11
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
13
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
15
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
ALTER TABLE nombre_tabla_secundaria ADD CONSTRAINT nombre_llave_fornea FOREIGN KEY ( columna_llave_fornea ) REFERENCES nombre_tabla_primaria
Donde: 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
19
20
21
22
23
24
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
Acceso a Datos
Objetivos
En 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
OLE DB
Es 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.
27
28
La semntica sencilla de ADO y su aplicacin universal implica mnimo entrenamiento de los programadores, programacin rpida de aplicaciones y bajo costo de mantenimiento.
29
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
Colecciones ADO
Los 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
Figura 2.4 Librera de Objetos ADO. Ahora esta en condiciones de utilizar los objetos ADO en su proyecto.
33
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
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
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
Dim rs As ADODB.Recordset Dim cmdSQL As String cmdSQL = "Select * From Linea" Set rs = cn.Execute(cmdSQL) Set dbDatLinea.DataSource = rs
36
Objeto Command
El 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)
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
37
Aplicaciones Cliente-Servidor con Visual Basic y SQL Server Ejecutar un comando que retorna un conjunto de resultado
38
Manejo de Resultados
Para el manejo de un conjunto de resultados debemos usar el objeto RecordSet, Crear un objeto RecordSet (Caso 1)
Abrir el 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
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
Rs.AddNew
40
Aplicaciones Cliente-Servidor con Visual Basic y SQL Server Grabar los cambios realizados
Rs.Update
Rs.CancelUpdate
Rs.Delete
Cerrar un RecordSet
41
42
Procedimientos almacenados
Un procedimiento almacenado es un objeto que se almacena en la base de datos, y que ejecuta una serie de instrucciones SQL cuando es invocado.
CREATE PROCEDURE nombre_procedimiento @parmetro1 tipo_dato [ = valor ] , @parmetro2 tipo_dato [ = valor ] , ... AS instruccin_sql
CREATE PROCEDURE nombre_procedimiento @parmetro1 tipo_dato [ = valor ] , @parmetro2 tipo_dato [ = valor ] OUTPUT , ... AS instruccin_sql
43
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.
syscomments
44
ALTER PROCEDURE nombre_procedimiento [ @parmetro1 tipo_dato [ = valor ] , @parmetro2 tipo_dato [ = valor ] OUTPUT , ... ] AS instruccin_sql
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 ,
46
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
Ejemplo Ilustrativo
Como 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
50
Vistas
Es 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
51
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.
52
53
Ejemplo Ilustrativo
En 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
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 siguiente
entrega, 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
56
Edicin 1.1
Dentro de una semana
Prohibida la reproduccin total o parcial Sin nuestro consentimiento Derechos de copia reservados www.LibrosDigitales.NET
Prxima Entrega
57