Upload
oscarin696
View
28
Download
5
Embed Size (px)
DESCRIPTION
Manual Visual
Citation preview
1
IntroducciónIntroducción
oy en día SQL Server en sus
diversas versiones, es el motor de
base de datos más conocido,
donde millones de personas
utilizan, cuenta además con
muchas herramientas que
permiten su uso más fácil, y de mejor manejo y
control.
HHEn la actualidad todas las Empresas son
capaces de gestionar los mismos datos en unos
minutos que lo que antes gestionaban durante días, meses, años, etc.
Conforme ah ido evolucionando las características de hardware y software, la empresa puede cubrir la
necesidad del control de información de gran valor para el desarrollo y crecimiento de la misma de un
modo sencillo y rentable y todo ello dependiendo del resultado que obtienen.
El propio sistema de control de datos ha ido mejorando, desde las primeras aplicaciones que
gestionaban su propia información alojándolas en unidades de almacenamiento externas (discos duros,
disquetes, cintas...) con el problema de que sólo esa aplicación era capaz de interpretar y utilizar esa
información. Más adelante comenzaron a imponerse unos sistemas de almacenamiento estándar que
facilitaba la tarea de compartir esa información entre diferentes aplicaciones.
Finalmente aparecen los servidores de bases de datos, herramientas cuya única y principal función era
la administración de información. Todo esto Mediante diferentes protocolos de comunicación las
diferentes aplicaciones pueden enlazarse con estos servidores, ordenar las tareas que necesiten para
que el servidor se encargue de operar esas tareas y devolver los resultados deseados. Podemos tener
nuestra herramienta de administración de datos en un ordenar (Servidor) y que el resto de ordenadores
(Clientes) se conecten a este servidor mediante sus aplicaciones para trabajar con estos datos, esta
estructura Servidor/Cliente es la que se ha terminado de imponer pudiendo distinguir claramente tres
niveles o capas de trabajo:
2
SESIÓN I
Explorador de Servidores
CONTENIDO
Agregar Conexiones
Objetos de Acceso a Datos
Acceso:
o Manual
o Asistente
o Forma Directa
Conexión a otros tipos de Base de Datos
LABORATORIO
3
EXPLORADOR DE SERVIDORESEXPLORADOR DE SERVIDORES
Una de las herramientas importantes que posee Visual Studio 2005 es el Explorador de
Servidores, el cual va a permitir conectarse a distintos servidores que se tengan disponible,
para de esa manera acceder y manipular la información de las Bases de Datos y poderla
utilizar en el desarrollo de alguna aplicación de Visual Studio.
Para poder Acceder a esta herramienta tenemos:
1. Clic en : VER – Explorador de Servidores
2. CTRL + ALT + S
Cualquiera de las dos formas nos mostrara la
siguiente ventana:
4
Esta ventana nos va a permitir configurar a que servidores vamos a conectarnos para un mejor
manejo y control de nuestra información.
CONEXIONESCONEXIONES
Una vez que se tenga abierto el Servidor de Exploradores, debemos proceder de la siguiente
manera:
1. Clic derecho sobre Conexión de Base
de Datos.
2. Clic en Agregar Nueva Conexión.
3. Se mostrara la siguiente ventana, en
donde se deberá llenar de la siguiente
manera :
a. Escribir (Local)
b. Clic en Autenticación de SQL
Server
c. Escribir : SA
d. Seleccionar el Nombre de la Base
de Datos en este caso HOSPITAL
5
4. Mostrando dentro de la ventana de Servidores, el nombre de la Base de Datos
seleccionada:
5. Ahora si hacemos clic en el signo mas del Enlace
creado podremos visualizar los componentes que ahí
existen, por ejemplo las tablas, vistas, procedimientos
almacenados, vistas, funciones, etc.
OBJETO DE ACCESO A DATOSOBJETO DE ACCESO A DATOS
Una de las ventanas de acceso a la información en la que podemos construir aplicaciones de
acceso a datos con solo arrastrar los objetos al formulario.
Los objetos para manejar base de datos se encontraran en la Ficha de Datos del cuadro de
herramientas, existen varias formas para desarrollar que accedan a los datos.
Algunas veces los controles que ahí se muestran, muchas veces no se encuentran, para ello,
debemos agregar nuevos componentes, y debemos seguir lo siguiente:
o Clic derecho en la Ficha Datos.
o Del menú contextual, hacemos clic en Elegir
Elementos.
6
o Esperamos unos minutos
o Se mostrara la siguiente ventana:
Debemos hacer clic en los controles de conexión que necesitamos, y luego clic en Aceptar,
agregándose los controles que necesitamos para manejar los controles.
Objeto encargado de la conexión a una Base de Datos SQL Server
versión 7.0 o superior.
Este Objeto esta encargado de conectarse a una Base de Datos
diferente a SQL, como por ejemplo de Microsoft Access. Se puede
conectar a SQL pero una versión inferior 7.0
Este objeto cumple la misma función que el objeto
SQLDataAdapter, pero se utiliza cuando nos hemos conectado a
una Base de Datos utilizando OleDbConnection.
7
Usado para almacenar el comando con el requerimiento para la
conexión establecida. Este comando es una instrucción SQL que
depende del requerimiento
deseado y puede ser: SELECT, UPDATE, INSERT o DELETE.
Cumple la misma función que el objeto SQLCommand, pero es usado
junto con los objetos OLEDBconnection y OLEDBDataAdapter.
Este objeto se encarga de presentar la información almacenada en el
objeto DataSet de distintas formas para el usuario final.
Objeto que se encarga de recibir el conjunto de datos que devuelve
la conexión a través de objetos DataAapter, según el comando
establecido en el objecto Command.
Objeto encargado de mostrarnos la información de una determinada
Tabla de una base de datos, esta información lo recibe de un objeto
DataSet.
8
ACCESO A DATOS MANUALMENTEACCESO A DATOS MANUALMENTE
Para acceder a los datos en forma manual se deben colocar los objetos en forma ordenada en
el formulario e ir asignándole valores sus propiedades según corresponda.
Para comenzar, primero se debe crear una aplicación en blanco, al cual debemos agregar un
SqlConnection, de la siguiente forma:
Seleccionamos el objeto SQLConnection1 y abrimos la ventana de propiedades
Buscamos en la ventana propiedades, ConnectionString
Dentro de el vamos a ver, las conexiones que se han creado con el Explorador de
Servidores.
La ventana como debe mostrarse es de la siguiente manera:
9
Si no hay conexión podemos seleccionar <Nueva Conexión ….>
El cual nos guiara de manera similar que el Explorador de Servidores para conectarnos
Ahora para ver si nuestra conexión ah sido realizada correctamente debemos, agregar a
nuestro formulario un DataGridView.
En la parte superior derecha hay un icono de una punta de flecha a la cual le hacemos
clic.
Mostrándose una ventana de conexión, tal como se muestra en el grafico:
De esa ventana, hacemos clic en Agregar Origen de Datos del Proyecto.
Este mostrara el Asistente para la Configuración de Origen de Datos.
Seleccionamos Base de Datos.
Hacemos clic en Siguiente.
10
Este nos llevara a otra ventana donde, podemos escoger la conexión ya establecida en el
Servidor o podemos seleccionar una nueva, llevándonos a las ventanas ya vistas anteriormente.
En nuestro caso como ya tenemos la conexión solo, seleccionamos la ya existente Hospital, de
la siguiente manera :
Algunas veces necesitamos visualizar la Conexión para ello hacemos clic en el signo (+) de
Cadena de Conexión.
Hacemos clic en Siguiente y nos mostrara el lugar donde se almacenara la conexión,
sugiriéndonos un nombre: HospitalConnectionString.
Clic en siguiente, donde nos mostrara los objetos de la Base de Datos que vamos a utilizar,
mostrándonos la siguiente ventana:
11
Hacemos Clic en el signo mas de Tablas y se
mostrara las tablas que conforman la Base de Datos
Hospital, visualizando todas sus características, para
poder seleccionar una o mas tablas debemos activar
los checks respectivamente, tal como se muestran en el
grafico:
Para terminar haga clic en
Finalizar.
Quedando la ventana de la
siguiente forma.
Para mostrar los datos
presionamos F5.
12
ACCEDER CON EL ASISTENTEACCEDER CON EL ASISTENTE
En este ejemplo se indicara como debemos crear un programa donde nos mostrara a la tabla
Empleados de la base de datos SQL, llamada NorthWind.
Para ello debemos sacar del Control datos al SQLDataAdapter.
Arrastrarlo a nuestro formulario. Al realizar esta acción se mostrara la siguiente ventana:
Hacemos clic en Nueva Conexión.
Esta permitirá realizar una nueva Conexión
hacia la
Damos clic en Aceptar.
Mostrándonos la ventana anterior con la nueva
conexión.
Hacemos clic en Siguiente:
Una ventana que nos solicitara si deseamos
usar una Instrucción SQL, crear un
procedimiento almacenado o utilizar un
procedimiento ya existente, de la siguiente
manera :
13
Seleccionamos la primera opción (Usar Instrucción SQL).
Tenemos dos opciones:
o Escribir la Sentencia SQL
o Hacer clic en Generador de Consultas para abrir otra ventana que nos permitirá escoger
las tablas a trabajar.
Si hacemos clic en Generador de Consultas se mostrara la siguiente Ventana:
14
Podemos colocar la Sentencia
De donde podremos seleccionar la tabla(s) y colocar los criterios de condición para el
funcionamiento de las mismas.
15
Una vez seleccionado los campos, damos clic en Aceptar.
Volviendo a la ventana anterior y mostrándose la sentencia SQL que se ah formado al
seleccionar los campos de la tabla.
Damos clic en siguiente y se
mostrara la ultima ventana
donde se muestra la
verificación de las acciones
realizadas.
Finalmente clic en Finalizar.
Quedando la ventana de la siguiente manera:
El siguiente paso consiste en crear un Conjunto de Datos (DataSet) para ello debemos escoger
del menú Datos la alternativa Generar Conjunto de Datos.
16
Esta acción llamara a una ventana en donde,
debemos seleccionar Nuevo, y se mostrara el
SqlDataAdapter1 creado.
Clic en Aceptar.
Ahora para poder mostrar los campos de la tabla seleccionada debemos; agregar un
DataGridView.
Se llama a sus propiedades, de la cual seleccionamos DataSource
Y Ejecutamos la aplicación para poderlo visualizar.
17
Conexión a otro tipo de Base de DatosConexión a otro tipo de Base de Datos
Como se ah mencionado arriba, el Explorador de Servidores nos permite conectarnos a otras
Base de Datos, diferentes a SQL.
Vamos a conectarnos a una Base de Datos de Access (Nwind.mdb) para ello debemos seguir
los siguientes pasos:
Primero debemos abrir el Explorador de Servidores.
Le damos clic derecho sobre Conexión de Datos.
Y del menú contextual, elegimos la opción Agregar Conexión.
Se va a mostrar la ventana que va a permitir configurar la conexión a la nueva Base de Datos:
Seleccionamos Archivo de Base de Datos de Microsoft Access.
Clic en Aceptar, el cual nos mostrara la siguiente ventana:
Clic en el botón Examinar, de donde debemos buscar la base de Datos a usar.
18
Luego le damos Clic en Aceptar mostrándonos en el Explorador de Servidores la conexión
solicitada, tal como se muestra en el grafico en la parte inferior:
Si visualizamos el Explorador de Servidores, se podrá ver la conexión creada.
Quedando lista para ser utilizada dentro de alguna aplicación.
19
LABORATORIO 01LABORATORIO 01
1. Crear una Base de Datos en SQL, llamada CONTROL, la cual tendrá dos Tablas (Clientes y
Distritos), Ud. determine los campos y los tipos, agregarle un grupo de registros, realizar la
conexión a dicha base se datos y mostrar los nombres de los distritos sin repetir en un
ComboBox.
2. Crear un documento en Excel llamado Alumnos, el cual tendrá el Código, Nombre, Edad y
FechaNacimiento, ingresarle un grupo de registros, realizar la conexión a dicho archivo y
mostrarlo en un DataGridView.
3. Crear un procedimiento almacenado con la Base de Datos Hospital, el cual nos deberá mostrar
todos los cargos que desempeñan los empleados, luego conectarnos ha dicho procedimiento
almacenado y mostrarlo en un ListBox.
4. Mostrar en un DataGridView los siguientes campos de la Base de Datos NorthWind, Número de
Pedido, Fecha de Pedido, Nombre de Cliente, Nombre de Empleado, Total.
5. Realizar una conexión a una base de datos de ORACLE, crear Ud. la Base de Datos y las tablas.
6. Elaborar una conexión a MySQL, crear Ud. la Base de Datos y las tablas.
7. ¿Cuál es la combinación de teclas que permiten mostrar el Explorador de Servidores?
………………..…………………………………………………………………………………………….
8. Cual es la ventaja de usar un DataGridView?
………………..……………………………………………………………………………………………..
9. Cual es la diferencia entre un DataView, DataGridView y un DataGrid?
………………..……………………………………………………………………………………………..
20
SESIÓN II
GENERACION DE OBJETOS I
CONTENIDO
Aplicación ADO. Net
Objetos SQLConnection
Conexión a una Base de Datos SQL
Clase SQLException
Objeto OLEDBConnection
Objeto SQLCommand
Objeto OLEDBCommand
LABORATORIO
21
APLICACIÓN para ADO.NETAPLICACIÓN para ADO.NET
Antes de comenzar a trabajar con una aplicación, debemos verificar si esta activado la
Biblioteca System.Data.dll, esto lo hacemos observando en el Explorador de Soluciones si
se encuentra al expandir el elemento Referencias, dicha biblioteca de la siguiente manera:
Si no se encontrara dicha referencia debemos,
hacer clic derecho en la pantalla Referencias y
Seleccionamos Agregar Referencia.
Se mostrara la
siguiente ventana, de la
cual debemos
seleccionar
System.Data y luego
clic en Aceptar, y podrá
ver que la Biblioteca se
visualizara en el
Explorador de
Soluciones.
22
Espacios de NombresEspacios de Nombres
En las aplicaciones de Ado .Net donde se va a crear y utilizar los objetos de acceso a datos se
debe impotar el espacio de nombre llamado: System.Data.
El Espacio de nombre System.Data contiene todas las clases principales para acceder a una
base de datos desde una aplicación.
Los Espacios de Nombres pueden ser:
System.Data.SQLClient
Contiene las clases para el proveedor de datos de SQL Server.
System.Data.OleDb
Contiene las clases del proveedor de datos OleDb y es usado cuando la base de datos es
Access o Excel.
System.Data.Odbc
Contiene las clases del proveedor de datos OleDb.
System.Data.OracleClient
Contiene las clases del proveedor de datos para la base de datos de Oracle.
Para poder usar un espacio de nombre a una aplicación, se debe abrir la ventana de código
del formulario.
23
Una vez que se ha importado el espacio de nombre dentro de la aplicación, podemos ahora
utilizar los objetos del proveedor de datos, este es de acuerdo al nombre importado.
SQLConnection - Permite una conexiona la Base de Datos SQL Server.
SQLCommand - Permite enviar comandos de SQL a la Base de Datos.
SQLDataReader - Permite leer información de una base de datos de solo lectura.
SQLDataAdapter - Permite llenar un DataSet y realiza las actualizaciones en la Base de Datos.
Objeto SQLConnectionObjeto SQLConnection
SqlConnection es uno de los objetos mas importantes que tiene la tecnología Ado .Net porque
gracias a este objeto nos podemos conectar a una Base de Datos SQL, para luego ser usada
en nuestra aplicación.
Este objeto tiene una propiedad principal llamada ConnectionString en donde se escribe la
información necesaria para realizar la conexión a la Base de Datos, esta depende del tipo de
Base de Datos a la que deseamos conectar y utilizar en nuestra aplicación.
La Cadena de conexiones la información que se asigna a la propiedad ConnectionString y se
forma básicamente por los siguientes parámetros, que van separados por un punto y coma.
Provider
Usado para indicar el nombre del proveedor de datos. El proveedor es el programa desde
donde vas a obtener la información que vas a manejar en tu aplicación y puede ser: SQL,
Access, Oracle o Misal.
Data Source
Usado para indicar el nombre del servidor donde se encontrara la Base de Datos a
conectar.
Indicial Catalog
Usado para indicar el nombre de la Base de Datos a la cual nos queremos conectar.
User ID
Usado para indicar el nombre del usuario que se conecta a la Base de Datos.
24
Pad
Usado para indicar la clave del usuario que esta conectándose a la Base de Datos.
Integrated Security
Indica si la conexión a la base de datos va a tener seguridad integrada, es decir si dentro de
la cadena se va a especificar el Id del usuario y su contraseña.
Si esta en False se debe especificar el Id y el Password y si es True es todo lo contrario. El
valor SSPI es el más recomendado para este parámetro porque es similar al valor True.
Persist Security Info
Usado en la cadena de conexión para indicar si la información de seguridad, como la
contraseña del usuario, se devuelve como parte de la cadena de conexión. Se recomienda
si lo va a utilizar usar False o No para evitar el envió de la información de seguridad.
Connect Timeout
Usado para indicar la cantidad de segundos que debe durar el intento de conexión a la
Base de Datos. Si pasado el periodo establecido se producirá un error. Por defecto la
cantidad en segundos es 15.
EJEMPLO PRACTICO EJEMPLO PRACTICO
Conexión a una Base de DatosConexión a una Base de Datos
Imports System
Imports System.Data.SqlClient
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button1.Click
25
Dim Cn As New SqlConnection
Cn.ConnectionString = "Data Source=Developers\SQLExpress;initial Catalog=Hospital;User
id=sa:password="
Cn.Open()
Cn.Close()
MsgBox("La Conexion se realizo Exitosamente", 64, "Felicitaciones")
End Sub
End Class
Al ejecutar se mostrara de la siguiente manera:
LABORATORIO 02LABORATORIO 02
1. Realizar una conexión a una Base de Datos de Access, seleccionar Ud. la base de
datos a utilizar.
2. Realizar una conexión a una Base de Datos de Excel, crear un documento en Excel y
conectarte a el.
3. Crear una Conexión a la Base de Datos Hospital, creada en las clases anteriores.
4. Elaborar una conexión a una Base de Datos de MySql.
26
SQLExceptionSQLException
La case SQLException permite controlar los errores que pueden suceder, cuando se accede a
un servidor de base de datos SQL dentro de una aplicación.
Normalmente se crea cuando intentamos acceder a un servidor que no exista o que no esta
activo y también cuando el nombre o contraseña del usuario son incorrectos.
Si aprendemos a controlar estas excepciones podemos enviar los respectivos mensajes a los
usuarios sin que nuestra aplicación termine.
Propiedades de SQLException
Class - Indica el nivel de gravedad del Error.
Errors - Almacena una colecciones de errores mediante objetos SQLError
HelpLink - Permite indicar un vinculo hacia un archivo de ayuda.
LineNumber - Devuelve el numero de línea de un procedimiento o bloque de
instrucciones del error.
Message - Devuelve el mensaje de error generado.
Number - Devuelve el numero del error generado.
Procedure - Devuelve el nombre del procedimiento almacenado del error.
Server - Devuelve el nombre del equipo donde se genero el error.
Source - Devuelve el nombre del proveedor donde se ha generado el error.
ERRORES MÁS COMUNES
Utilizando el valor de esta propiedad y una instrucción como Select Case, puede saber el tipo
de error producido y el enviarle al usuario el mensaje de error de la propiedad Message o un
mensaje si gusta de manera personalizada.
Entre los Errores mas comunes en el acceso a la información y servidores en SQL se tienen:
Numero Nivel Mensaje
17 16 No Existe el servidor o Acceso Denegado
4060 11 No se puede abrir la Base de Datos solicitada en el inicio de sesión
27
17142 16 Indica que el SQL esta en pausa. No se permitirán nuevas conexiones
18452 14 Error al inicio de sesión no esta asociado a una conexión SQL de confianza
18456 14 Otro error de inicio de sesión
Objeto OLEDBConnectionObjeto OLEDBConnection
Es usado para conectarnos a orígenes de datos OLE DB como por ejemplo una base de datos
de Access.
Este objeto tiene la propiedad principal llamada ConnectionString, en donde se escribe la
información necesaria para realizar la conexión a la Base de Datos.
Cadena de Conexión
La estructura de la cadena de conexión de este objeto depende del origen de datos al que nos
queremos conectar, si queremos conectarnos a una base de datos de Access, la cadena se
formara básicamente por los siguientes parámetros, los cuales van separados por un punto y
coma:
Provider
Indica el nombre del proveedor de datos y es obligatorio dentro de la cadena de conexión.
DataSource
Usado para indicar la ruta y el nombre de la Base de Datos.
EJEMPLO PRACTICO EJEMPLO PRACTICO
“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C: \Control \Colegio.mdb”
Vamos a visualizar la conexión de manera Total:
Imports System
Imports System.Data.OleDb
28
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Cn As New OleDbConnection
Dim Cadena as String
Cadena="Data Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C: \Control \Colegio.mdb"
Try
Cn.ConnectionString =Cadena
Cn.Open()
MsgBox("La Conexion se realizo Exitosamente", 64, "Felicitaciones")
Cn.Close()
Match Ex As OleDbException
Dim Mensaje as String
Select Case Ex.ErrorCode
Case -2147467259
Mensaje=”No Existe la Base de Datos”
Case Else
Mensaje=Ex.ErrorCode.ToString & “ – “ & ex.Message
End Select
MsgBox (Mensaje,16,”Acceso Denegado”)
Match Ex As Exception
Dim Mensaje as String
Mensaje=Ex.Message
MsgBox(Mensaje,16,”Verique la Sintaxis”)
End Try
End Sub
End Class
OBJETO SQLCOMMANDOBJETO SQLCOMMAND
Después de habernos conectado se usa con un SQLConnection y permite enviar instrucciones
SQL al servidor en forma directa o mediante procedimientos almacenados.
29
Este objeto inicialmente requiere la instrucción SQL que se desea enviar y ejecutar en el
servidor y el objeto SQLConnection donde se ha configurado la conexión al servidor donde se
desea enviar y ejecutar la instrucción SQL.
Por lo tanto como es una instrucción SQL se debe importar los espacios de nombres:
System.Data y System.Data.SQLClient, en donde se va a utilizar.
Sintaxis
Dim Variable As New SqlCommand()
Propiedades
CommandText
Usado para almacenar la instrucción SQL o el procedimiento almacenado que se desea
enviar al servidor.
Esta propiedad se usa cuando no a enviado la instrucción SQL o el nombre del
procedimiento cuando ha creado el objeto SQLCommand.
EjemploEjemplo
Dim Cn as New Connection
Dim Cmd As New SqlCommand(“Select * From Empleados”,cn)
Ahora usando el CommandText es el siguiente:
Dim Cn as New Connection
Dim Cmd As New SqlCommand()
Cmd.CommandText=”Select * From Empleados”
CommandTimeout
Encargada para indicar la cantidad de segundos que el objeto Command debe intentar en
ejecutar el comando enviado al servidor.
Si paso el tiempo establecido, no se ejecuta el comando se produce un error. Por defecto
es de 30 segundos.
Dim Cn as New Connection
30
Dim Cmd As New SqlCommand(“Select * From Empleados”,cn)
Cmd.CommandTimeout=20
CommandType
Usado para indicar la forma como se van a enviar las ordenes al servidor que puede ser
una el nombre de una tabla, una instrucción SQL directa o mediante un procedimiento
almacenado. Los valores que se pueden asignar en esta propiedad son:
o StoredProcedure – Para indicar un Procedimiento almacenado, tabla(s) separadas por comas.
o Text - Para indicar que se va a usar una instruccion SQL.
o Connection - Usado para indicar donde se ejecutara el comando.
EjemploEjemplo
Dim Cn as New Connection
Dim Cmd As New SqlCommand
Dim Cadena as String
Cadena="Data Source=Developers\SQLExpress;initial Catalog=Hospital;User id= sa: password="
Cn.ConnectionString=Cadena
Cmd.commandType=CommandType.StoredProcedure
Cmd.CommandText=”Empleados_pa”
Cmd.CommandTimeout=20
Cmd.Connection=Cn
o Parameters - Usado para enviar parámetros al procedimiento almacenado o a la
instrucción SQL. Si no se utilizan parámetros esta propiedad debe quedar vacía.
Una forma de utilizar esta propiedad es asignandole el objeto SQLParameter
previamente creado con los valores de los parámetros.
Dim Pr as New SqlParameter()
Las principales propiedades del objeto SQLParameter son:
DbType
Usado para indicar el tipo de campo de un parámetro en el proveedor.
31
Direction
Usado para indicar si el parámetro es de entrada, salida, entrada y salida o es de vuelto por
ejemplo, desde el procedimiento.
IsNullable
Usado para indicar si el parámetro acepta los valores nulos.
ParameterName
Usado para indicar el nombre del parámetro. Este nombre debe empezar con una @.
Size
Usado para indicar el tamaño del parámetro cuando este es de tipo cadena.
SQLDbType
Usado para indicar el tipo de dato en SQL.
Value
Usado para indicar el valor del parámetro.
Ejemplo PracticoEjemplo Practico
Para poder hacer una demostración, primero vamos a crear un procedimiento almacenado
llamado INICIALES_PA, el cual devuelve los nombres de los autores que tienen como iniciales
las enviadas como parámetro.
Create Procedure Iniciales_pa
@Iniciales Varchar(50)
AS
Select Emp_Nro, Apellido,Oficio From Empleados Where Apellido LIKE @Iniciales + ‘%’
Order By Apellido
Ahora vamos usar este procedimiento en una aplicación en Visual Net, donde el nombre será
colocado en una caja de texto:
32
Dim Cn as New Connection
Dim Cmd As New SqlCommand
Dim Cadena as String
Cadena="Data Source=Developers\SQLExpress;initial Catalog=Hospital;User id=sa:
password="
Cn.ConnectionString=Cadena
Cmd.CommandType=CommandType.StoredProcedure
Cmd.CommandText=”Iniciales_pa”
Dim Pr as New SqlParameter()
Pr.Direction=ParameterDirection.Input
Pr.ParameterName=”@Iniciales”
Pr.SqlDbType=SqlDbType.VarChar
Pr.Size=50
Pr.Value=TextBox1.Text
Cmd.Parameters.Add(Pr)
Cmd.CommandTimeout=20
Cmd.Connection=Cn
METODOS DEL OBJETO SQLCOMMANDMETODOS DEL OBJETO SQLCOMMAND
Los métodos más utilizados son:
ExecuteScalar
Usado cuando el comando que enviamos al servidor solo va a devolver un valor. Si el comando
devuelve un conjunto de filas, este método solo reconoce el valor de la primera columna y de la
primera fila.
ExecuteNonQuery
Usado para ejecutar comandos que no devuelven filas del servidor como: Update, Insert y
Delete. Aquí se devuelve la cantidad de filas o registros efectuados, para otras instrucciones
devuelve el valor -1.
33
ExecuteReader
Método usado cuando el comando va a devolver una o una conjunto de filas y crea con ese
conjunto de filas un objeto SQLDataReader.
ExecuteXmlReader
Usado para devolver una fila o un conjunto de filas de un objeto XmlReader.
CreateParameter
Objeto para crear un objeto SQLParameter.
METODOS DEL OBJETO SQLCOMMANDMETODOS DEL OBJETO SQLCOMMAND
Cuando se utiliza un objeto OledbConnection, es necesario utilizar un OLEDBCOMMAND, este
le envía instrucciones SQL en forma directa o mediante procedimientos almacenados.
Por lo tanto este objeto requiere una instrucción SQL, que es la que se desea enviar y ejecutar
en la base de datos. Para utilizar el objeto debemos utilizar los espacios de nombre:
System.Data
System.Data.Oledb
34
SESIÓN II
GENERACION DE OBJETOS II
CONTENIDO
Objeto SQLDataReader
Objeto DataSet
Objeto DataView
LABORATORIO
35
METODOS DEL OBJETO SQLDATAREADERMETODOS DEL OBJETO SQLDATAREADER
Permite acceder a la información de una base de datos SQL de manera rápida, superando el
rendimiento de nuestra aplicación por la velocidad que utiliza para acceder a ella, también
necesita poco espacio de memoria ya que solo permanece en ella un solo registro por vez.
El acceso a la información de este objeto es secuencial, eso quiere decir desde el primer
registro hasta el ultimo, también debemos tomar en cuenta que es de solo lectura.
Para usar el objeto, debemos primero definir una variable de ese tipo:
Sintaxis:
Dim Variable as SqlDataReader
Método READMétodo READ
Para poder acceder a la información del SQLDATAREADER es necesario usar un READ.
Este método permite moverse al siguiente registro de un SQLDataReader, en su mayoría se
utiliza un bucle con While para poder pasar de un registro a otro.
Una forma de leer un campo es usando la posición del campo.
Objeto SQLDataReade(Numero del Campo)
EjemploEjemplo
Dim Cn as New Connection
Dim Cmd As New SqlCommand
Dim Cadena as String
Cadena="Data Source=Developers\SQLExpress;initial Catalog=Hospital;User id=sa:password="
Cn.ConnectionString=Cadena
Dim Dr As SqlDataReader
Dim CmdEmpleados as New SqlCommand(“Select Apellido,Oficio,Direccion From Empleados
Order by Apellido”,cn)
36
Cn.Open()
Cmd.Connection=Cn
Dr=CmdEmpleados.ExecuteReader
Dr.Read()
Dim Apellido as String
Apellido=Dr(0)
Messagebox.Show(“El Apellido es:” & Apellido, “Prueba”)
OBJETO OLEDBDATAREADEROBJETO OLEDBDATAREADER
Permite acceder a la información de una base de datos diferente a SQL Server. Para ello se
usa los espacios de nombre:
System.Data
System.Data.OleDB
Estos nombres de espacios nos van a permitir conectarnos a una Base de Datos Diferente a
SQL.
Asi como en los casos anteriores, primero se debe definir una variable de ese tipo:
Dim Variable As OLEDBDataReader
Ejemplo
Dim Dr As OLEDBDataReader
Una vez definida la variable, se debe crear el objeto SQLCommand y abrir la conexión, puede
llenar el objeto SQLDataReader de la siguiente manera:
Variable= Objeto SQLCommand.ExecuteReader
Ejemplo:
Dr=CmdEmpleados.ExecuteReader
37
OBJETO DATASETOBJETO DATASET
Permite almacenar y manejar la información de una Base de Datos en forma Desconectada. Se
lee la información de una Base de Datos con un objeto DataAdapter y llena dicha información
en el objeto DataSet.
Para eso debemos almacenarla en un objeto DataSet para poder utilizar dentro de una
aplicación, debemos seguir los siguientes pasos:
1. Connection:
Dim Cn as New SqlCommand
2. Asignar al objeto Connection la cadena de Conexión.
Cn.ConnectionString="Data Source=Developers\SQLExpress;initial
Catalog=Hospital;User id=sa:password="
3. Crear el objeto Command que almacenara las instrucciones SQL para leer la
información de la Base de Datos.
Dim Cmd as New SqlCommand()
4. Asignar al Objeto Command la instrucción SQL para leer la información de la Base de
Datos.
Cmd.CommandText=”Select * From Empleados Order by Apellido”
5. Indicar que la instrucción del objeto Command se ejecute en la Conexión.
Cmd.Connection=Cn
6. Ahora crear el objeto DataAdapter para llenar el objeto DataSet con la información que s
e lee de la Base de Datos.
Dim Da as New SqlDataAdapter()
7. Asignar el comando que contiene la instrucción.
Da.SelectCommand=Cmd
8. Crear el objeto DataSet que almacenara en memoria y en forma desconectada toda la
información
Dim Ds as New DataSet
9. Llenar usando el objeto DataAdapter, el objeto DataSet con la información leida de la
Base de Datos.
Da.Fill(Ds)
10. Terminado el llenado, se puede utilizar de cualquier manera en la aplicación.
38
DataGrid1.DataSource=Ds
OBJETO DATATABLEOBJETO DATATABLE
El objeto DataTable almacena en memoria la información que se lee del servidor de la misma
forma que se almacena en una tabla dentro de una Base de Datos.
El DataTable se organiza mediante filas y columnas. Cuando se llena un objeto DataSet se
crea en forma automática un objeto DataTable. La siguiente instrucción, crea en forma explicita
un objeto DataTable llamado Dt:
Dim Dt as New DataTable()
Llenado el DataSet, se puede almacenar el resultado en un objeto DataTable y utilizar este
objeto en la aplicación.
OBJETO DATAVIEWOBJETO DATAVIEW
Este objeto permite manejar dentro de una aplicación la información que recibe del DatSet.
Esta información recibida se almacena en forma predeterminada en un objeto DataTable y la
podemos enviar al objeto DataView para manejarla y presentarla.
Para poderla crear debemos:
Dim Nombre As New DataView
Ejemplo:
Dim MiTabla as New DataView()
También se puede ir definiendo y luego creando una instancia del objeto:
Dim MiTabla as DataView
MiTabla= New DataView
39
Una vez creado el DataView se utiliza la propiedad Table para enviar la información que tiene
el objeto DataSet mediante el objeto DataTable.
MiTabla.Table=Ds.Tables(“Empleados”)
Propiedades del DATAVIEW:Propiedades del DATAVIEW:
ALLOWDELETE
Permite que se puede eliminar o no registros del DataView.
ALLOWEDIT
Permite editar la información del DataView.
ALLOWADDNEW
Permite Agregar o no nuevos registros al DataView.
COUNT
Muestra la cantidad de registros que contiene un DataView.
ITEM
Se puede acceder a la información de una Fila del DataView. Recordar que la primera fila y
columna tiene el numero 0.
ROWFILTER
Se utiliza para seleccionar los registros DataView, es aquí donde done la condición que deben
cumplir los registros.
SORT
Usado para ordenar la información del objeto DataView.
40
SESIÓN III
LABORATORIOS RESUELTOS
CONTENIDO
Resumen de los temas tratados, laboratorios para reforzar lo aprendido
Laboratorio1
Laboratorio2
Laboratorio3
Laboratorio4
Laboratorio5
Laboratorio6
41
LABORATORIO 01LABORATORIO 01
Elaborar una aplicación que permita mostrar en un TreeView los Oficios de la Tabla
Empleados, y cuando hagamos clic en uno de esos Oficios deberá mostrarnos los
Empleados que cumplan con dicho oficio. El diseño será de la siguiente manera:
Imports System.Data
Imports System.Data.SqlClient
-----------------------------------------------------------------------------------------------------------------------------------------------
Public Class Form1
Const StrCN As String = "Data Source= Developers\SQLExpress;Initial Catalog=Hospital;uid=sa;pwd="
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load
'Crea la conexión
Dim CN As New SqlConnection(StrCN)
'Crea un objeto SQLCommand con sólo uno de cada grupo de
'nombres de las areas.
Dim CMD As New SqlCommand("Select Distinct Oficio From Empleados", CN)
Dim DR As SqlDataReader
Titulo()
'Llena el TreeView con los nombres de las areas encontradas.
TvOficio.Nodes.Clear()
Dim Padre As TreeNode
With CMD
.Connection.Open()
DR = .ExecuteReader
42
While DR.Read
Padre = New TreeNode(DR("Oficio"))
TvOficio.Nodes.Add(Padre)
End While
.Connection.Close()
End With
Private Sub TvEmpleado_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.
Forms.TreeViewEventArgs) Handles TvEmpleado.AfterSelect
Dim Oficio As String
'Almacena el Area seleccionada del TreeView
Oficio = TvOficio.SelectedNode.Text
Dim CN As New SqlConnection(StrCN)
'Selecciona sólo el personal del area
Dim CMD As New SqlCommand("Select Emp_Nro,Apellido,Oficio,Fecha_Alt,Salario From Empleados
Where Oficio='" & Oficio & "' Order By Apellido", CN)
Dim DR As SqlDataReader
Dim Personal As ListViewItem
Titulo()
LblOficio.Text = "Empleado del Oficio: " & Oficio
'Muestra los datos del personal en el control ListView
With CMD
.Connection.Open()
DR = .ExecuteReader
While DR.Read
Personal = New ListViewItem(DR("Emp_Nro").ToString, 0)
Personal.SubItems.Add(DR("Apellido"))
Personal.SubItems.Add(DR("Oficio"))
Personal.SubItems.Add(DR("Fecha_Alt"))
Personal.SubItems.Add(DR("Salario").ToString)
LvEmpleado.Items.Add(Personal)
End While
.Connection.Close()
End With
End Sub
Sub Titulo()
43
LvEmpleado.Clear()
'Asigna el formato inicial al control ListView
LvEmpleado.View = View.Details
LvEmpleado.GridLines = True
LvEmpleado.FullRowSelect = True
LvEmpleado.Columns.Add("Id", 30, HorizontalAlignment.Center)
LvEmpleado.Columns.Add("Apellido", 130, HorizontalAlignment.Left)
LvEmpleado.Columns.Add("Oficio", 120, HorizontalAlignment.Center)
LvEmpleado.Columns.Add("Fecha_Alt", 70, HorizontalAlignment.Center)
LvEmpleado.Columns.Add("Salario", 70, HorizontalAlignment.Right)
End Sub
End Class
Ejecutar la aplicación y se mostrara la siguiente:
44
LABORATORIO 02LABORATORIO 02
Haciendo unas modificaciones al ejercicio anterior ahora, vamos a poner en el TreeView el
Oficio y mostrar el nombre de los meses de Alta, para realizar una búsqueda. Tal como se
muestra de la siguiente manera:
Imports System.Data
Imports System.Data.SqlClient
----------------------------------------------------------------------------------------------------------------------------------------------
Public Class Form1
Const StrCN As String "Data Source= Developers\SQLExpress;Initial Catalog=Hospital;uid=sa;pwd="
Dim CN As New SqlConnection(StrCN)
Dim Condicion As String
Private Sub TvEmpleado_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.
Forms.TreeViewEventArgs) Handles TvEmpleado.AfterSelect
'Pregunta si se ha seleccionado un elemento
If TvOficio.SelectedNode.Level = 1 Then
Select Case TvOficio.SelectedNode.Parent.Text
Case "Oficio" 'Si se ha seleccionado una Oficio
Condicion = "Oficio='" & TvOficio.SelectedNode.Text & "'"
LblOficio.Text = "Empleados del Oficio: " & TvOficio.SelectedNode.Text
Llenar()
Case "Mes"
'Si se ha seleccionado un Mes
'Selecciona el mes con ayuda del contenido de la propiedad Tag
45
Condicion = "Month(Fecha_Alt)=" & TvOficio.SelectedNode.Tag
LblOficio.Text = "Empleados que ingreso un mes de : " & TvOficio.SelectedNode.Text
Llenar()
End Select
End If
End Sub
Sub Llenar()
Dim CMD As New SqlCommand("Select Emp_Nro,Apellido,Oficio,Fecha_Alt,Salario From Empleados
Where Oficio='" & Condicion & "' Order By Apellido", CN)
Dim DR As SqlDataReader
Dim Empleados As ListViewItem
'Asigna el formato para el ListView
Titulo()
'Muestra los datos del Empleados en el control ListView
With CMD
.Connection.Open()
DR = .ExecuteReader
While DR.Read
Empleados = New ListViewItem(DR("Emp_Nro").ToString, 0)
Empleados.SubItems.Add(DR("Apellido"))
Empleados.SubItems.Add(DR("Oficio"))
Empleados.SubItems.Add(DR("Fecha_Alt"))
Empleados.SubItems.Add(DR("Salario").ToString)
LvEmpleado.Items.Add(Empleados)
End While
.Connection.Close()
End With
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load
Dim CN As New SqlConnection(StrCN)
'Comando para almacenar sólo las Oficios que existe
Dim CMDOficios As New SqlCommand("Select Distinct Oficio From Empleados", CN)
'Comando para almacenar sólo los meses que existen
Dim CMDMeses As New SqlCommand("Select Distinct Month(Emp_Nro) As mes From Empleados", CN)
46
Dim DR As SqlDataReader
Dim Padre As TreeNode
'Asigna el formato al ListView
Titulo()
'Limpia el TreeView
TvOficio.Nodes.Clear()
'Agrega las Oficios segun el contenido de la tabla
With CMDOficios
.Connection.Open()
DR = .ExecuteReader
Padre = New TreeNode("Oficio")
TvOficio.Nodes.Add(Padre)
While DR.Read
Padre.Nodes.Add(DR("Oficio"))
End While
.Connection.Close()
End With
With CMDMeses
.Connection.Open()
DR = .ExecuteReader
Padre = New TreeNode("Mes")
TvOficio.Nodes.Add(Padre)
While DR.Read
'Muestra el nombre del mes
Padre.Nodes.Add(MonthName(DR("Mes")))
'Almacena el número del mes en la propiedad Tag
Padre.Nodes(Padre.Nodes.Count - 1).Tag = DR("Mes")
End While
End With
End Sub
Sub Titulo()
LvEmpleado.Clear()
'Asigna el formato inicial al control ListView
LvEmpleado.View = View.Details
LvEmpleado.GridLines = True
LvEmpleado.FullRowSelect = True
LvEmpleado.Columns.Add("Id", 25, HorizontalAlignment.Center)
47
LvEmpleado.Columns.Add("Nombre", 120, HorizontalAlignment.Left)
LvEmpleado.Columns.Add("Sexo", 40, HorizontalAlignment.Center)
LvEmpleado.Columns.Add("Oficio", 90, HorizontalAlignment.Left)
LvEmpleado.Columns.Add("FecIngreso", 70, HorizontalAlignment.Center)
LvEmpleado.Columns.Add("Sueldo", 70, HorizontalAlignment.Right)
End Sub
End Class
48
LABORATORIO 03LABORATORIO 03
Elaborar una aplicación que permita mostrar los datos personalizados de un determinado
Empleado, la selección se hará desde un TreeView, en donde se mostrara el Oficio y el Mes,
los cuales nos llevara a otras alternativas, al final nos mostrara el nombre (dato para la
selección).
Imports System.Data
Imports System.Data.SqlClient
------------------------------------------------------------------------------------------------------------------------
Public Class Form1
Const StrCN As String = ""Data Source= Developers\SQLExpress;Initial
Catalog=Hospital;uid=sa;pwd="
Dim CNEmpleados As New SqlConnection(StrCN)
Dim DREmpleados As SqlDataReader
Dim Hijo As TreeNode
Dim Condicion As String
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load
Dim CN As New SqlConnection(StrCN)
'Comando para almacenar sólo las areas que existe
Dim CMDAreas As New SqlCommand("Select Distinct Oficio From Empleados", CN)
'Comando para almacenar sólo los meses que existen
49
Dim CMDMeses As New SqlCommand("Select Distinct Month(Fecha_Alt) As mes From
Empleados", CN)
Dim DR As SqlDataReader
Dim Padre As TreeNode
'Limpia el TreeView
TvEmpleado.Nodes.Clear()
'Agrega las Areas segun el contenido de la tabla
With CMDAreas
.Connection.Open()
DR = .ExecuteReader
Padre = New TreeNode("Oficio")
TvEmpleado.Nodes.Add(Padre)
While DR.Read
Hijo = Padre.Nodes.Add(DR("Oficio"))
Condicion = "Oficio='" & DR("Oficio") & "'"
'Agrega los empleados del Area
Llenar()
End While
.Connection.Close()
End With
'Agrega los meses segun el contenido de la tabla
With CMDMeses
.Connection.Open()
DR = .ExecuteReader
Padre = New TreeNode("Mes")
TvEmpleado.Nodes.Add(Padre)
While DR.Read
'Muestra el nombre del mes
Hijo = Padre.Nodes.Add(MonthName(DR("Mes")))
Condicion = "Month(Fecha_Alt)=" & DR("Mes")
'Agrega los empleados de Sexo Masculino
Llenar()
End While
End With
End Sub
Sub Llenar()
50
'Crea un objeto Command sólo con el Id y Nombre de los registros del elemento seleccionado
Dim CMDEmpleados As New SqlCommand("Select Emp_Nro,Apellido From Empleados Where " &
Condicion & " Order By Apellido", CNEmpleados)
CMDEmpleados.Connection.Open()
DREmpleados = CMDEmpleados.ExecuteReader
While DREmpleados.Read
'Muestra en el TreeView el Nombre del Empleadosl
Hijo.Nodes.Add(DREmpleados("Apellido"))
'Almacena el Id del Empleadosl en la propiedad Tag
'para que la consulta sea mas rapida
Hijo.Nodes(Hijo.Nodes.Count - 1).Tag = DREmpleados("Emp_Nro")
End While
CMDEmpleados.Connection.Close()
End Sub
Private Sub TvEmpleado_AfterSelect(ByVal sender As System.Object, ByVal e As
System.Windows.Forms.TreeViewEventArgs) Handles TvEmpleado.AfterSelect
'Pregunta si se ha seleccionado un Empleadosl
If TvEmpleado.SelectedNode.Level = 2 Then
'Se busca el Empleadosl con el contenido de la propiedad Tag
'que contiene el Id
Condicion = "Emp_Nro=" & TvEmpleado.SelectedNode.Tag
Dim CMDEmpleados As New SqlCommand("Select Emp_Nro,Apellido,Oficio,Fecha_Alt,Salario From
Empleados Where Emp_Nro=" & Val(Condicion) & "", CNEmpleados)
CMDEmpleados.Connection.Open()
DREmpleados = CMDEmpleados.ExecuteReader
DREmpleados.Read()
'Muestra todos los datos del Empleadosl seleccionado
LblId.Text = DREmpleados("Emp_Nro")
LblApellido.Text = DREmpleados("Apellido")
LblOficio.Text = DREmpleados("Oficio")
LblFAlta.Text = DREmpleados("Fecha_Alt")
LblSalario.Text = DREmpleados("Salario").ToString
CMDEmpleados.Connection.Close()
End If
End Sub
End Class
51
LABORATORIO 04LABORATORIO 04
Elaborar una aplicación que me permita visualizar en un combo los meses del año y en un
NumericUpDown se mostrara el año y al presionar el botón Mostrar se visualizara la
información en un DataGrid.
La aplicación trabajara con un procedimiento almacenado, este será:
Create Procedure Datos_Pa
@Mes as SmallInt,
@Año as SmallInt
As
Select Emp_Nro,Apellido,Oficio,Direccion, Fecha_Alt,Salario,Comision From Empleados
Where Month(Fecha_Alt)=@Mes And Year(Fecha_Alt)=@Año
Luego de ello diseñar la siguiente Ventana:
Imports System.Data
Imports System.Data.SqlClient
----------------------------------------------------------------------------------------------------------------------------------------------
Public Class Form1
Const StrCN As String = ""Data Source= Developers\SQLExpress;Initial Catalog=Hospital;uid=sa;pwd="
52
UpAño
BtnMostrar
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load
'Llena los meses
Dim N As Byte
For N = 1 To 12
'Muestra los meses con la primera en mayúsculas
CboMes.Items.Add(StrConv(MonthName(N), VbStrConv.ProperCase))
Next
'Muestra el primer mes
CboMes.SelectedIndex = 0
'Muestra el año actual
UpAño.Value = Date.Today.Year
End Sub
Private Sub BtnMostrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
BtnMostrar.Click
Dim CN As New SqlConnection(StrCN)
'Crea un comando con el procedimiento almacenado
Dim CMD As New SqlCommand("Datos_Pa", CN)
With CMD
.CommandType = CommandType.StoredProcedure
'Pasa los parametros al procedimiento
.Parameters.Add(New SqlParameter("@Mes", CboMes.SelectedIndex + 1))
.Parameters.Add(New SqlParameter("@Año", UpAño.Value))
Dim DA As New SqlDataAdapter(CMD)
Dim DT As New DataTable
'Llena el DataTable
DA.Fill(DT)
'Muestra los datos en el DataGrid
DgDatos.DataSource = DT
End With
End Sub
End Class
53
LABORATORIO 05LABORATORIO 05
Elaborar una aplicación que nos permita seleccionar en un ComboBox los oficios de la tabla
Empleadosm y que al seleccionar uno de ellos se muestre en un ListView.
Para poder desarrollar la aplicación debemos crear los siguientes procedimientos:
Create Procedure Oficio_pa
As
Select Distinct Oficio From Empleados
Create Procedure Datos2_Pa
@Oficio As Varchar(50)
As
Select Emp_Nro,Apellido,Oficio,Direccion,Fecha_Alt,Salario,Comision From Empleados
Where Oficio=@Oficio
Imports System.Data
Imports System.Data.SqlClient
----------------------------------------------------------------------------------------------------------------------------------------------
Public Class Form1
Const StrCN As String = "Data Source= Developers\SQLExpress;Initial Catalog=Hospital;uid=sa;pwd="
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load
54
Dim CN As New SqlConnection(StrCN)
'Crea un comando con el procedimiento almacenado
Dim CMD As New SqlCommand("Oficio_Pa", CN)
With CMD
.CommandType = CommandType.StoredProcedure
Dim DA As New SqlDataAdapter(CMD)
Dim DT As New DataTable
'Llena el DataTable
DA.Fill(DT)
'Asigna las areas al Combo
CboOficio.DataSource = DT
CboOficio.DisplayMember = "Oficio"
End With
Formato()
End Sub
Sub Formato()
LvPersonal.Clear()
'Asigna el formato inicial al control ListView
LvPersonal.View = View.Details
LvPersonal.GridLines = True
LvPersonal.FullRowSelect = True
LvPersonal.Columns.Add("Nro", 25, HorizontalAlignment.Center)
LvPersonal.Columns.Add("Apellido", 170, HorizontalAlignment.Left)
LvPersonal.Columns.Add("Oficio", 120, HorizontalAlignment.Left)
LvPersonal.Columns.Add("Direccion", 190, HorizontalAlignment.Left)
LvPersonal.Columns.Add("F. Alta", 90, HorizontalAlignment.Center)
LvPersonal.Columns.Add("Salario", 70, HorizontalAlignment.Right)
LvPersonal.Columns.Add("Comision", 70, HorizontalAlignment.Right)
End Sub
Private Sub BtnMostrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
BtnMostrar.Click
Dim CN As New SqlConnection(StrCN)
Dim DR As SqlDataReader
Dim Personal As ListViewItem
55
'Asigna el formato para el ListView
Formato()
'Crea un comando con el procedimiento almacenado
Dim CMD As New SqlCommand("Datos2_Pa", CN)
With CMD
.CommandType = CommandType.StoredProcedure
'Pasa los parametros al procedimiento
.Parameters.Add(New SqlParameter("@Oficio", CboAreas.Text))
Dim DA As New SqlDataAdapter(CMD)
.Connection.Open()
DR = .ExecuteReader
While DR.Read
Personal = New ListViewItem(DR("Emp_Nro").ToString, 0)
Personal.SubItems.Add(DR("Apellido"))
Personal.SubItems.Add(DR("Oficio"))
Personal.SubItems.Add(DR("Dir"))
Personal.SubItems.Add(DR("Fecha_Alt"))
Personal.SubItems.Add(DR("Salario").ToString)
Personal.SubItems.Add(DR("Comision").ToString)
LvPersonal.Items.Add(Personal)
End While
.Connection.Close()
End With
End Sub
End Class
56
LABORATORIO 06LABORATORIO 06
Elaborar una aplicación que me permita mostrar algunos datos de la tabla Empleados, esta búsqueda se
podra realizar cuando se ingresa el codigo o cuando se ingresa el nombre.
Tendra el siguiente aspecto:
Antes de comenzar a codificar debemos crear los siguientes procedures:
Create Procedure BuscarNro_Pa
@Nro As Int
As
Select Emp_Nro,Apellido,Oficio,Direccion,Fecha_Alt,Salario From Empleados
Where Emp_Nro=@Nro
Create Procedure BuscarNombre_Pa
@Nombre As Varchar(50)
As
Select Emp_Nro,Apellido,Oficio,Direccion,Fecha_Alt,Salario,Comision
From Empleados
Where Nombre Like @Nombre + ‘%’
57
Imports System.Data
Imports System.Data.SqlClient
-----------------------------------------------------------------------------------------------------------------------------------------------
Public Class Form1
Const StrCN As String = "Data Source= Developers\SQLExpress;Initial Catalog=Hospital;uid=sa;pwd="
Private Sub TxtNro_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles TxtNro.KeyPress
If Asc(e.KeyChar) = 13 Then
Dim CN As New SqlConnection(StrCN)
'Crea un comando con el procedimiento almacenado
Dim CMD As New SqlCommand("BuscarNro_Pa", CN)
TxtApellidos.Text = ""
With CMD
.CommandType = CommandType.StoredProcedure
'Pasa los parametros al procedimiento
.Parameters.Add(New SqlParameter("@Nro", TxtNro.Text))
Dim DA As New SqlDataAdapter(CMD)
Dim DT As New DataTable
'Llena el DataTable
DA.Fill(DT)
'Pregunta si el registro ha sido encontrado
If DT.Rows.Count() = 0 Then
MessageBox.Show("El Id: " & TxtBuscaId.Text & " No existe", "Verifique", MessageBoxButtons.OK,
MessageBoxIcon.Error)
TxtNro.Text = ""
Limpiar()
TxtNro.Focus()
Else
'Muestra los datos del personal encontrado
LblNro.Text = DT.Rows(0).Item("Emp_Nro").ToString()
LblApellidos.Text = DT.Rows(0).Item("Apellido")
LblOfic.Text = DT.Rows(0).Item("Oficio")
LblDireccion.Text = DT.Rows(0).Item("Dir")
58
LblFAlta.Text = DT.Rows(0).Item("Fecha_Alt").ToString
LblSalario.Text = DT.Rows(0).Item("Salario").ToString()
End If
End With
End If
End Sub
Private Sub TxtApellidos_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles TxtApellidos.KeyPress
If Asc(e.KeyChar) = 13 Then
Dim CN As New SqlConnection(StrCN)
'Crea un comando con el procedimiento almacenado
Dim CMD As New SqlCommand("BuscarNombre_Pa", CN)
TxtNro.Text = ""
With CMD
.CommandType = CommandType.StoredProcedure
'Pasa los parametros al procedimiento
.Parameters.Add(New SqlParameter("@Nombre", TxtApellidos.Text))
Dim DA As New SqlDataAdapter(CMD)
Dim DT As New DataTable
'Llena el DataTable
DA.Fill(DT)
'Pregunta si el registro ha sido encontrado
If DT.Rows.Count() = 0 Then
MessageBox.Show("El Nombre: " & TxtApellidos.Text & " No existe", "Verifique",
MessageBoxButtons.OK, MessageBoxIcon.Error)
TxtApellidos.Text = ""
Limpiar()
TxtApellidos.Focus()
Else
'Muestra los datos del personal encontrado
LblNro.Text = DT.Rows(0).Item("Emp_Nro").ToString()
LblApellidos.Text = DT.Rows(0).Item("Apellido")
LblOfic.Text = DT.Rows(0).Item("Oficio")
LblDireccion.Text = DT.Rows(0).Item("Dir")
'Muestra la fecha sin la hora
LblIngreso.Text = Convert.ToDateTime DT.Rows(0). Item("Fecha_Alt")). ToString("d")
59
'Muestra la fecha con la coma para los miles
LblSueldo.Text = Convert.ToDecimal (DT.Rows(0). Item("Salario")). ToString ("#,##0.00")
End If
End With
End If
End Sub
Sub Limpiar()
LblNro.Text = ""
LblApellidos.Text = ""
LblOfic.Text = ""
LblDireccion.Text = ""
LblFAlta.Text = ""
LblSalario.Text = ""
End Sub
End Class
60
SESIÓN IV
TRABAJO CON CRYSTAL REPORT
CONTENIDO
Reporte Simple ( Usando una tabla )
Reporte Compuesto ( Usando Tablas Relacionadas )
Reporte Con Procedure
61
Reportes Con Crystal ReportReportes Con Crystal Report
Reporte Simple (Utilizando una tabla)
1. Activar el Studio .Net 2008
2. Nombre del Proyecto : ReporteNET
3. Guardarlo en la Carpeta Reportes , creada en la unidad C:
4. Llamar a la Ventana Frmreporte1
a. Name : Frmreportes01
b. Text : Reportes de Datos
5. En el explorador de soluciones (Llamar al Cristal Report) de la siguiente manera:
62
6. Se visualiza la siguiente pantalla:
7. Se visualiza la siguiente pantalla:
a. Usar Asistente de Informes
b. Estandarc. Aceptar
63
8. Se visualiza la siguiente pantalla:
a. Seleccionamos Crear Nueva Conexion
9. Se visualiza lo siguiente:
i. Aperturo OLE DB
ADO
64
10. Se visualiza lo siguiente:
65
Clic en la opción:Microsoft Oledb Provider for SQL Server
Siguiente
En el servidor, digitar:(local)
En el id del Usuario, digitar: sa
Seleccionar la base de datos:Northwind
Seleccionar el botón:Siguiente
O También, puede seleccionar, autenticación integrada (recomendable)
11. Se visualiza la siguiente pantalla:
12. Se visualiza la siguiente pantalla:
66
Seleccionar el botón:Finalizar
13. Se visualiza la siguiente entorno:
a. Click derecho sobre Campos de Base de Datos del Explorador de Campos
14. Se visualiza la siguiente pantalla:
15. Seleccionar la alternativa que se indica en el gráfico.
67
16. Se visualiza la siguiente pantalla:
a. Clic en NorthWind
b. Se va a mostrar la siguiente ventana.
17. Se visualiza lo siguiente:
68
18. Se visualiza lo siguiente:
a. Selecciono la Tabla Employees
b. Y click en el Boton >
19. Se visualiza lo siguiente:
a. Clic en ACEPTAR
69
Se visualiza la tabla: Employees
20. Ahora visualizando la alternativa Campos de Base
de Datos del Explorador de Campos
21. Se visualiza los campos de la tabla Employees
22. En la sectión1, se agrega los siguientes objetos, en el cuadro de herramientas: Crystal Reports, se visualiza lo siguiente:
23. En la Section2, insertar los siguientes: Objetos de Texto:
70
Clic y arrastre en la
section2
24. En el cuadro de herramientas, seleccionar e insertar el objeto: Línea
25. Se debe que visualizar así:
26. Se visualiza lo siguiente:
27. Se visualiza lo siguiente:
71
Objeto: LíneaClic derecho en el objeto:
Línea
Clic en:Dar Formato a Objeto
Seleccionar el estilo de línea, Ancho y Color de Línea
28. Se visualiza lo siguiente:
29. Se inserta los siguiente campos en la section3 (Detalles)
30. Los Campos son: EmployeeId, LastName, FirstName, Country, Photo
31. Se visualize lo siguiente:
32. Renombrar los títulos o rótulos que se encuentran en la section2, como se visualiza en la siguiente imagen:
33. El diseño final del reporte, quedara como se muestra en la siguiente imagen:
72
34. En la parte inferior de la pantalla, se visualiza lo siguiente:
35. La vista previa del informe, quedara así:
36.
73
Clic en: Vista previa del Informe Principal
37. Ahora en el Formulario
38. Clic en la ficha:
39. En el cuadro de herramientas:
40. Se visualiza en el formulario:
41. Se visualiza:
74
Frmreportes01.vb
Seleccionar la opción:CrystalReportViewer
En la parte superior derecha del CrystalReportViewer, se
visualiza una flecha que señala hacia la derecha, pulsar clic en
la flecha
42. Se visualiza lo siguiente:
43. Codificando en el Form, Load del objeto formulario:44.
Private Sub Frmreportes01_Load
Dim objreporte As New CrystalReporteDatos
objreporte.Load("C:\ ReporteNET \CrystalReporteDatos.rpt")
CrystalReportViewer1.ReportSource = objreporte
End Sub
45. Grabar y ejecutar la aplicación se visualiza lo siguiente:
75
Desactivar la casilla:Mostrar Árbol de Grupos
Clic en el vínculo:
Acoplar en contenedor principal
CrystalReportViewer Acoplado Al objeto Formulario
LABORATORIO
46. Crear los siguientes reportes de las siguientes tablas:
i. Customers
ii. Orders
iii. Products
iv. Categories
v. Shippers
vi. Suppliers
47. Invocar los reportes desde un formulario principal diseñado con los controles necesarios para si
visualización.
Reportes Con Crystal Report Reportes Con Crystal Report
76
Utilizando Tablas RelacionadasUtilizando Tablas Relacionadas
Caso B: Reporte Con Tablas Relacionadas
1. Activar el Visual Studio 2008
2. Crear el Proyecto llamado Reporte02
3. Guardarlo en una carpeta.
4. Cambiar el nombre del Formulario por FrmReporte02
5. Propiedades del formulario:
Name : Frmreportes02
Text : Reporte -Tablas Relacionadas
WindowState : Maximized
6. Llamar al Cristal Report y ponerle el nombre de : ReporteDatos002.rpt
7. De la Galeria de Crystal Reports debemos:
a. Verificar la opción : Usar Asistente de Informes
77
ReporteDatos002
b. Estandar
c. Click en Aceptar
8. Nos Conectamos a la Base de Datos de NorthWind de la manera aprendida en el
primero Reporte.
9. Quedando de la siguiente manera :
10. Hago clic en Tablas y muestro el contenido de las mismas:
a. Selecciono las Tablas Employees, Order Details y Orders
78
11. Luego de ello Clic en Siguiente: (Mostrándose las Tablas Relacionadas)
12. Clic en Siguiente y Selecciono los siguientes campos :
a. Employees : EmployeeId, LastName, FirstName de Employees.
b. Orders : OrderId,OrderDate,RequireDate
79
c. Order Details : UnitPrice,Quantity,Discount
13. Clic en Siguiente, se va a visualizar la pantalla de Agrupar , por lo que agruparemos
por:
Employee.EmployeeID
y Orders.OrderID
14. Clic en Finalizar
15. Se visualiza la siguiente imagen:
80
16. Renombrar los siguientes Rótulos:
17. En la sección: GroupFooterSection2(Pie de Grupo # 2. Orders.OrderId – A)
18. Seleccionar: Vista previa de Informe Principal
81
Arrastrar hacia la derecha
19. Ahora en el Formulario : FrmReporte002
20. Agregar del cuadro de herramientas (ToolBox) al Formulario un
CrystalReportViewer
21. Desactivamos Arbol de Grupos
22. Clic en Acoplar en Contenedor Principal
23. Ampliamos el formulario:
82
24. Codificamos en el Formulario
Private Sub Frmreportes02_Load
Dim objreportes02 As New ReportesDatos02objreportes02.Load("C:\ ReporteNET \Reporte\ReportesDatos002.rpt")CrystalReportViewer1.ReportSource = objreportes02
End Sub
25. Ejecutamos.
83
Reportes Con Crystal Report Reportes Con Crystal Report
utilizando utilizando
Procedimientos Almacenados Con ParámetrosProcedimientos Almacenados Con Parámetros
Caso C: Reporte Con Procedimientos Almacenados
1. Activar el analizador de consultas del SQL
2. Activamos la base de datos: Northwind
3. Se genera el procedimiento almacenado: sp_entre_fechas, que nos permita
ingresar las 2 fechas, que viene a ser el rango de fechas
Create proc sp_entre_fechas
@fechaini char(10),
@fechafin char(10)
As
Set dateformat dmy
Select o.orderid,o.customerid,
Orderdate=convert(char(10),o.orderdate,103),
Ordertotal=sum(quantity*unitprice) from
Orders o inner join [order details] d
On(o.orderid=d.orderid)
Where orderdate between @fechaini and @fechafin
Group by o.orderid,o.customerid,orderdate
4. Verificamos el Procedimiento :
exec sp_lista_ordenes_fecha '14/05/1997','18/05/1997'
5. Grabar el script con el nombre: Fechas
6. Cargar ahora el Visual Studio
7. Crear un proyecto llamado : ReporteEntreFechas
8. Cambiar el nombre al Formulario por : FrmFecha
9. Nombre del formulario:
a. Name : Frmfecha
b. Text : Reportes Con Fechas
10. En el Explorador De Soluciones, pulsar clic derecho.
84
11. Llamar al CrystalReport de la manera ya aprendida
12. Ponerle el nombre de : ReportesFechas
13. Utilizar el INFORME EN BLANCO para su creación
14. Se mostrara un informe en blanco
15. Luego ir al Explorador de Campos y de ahi a Campos de Base de Datos
16. Dar Clic derecho sobre el:
17. Se mostrara la siguiente pantalla
85
18. Clic en el Botón Opciones
19. Mostrándose la siguiente pantalla
20. Verificamos que este activado Procedimientos Almacenados
21. Aceptar
22. Luego hacer la conexión respectiva a la Base de Datos de NorthWind como ud ya
sabe.
23. Luego Clic en Aceptar
24. En el explorador de campos, pulsar clic derecho, se visualiza lo siguiente:
86
25. Se mostrara la siguiente Ventana
26. De la cual Activamos Procedimientos Almacenados
27. Buscamos el procedimiento creado en SQL
87
28. Pasarla a la otra lista
29. Se visualiza la siguiente pantalla:
30. Clic en Aceptar y se visualizara lo siguiente :
31. Clic en Aceptar
88
32. En el explorador de campos, se mostrara adicionado el procedimiento:
33. Arrastramos dichos campos al detalle de la manera como se muestra:
34. Vamos a generar un Campo
Calculado, donde se Calculara La
Suma De Los Totales acumulados,
para ello en el Explorador De
Campos:
89
35. Seleccionar : sp_lista_entre_fecha;1 OrderTotal
36. Clic en >
37. Tipo : Suma
38. Clic en Aceptar
39. Arrastramos dicho campo al Pie de Pagina (Section 5)
40. En los campos de Parametros arrastramos en la Section1 (Encabezado del Informe
los parámetros como se muestran en el diseño
41. El diseño final del informe es:
42. Ahora diseñaremos el Formulario
90
Clic en el botón:
>
43. Codificando en el formulario
44. Importando la librería del Crystal Report para trabajar con los procedimientos
almacenados:
45. En el load del Formulario desde código desactivamos el arbol:
46. En el botón: Button1_Click
Private Sub Button1_Click
Try
Dim parametro_coleccion As New CrystalDecisions.Shared.ParameterValues()
Dim parametro_inicial As New CrystalDecisions.Shared.ParameterDiscreteValue()
Dim parametro_final As New CrystalDecisions.Shared.ParameterDiscreteValue()
Dim rep As New ReportesFechas
With rep
91
parametro_coleccion.Clear()
parametro_inicial.Value = TextBox1.Text
parametro_coleccion.Add(parametro_inicial)
.DataDefinition.ParameterFields("@FECHAINI").ApplyCurrentValues(parametro_coleccion
)
parametro_coleccion.Clear()
parametro_final.Value = TextBox2.Text
parametro_coleccion.Add(parametro_final)
.DataDefinition.ParameterFields("@FECHAFIN").ApplyCurrentValues(parametro_coleccion)
End With
crv1.ReportSource = rep
rep = Nothing
parametro_coleccion = Nothing
Catch
MsgBox(Err.Description)
End Try
End Sub
47. Grabar lo digitado y Ejecutar para ver el estado final.
92
SESIÓN V
CREANDO SETUP DE INSTALACION
CONTENIDO
Creando Proyecto
Pasos para crear el SETUP
Agregando Icono al SETUP
Visualizando Estado Final del Proyecto
93
Crear un setup de instalaciónCrear un setup de instalación
1. Crear una carpeta en la unidad C:, con el nombre de: DemoSetup
2. Activar el analizador de consultas
3. Se genera el siguiente procedimiento almacenado:
4. Utilizar la Base de Datos : NorthWind
5. Crear el siguiente procedimiento almacenado desde el analizador de consultas del SQL
create procedure sp_listadoAsSelect employeeid,lastname,firstname from employees
6. Grabar el script con el nombre: DemoSetup
7. Activar el Visual Studio .net
8. Seleccionar : Nuevo Proyecto (Crear)
9. Renombrar: Class1.vb por ClaseSetup.vb
10. Generando el código:
94
Imports System.Data
Imports System.Data.SqlClient
Public Class ClaseSetup
Dim cadena As String = "server=(local);user id=sa;initial catalog=northwind"
Dim sqlcone As SqlConnection
Public Sub New()
Try
sqlcone = New SqlConnection(cadena)
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Public Function listado() As DataTable
Dim dalistado As New SqlDataAdapter
Dim dslistado As New DataSet
Try
dalistado.SelectCommand = New SqlCommand
With dalistado.SelectCommand
.Connection = sqlcone
.CommandType = CommandType.StoredProcedure
.CommandText = "sp_listado"
End With
sqlcone.Open()
dalistado.Fill(dslistado, "lista")
sqlcone.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
Return dslistado.Tables("lista")
End Function
End Class
95
11. Grabar y Generar la librería dll
12. Activar el .net por segunda vez
13. Ahora crear un proyecto en Visual Studio Net.
14. Llamarlo AplicacionSetup
15. Renombrar el archivo: Form1.vb por: Frmaplicasetup.vb
16. Propiedades del formulario Text: Datos De Empleados
17. Diseño del formulario:
18. Agregar la librería dll al proyecto:
19. Se agrega un modulo con el nombre: Modsetup.vb
96
txtid
txtfirstname
GroupBoxName: gbxdatos
Text: Datos de Empleados
btnprimero
btnanterior
btnsiguiente
btnultimo
btnsalir
GroupBoxName: gbxopciones
Text: Opciones De Control
txtlastname
20. Generando el código en el modulo:
Imports System.Data
Imports System.Data.SqlClient
Module Modsetup
Dim objclase As New ClaseSetup.ClaseSetup
Dim fila, contador As Integer
Public Sub cajas()
Try
With frmaplicasetup
.txtid.Text = IIf(IsDBNull(objclase.listado.Rows(fila)(0)), "", objclase.listado. Rows(fila)(0))
.txtfirstname.Text = IIf(IsDBNull(objclase.listado.Rows(fila)(1)), "", objclase.listado.Rows(fila)(1))
.txtlastname.Text = IIf(IsDBNull(objclase.listado.Rows(fila)(2)), "", objclase.listado.Rows(fila)(2))
End With
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Public Sub primero()
Try
With frmaplicasetup
contador = objclase.listado.Rows.Count - 1
If contador < 0 Then Return
fila = 0
Call cajas()
End With
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
97
Public Sub anterior()
Try
With frmaplicasetup
contador = objclase.listado.Rows.Count
If contador < 0 Then Return
fila -= 1
If fila < 0 Then fila = 0
Call cajas()
End With
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Public Sub siguiente()
Try
With frmaplicasetup
contador = objclase.listado.Rows.Count
If contador < 0 Then Return
fila += 1
If fila >= contador Then fila = contador - 1
Call cajas()
End With
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Public Sub ultimo()
Try
With frmaplicasetup
contador = objclase.listado.Rows.Count - 1
If contador < 0 Then Return
fila = contador
98
Call cajas()
End With
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
End Module
21. Codificando en el Formulario:
Public Class FrmAplicaSetup
Private Sub btnprimero_Click
Call primero()
End Sub
Private Sub btnanterior_Click
Call anterior()
End Sub
Private Sub btnsiguiente_Click
Call siguiente()
End Sub
Private Sub btnultimo_Click
Call ultimo()
End Sub
Private Sub btnsalir_Click
End
End Sub
End Class
22. Desde el proyecto, seleccionar la opción: Archivo
99
23. Se visualiza la siguiente imagen:
24. Se visualiza la siguiente pantalla:
100
Seleccionar la opción:Instalación e Implementación
Seleccionar el icono:Asistente para proyectos de instalación
Nombre del proyecto:SetupDemo
Carpeta:C:\DemoSetup\AplicacionSetup
Seleccionar el botón:Aceptar
25. Se visualiza la siguiente pantalla:
26. Se visualiza la siguiente pantalla:
27. Se visualiza la siguiente ventana:
101
En la figura, podemos escoger de 4 opciones: Crear un programa de instalación para una aplicación Windows Crear un programa de instalación para una aplicación Web. Crear un modulo de combinación para Windows Installer. Crear un archivo CAB descargable.
En las 2 primeras opciones conduce a la creación de un programa de instalación que el usuario ejecutara para instalar la aplicación en su PC. La tercera y cuarta opción creara un paquete redistribuible, que puede ser combinado con otros paquetes para formar una solución de instalación completa y personalizable en la que se podrán actualizar fácilmente los componentes individuales sin que se vea afectado el paquete general.
Seleccionar la primera opción:Recursos adaptados de AplicacionSetup
Clic en: Agregar
28. Se visualiza la siguiente pantalla:
102
En la ventana se podrá incluir los archivos adicionales que se desee distribuir al usuario final, tales como el archivo Léame, los archivos de documentación, los archivos de Ayuda, las bases de datos iniciales, etc. Haga clic en el botón Agregar para designar que archivos incluir, cuando haya terminado, haga clic en siguiente, el cual mostrara la ventana que resume las acciones que va a realizar el asistente.
Seleccionar en:AplicacionSetup.exe
Clic en: Abrir
29. Clic en FINALIZAR.
30. En el explorador de soluciones, se visualiza:
31. En el explorador, seleccionar: SetupDemo, llamar a la ventana de propiedades
103
32. En la ventana de propiedades:
33. Propiedad Autor: Wiener
34. En Description: Setup De Desplazamiento
35. En Manufacturer: Empresa Los Lobos de Ipal
36. En ProductName: Setup de Instalación de Datos
37. RemovePreviousVersions = True
Se fija en true, para quitar las versiones anteriores
104
Wiener
Wiener
Wiener
38. Titile: Instalador del Proyecto
de Desplazamiento
39. Clic derecho en: Menú Programas del Usuario:
105
Wiener
40. En el panel derecho de: Carpeta de la Aplicación, pulsar clic derecho:
41. Se visualiza la siguiente ventana:
106
Clic en la opción:Crear Nuevo Acceso Directo
Doble clic en la carpeta:Carpeta de la aplicación
42. Se visualiza la siguiente pantalla:
43. Renombrar : Acceso directo a AplicacionSetup.exe por: Acceso A la Aplicación
107
Clic en el archivo ejecutable:AplicaciónSetup.exe
Clic en el botón:Aceptar
44. Seleccionar la carpeta: DemoSetupDesplaza
45. En el explorador de soluciones:
108
Arrastrar el icono de acceso directo: Acceso A la Aplicación, que se encuentra en la carpeta: Carpeta de la aplicación, hacia la carpeta: DemoSetupDesplaza
Icono de Acceso Directo: Acceso A la Aplicación, que se encuentra en la carpeta: DemoSetupDesplaza
Clic derecho en:SetupDemo
Clic en la opción:Generar
46. En la parte inferior izquierda de la
pantalla, se visualiza lo siguiente:
47. Se visualiza lo siguiente:
48. Cerrar el .net
49. Activar el explorador de Windows
50. En el panel izquierdo, en la unidad C:
51. Expandir las carpetas:
52. Se visualiza la siguiente pantalla:
109
Doble Clic en el archivo:Setup.exe
53. Se visualiza la siguiente pantalla:
110
54. En el menú inicio:
55. Abrir el proyecto de: SetupDemo
56. Seleccionar la carpeta:
DemoSetupDesplaza
57. Seleccionar el icono de acceso directo:
Acceso A La Aplicación
58. Pulsar: F4 (Ventana de Propiedades)
59. En la ventana de propiedades:
111
60. Se visualiza la siguiente ventana:61. Clic en Examinar
62. Clic en el botón: Agregar Archivo
112
Doble clic en la carpeta:Carpeta de la aplicación
63. abrir el proyecto
64. En el explorador de soluciones:
113
Archivo de icono agregado
65. Instalar el programa otra vez66. Luego clic Inicio - Programas - DemoSetupDesplaza - Acceso de Aplicacion
114
67. Se visualiza lo siguiente:
115
SESIÓN VI
SISTEMA FINAL
CONTENIDO
Desarrollo Sistema Final
Pasos a Seguir
Módulos a utilizar
116
SISTEMA INKAFARMASISTEMA INKAFARMA
Base de Datos Inkafarma
117
Crear un proyecto con el nombre de: InkaFarma. InkaFarma.
Para comenzar con nuestro proyecto debemos crear las siguientes alternativas en nuestro proyecto, esta debe tener el siguiente aspecto:
En la carpeta Clases debemos :
CLASES:CLASES:
CCliente:CCliente:
Public Class CCliente Inherits CConexion Private xcod_cli As String Private xpat_cli As String Private xmat_cli As String Private xnom_cli As String Private xapnom_cli As String Private xcod_dis As String Private xdir_cli As String Private xtelef_cli As String Private xtipo_cli As String Private xruc_cli As String
Public Property cod_cli() As String Get Return xcod_cli
End Get Set(ByVal value As String) xcod_cli = value End Set End Property Public Property pat_cli() As String Get Return xpat_cli End Get Set(ByVal value As String) xpat_cli = value End Set End Property Public Property mat_cli() As String Get Return xmat_cli
118
End Get Set(ByVal value As String) xmat_cli = value End Set End Property Public Property nom_cli() As String Get Return xnom_cli End Get Set(ByVal value As String) xnom_cli = value End Set End Property Public Property apnom_cli() As String Get Return xapnom_cli End Get Set(ByVal value As String) xapnom_cli = value End Set End Property Public Property cod_dis() As String Get Return xcod_dis End Get Set(ByVal value As String) xcod_dis = value End Set End Property Public Property dir_cli() As String Get Return xdir_cli End Get Set(ByVal value As String) xdir_cli = value End Set End Property Public Property telef_cli() As String Get Return xtelef_cli End Get Set(ByVal value As String) xtelef_cli = value End Set End Property Public Property tipo_cli() As String Get Return xtipo_cli End Get Set(ByVal value As String) xtipo_cli = value End Set End Property Public Property ruc_cli() As String Get
119
Return xruc_cli End Get Set(ByVal value As String) xruc_cli = value End Set End Property
Public Sub Guardar_(ByVal xcod_cli As String, ByVal xpat_cli As String, ByVal xmat_cli As String, ByVal xnom_cli As String, ByVal xapnom_cli As String, ByVal xcod_dis As String, ByVal xdir_cli As String, ByVal xtelef_cli As String, ByVal xtipo_cli As String, ByVal xruc_cli As String) cn.Open() Try cmd.CommandText = "INSERT INTO CLIENTE VALUES ('" & xcod_cli & "','" & xpat_cli & "','" & xmat_cli & "','" & xnom_cli & "','" & xapnom_cli & "','" & xcod_dis & "','" & xdir_cli & "','" & xtelef_cli & "','" & xtipo_cli & "','" & xruc_cli & "')" cmd.Connection = cn cmd.ExecuteNonQuery() MsgBox("Registro Guardado", MsgBoxStyle.Information, "Mensaje") Catch ex As Exception MsgBox("No se pudo guardar registro, porfabor verifique sus datos", MsgBoxStyle.Critical, "E R R O R ") End Try cn.Close()End SubPublic Sub Buscar_(ByVal xcod_cli As String) cn.Open() dt.Clear() cmd.CommandText = "SELECT CLI.cod_cli,CLI.pat_cli,CLI.mat_cli,CLI.nom_cli,CLI.apnom_cli,DIS.distrito,CLI.dir_cli,CLI.telef_cli,CLI.tipo_cli,CLI.ruc_cli from CLIENTE CLI,DISTRITO DIS where DIS.cod_dis=CLI.cod_dis AND CLI.COD_CLI='" & xcod_cli & "' OR CLI.APNOM_CLI='" & xcod_cli & "'" cmd.Connection = cn da.SelectCommand = cmd da.Fill(dt) If dt.Rows.Count = 0 Then MsgBox("Codigo No Existe") Else cod_cli = dt.Rows(0).Item("cod_cli") pat_cli = dt.Rows(0).Item("pat_cli") mat_cli = dt.Rows(0).Item("mat_cli") nom_cli = dt.Rows(0).Item("nom_cli") apnom_cli = dt.Rows(0).Item("apnom_cli") cod_dis = dt.Rows(0).Item("distrito") dir_cli = dt.Rows(0).Item("dir_cli") telef_cli = dt.Rows(0).Item("telef_cli") tipo_cli = dt.Rows(0).Item("tipo_cli") ruc_cli = dt.Rows(0).Item("ruc_cli") End If cn.Close()End SubPublic Sub Actualizar_(ByVal xcod_cli As String, ByVal xpat_cli As String, ByVal xmat_cli As String, ByVal xnom_cli As String, ByVal xapnom_cli As String, ByVal xcod_dis As String, ByVal xdir_cli As String, ByVal xtelef_cli As String, ByVal xtipo_cli As String, ByVal xruc_cli As String) cn.Open()
120
cmd.CommandText = "update CLIENTE set pat_cli='" & xpat_cli & "',mat_cli='" & xmat_cli & "',nom_cli='" & xnom_cli & "',apnom_cli='" & xapnom_cli & "',cod_dis='" & xcod_dis & "',dir_cli='" & xdir_cli & "',telef_cli='" & xtelef_cli & "',tipo_cli='" & xtipo_cli & "',ruc_cli='" & xruc_cli & "' where cod_cli='" & xcod_cli & "'" cmd.Connection = cn cmd.ExecuteNonQuery() MsgBox("Registro Modificado") cn.Close() End SubEnd ClassCConexión:CConexión:
Imports System.DataImports System.Data.SqlClientImports formulario = System.Windows.FormsPublic Class CConexionPublic cn As New SqlConnection("data source=(local); initial catalog =BDInkafarma; user id =sa;Integrated Security=True;") Public cmd As New SqlCommand Public da As New SqlDataAdapter Public ds As New DataSet Public dt As New DataTable Public dv As New DataView Public dr As SqlDataReader Public XCOD_ As StringEnd Class
Cdistrito:Cdistrito:
Imports INKAFARMA.CConexionImports formulario = System.Windows.FormsPublic Class CDistrito Inherits CConexion Private xcod_dis As String Private xdistrito As String Public Property cod_dis() As String Get Return xcod_dis End Get Set(ByVal value As String) xcod_dis = value End Set End Property Public Property distrito() As String Get Return xdistrito End Get Set(ByVal value As String) xdistrito = value End Set End Property Public Sub Guardar_(ByVal xcod_dis As String, ByVal xdistrito As String) cn.Open() Try cmd.CommandText = "INSERT INTO DISTRITO VALUES ('" & xcod_dis & "','" & xdistrito & "')"
121
cmd.Connection = cn cmd.ExecuteNonQuery() MsgBox("Registro Guardado", MsgBoxStyle.Information, "Mensaje") Catch ex As Exception MsgBox("No se pudo guardar registro, porfabor verifique sus datos", MsgBoxStyle.Critical, "E R R O R") End Try cn.Close() End Sub Public Sub Buscar_(ByVal xcod_dis As String) cn.Open() dt.Clear()cmd.CommandText = "SELECT * FROM DISTRITO WHERE COD_DIS='" & xcod_dis & "' OR DISTRITO='" & xcod_dis & "'" cmd.Connection = cn da.SelectCommand = cmd da.Fill(dt) If dt.Rows.Count = 0 Then MsgBox("Codigo No Existe") Else cod_dis = dt.Rows(0).Item("cod_dis") distrito = dt.Rows(0).Item("distrito") End If cn.Close() End Sub Public Sub Actualizar_(ByVal xcod_dis As String, ByVal xdistrito As String) cn.Open() cmd.CommandText = "update DISTRITO set distrito='" & xdistrito & "'where cod_dis='" & xcod_dis & "'" cmd.Connection = cn cmd.ExecuteNonQuery() MsgBox("Registro Modificado") cn.Close() End SubEnd Class
CEAlmacen:CEAlmacen:
Public Class CEAlmacen Inherits CConexion Private xcod_ealm As String Private xpat_ealm As String Private xmat_ealm As String Private xnom_ealm As String Private xapnom_ealm As String Private xcod_dis As String Private xdir_ealm As String Public Property cod_ealm() As String Get Return xcod_ealm End Get Set(ByVal value As String) xcod_ealm = value End Set End Property
122
Public Property pat_ealm() As String Get Return xpat_ealm End Get Set(ByVal value As String) xpat_ealm = value End Set End Property Public Property mat_ealm() As String Get Return xmat_ealm End Get Set(ByVal value As String) xmat_ealm = value End Set End Property Public Property nom_ealm() As String Get Return xnom_ealm End Get Set(ByVal value As String) xnom_ealm = value End Set End Property Public Property apnom_ealm() As String Get Return xapnom_ealm End Get Set(ByVal value As String) xapnom_ealm = value End Set End Property Public Property cod_dis() As String Get Return xcod_dis End Get Set(ByVal value As String) xcod_dis = value End Set End Property Public Property dir_ealm() As String Get Return xdir_ealm End Get Set(ByVal value As String) xdir_ealm = value End Set End Property
Public Sub Guardar_(ByVal xcod_ealm As String, ByVal xpat_ealm As String, ByVal xmat_ealm As String, ByVal xnom_ealm As String, ByVal xapnom_ealm As String, ByVal xcod_dis As String, ByVal xdir_ealm As String) cn.Open() Try
123
cmd.CommandText = "INSERT INTO EMPLEADO VALUES ('" & xcod_ealm & "','" & xpat_ealm & "','" & xmat_ealm & "','" & xnom_ealm & "','" & xapnom_ealm & "','" & xcod_dis & "','" & xdir_ealm & "')" cmd.Connection = cn cmd.ExecuteNonQuery() MsgBox("Registro Guardado", MsgBoxStyle.Information, "Mensaje") Catch ex As Exception MsgBox("No se pudo guardar registro, porfabor verifique sus datos", MsgBoxStyle.Critical, "E R R O R") End Try cn.Close()End Sub
Public Sub Buscar_(ByVal xcod_emp As String) cn.Open() dt.Clear() cmd.CommandText = "SELECT EAL.cod_ealm,EAL.pat_ealm,EAL.mat_ealm,EAL.nom_ealm,EAL.apnom_ealm,DIS.distrito,EAL.dir_ealm FROM EALMACEN EAL,DISTRITO DIS WHERE DIS.cod_dis=EAL.cod_dis AND EAL.COD_ealm='" & xcod_emp & "' OR EAL.APNOM_EALM='" & xcod_emp & "' " cmd.Connection = cn da.SelectCommand = cmd da.Fill(dt) If dt.Rows.Count = 0 Then MsgBox("Codigo No Existe") Else cod_ealm = dt.Rows(0).Item("cod_ealm") pat_ealm = dt.Rows(0).Item("pat_ealm") mat_ealm = dt.Rows(0).Item("mat_ealm") nom_ealm = dt.Rows(0).Item("nom_ealm") apnom_ealm = dt.Rows(0).Item("apnom_ealm") cod_dis = dt.Rows(0).Item("distrito") dir_ealm = dt.Rows(0).Item("dir_ealm") End If cn.Close()End Sub
Public Sub Actualizar_(ByVal xcod_ealm As String, ByVal xpat_ealm As String, ByVal xmat_ealm As String, ByVal xnom_ealm As String, ByVal xapnom_ealm As String, ByVal xcod_dis As String, ByVal xdir_ealm As String) cn.Open() cmd.CommandText = "update EALMACEN set pat_ealm='" & xpat_ealm & "',mat_ealm='" & xmat_ealm & "',nom_ealm='" & xnom_ealm & "',apnom_ealm='" & xapnom_ealm & "',cod_dis='" & xcod_dis & "',dir_ealm='" & xdir_ealm & "' where cod_ealm='" & xcod_ealm & "'" cmd.Connection = cn cmd.ExecuteNonQuery() MsgBox("Registro Modificado") cn.Close() End SubEnd Class
CEMPLEADOCEMPLEADO
Public Class CEmpleado Inherits CConexion
124
Private xcod_emp As String Private xpat_emp As String Private xmat_emp As String Private xnom_emp As String Private xapnom_emp As String Private xcod_dis As String Private xdir_emp As String Public Property cod_emp() As String Get Return xcod_emp End Get Set(ByVal value As String) xcod_emp = value End Set End Property Public Property pat_emp() As String Get Return xpat_emp End Get Set(ByVal value As String) xpat_emp = value End Set End Property Public Property mat_emp() As String Get Return xmat_emp End Get Set(ByVal value As String) xmat_emp = value End Set End Property Public Property nom_emp() As String Get Return xnom_emp End Get Set(ByVal value As String) xnom_emp = value End Set End Property Public Property apnom_emp() As String Get Return xapnom_emp End Get Set(ByVal value As String) xapnom_emp = value End Set End Property Public Property cod_dis() As String Get Return xcod_dis End Get Set(ByVal value As String) xcod_dis = value End Set End Property
125
Public Property dir_emp() As String Get Return xdir_emp End Get Set(ByVal value As String) xdir_emp = value End Set End Property
Public Sub Guardar_(ByVal xcod_emp As String, ByVal xpat_emp As String, ByVal xmat_emp As String, ByVal xnom_emp As String, ByVal xapnom_emp As String, ByVal xcod_dis As String, ByVal xdir_emp As String) cn.Open() Trycmd.CommandText = "INSERT INTO EMPLEADO VALUES ('" & xcod_emp & "','" & xpat_emp & "','" & xmat_emp & "','" & xnom_emp & "','" & xapnom_emp & "','" & xcod_dis & "','" & xdir_emp & "')" cmd.Connection = cn cmd.ExecuteNonQuery() MsgBox("Registro Guardado", MsgBoxStyle.Information, "Mensaje") Catch ex As Exception MsgBox("No se pudo guardar registro, porfabor verifique sus datos", MsgBoxStyle.Critical, "E R R O R") End Try cn.Close()End Sub
Public Sub Buscar_(ByVal xcod_emp As String) cn.Open() dt.Clear() cmd.CommandText = "SELECT EMP.cod_emp,EMP.pat_emp,EMP.mat_emp,EMP.nom_emp,EMP.apnom_emp,DIS.distrito,EMP.dir_emp from EMPLEADO EMP,DISTRITO DIS where DIS.cod_dis=EMP.cod_dis AND EMP.COD_EMP='" & xcod_emp & "' OR EMP.APNOM_EMP='" & xcod_emp & "'" cmd.Connection = cn da.SelectCommand = cmd da.Fill(dt) If dt.Rows.Count = 0 Then MsgBox("Codigo No Existe") Else cod_emp = dt.Rows(0).Item("cod_emp") pat_emp = dt.Rows(0).Item("pat_emp") mat_emp = dt.Rows(0).Item("mat_emp") nom_emp = dt.Rows(0).Item("nom_emp") apnom_emp = dt.Rows(0).Item("apnom_emp") cod_dis = dt.Rows(0).Item("distrito") dir_emp = dt.Rows(0).Item("dir_emp") End If cn.Close()End Sub
Public Sub Actualizar_(ByVal xcod_emp As String, ByVal xpat_emp As String, ByVal xmat_emp As String, ByVal xnom_emp As String, ByVal xapnom_emp As String, ByVal xcod_dis As String, ByVal xdir_emp As String) cn.Open()
126
cmd.CommandText = "update EMPLEADO set pat_emp='" & xpat_emp & "',mat_emp='" & xmat_emp & "',nom_emp='" & xnom_emp & "',apnom_emp='" & xapnom_emp & "',cod_dis='" & xcod_dis & "',dir_emp='" & xdir_emp & "' where cod_emp='" & xcod_emp & "'" cmd.Connection = cn cmd.ExecuteNonQuery() MsgBox("Registro Modificado") cn.Close()End Sub
Cfactura:Cfactura:
Imports formulario = System.Windows.FormsPublic Class CFactura Inherits CConexion 'TABLA FACTURA -------------- Private xcod_cli, xnum_fac, xfecha_fac, xcod_tdoc, xcod_emp As String Private xstot_fac As Double Private xigv_fac As Double Private xtot_fac As Double Dim subtotal = 0 'TABLA DETALLE -------------- Private xcod, xprod As String Private xpres, xcant, ximp As Double 'CALCULO -------------------- Public XSTOT As Double = 0 Public XIGV As Double = 0 Public XTOT As Double = 0 Public Property num_fac() As String Get Return xnum_fac End Get Set(ByVal value As String) xnum_fac = value End Set End Property Public Property cod_cli() As String Get Return xcod_cli End Get Set(ByVal value As String) xcod_cli = value End Set End Property
Public Property fecha_fac() As String Get Return xfecha_fac End Get Set(ByVal value As String) xfecha_fac = value End Set End Property
Public Property cod_tdoc() As String Get
127
Return xcod_tdoc End Get Set(ByVal value As String) xcod_tdoc = value End Set End Property Public Property cod_emp() As String Get Return xcod_emp End Get Set(ByVal value As String) xcod_emp = value End Set End Property Public Property stot_fac() As Double Get Return xstot_fac End Get Set(ByVal value As Double) xstot_fac = value End Set End Property Public Property igv_fac() As Double Get Return xigv_fac End Get Set(ByVal value As Double) xigv_fac = value End Set End Property Public Property tot_fac() As Double Get Return xtot_fac End Get Set(ByVal value As Double) xtot_fac = value End Set End Property
Sub agregar_linea(ByVal xcod As String, ByVal xprod As String, ByVal xstock As Double, ByVal xprec As Double, ByVal xcant As Integer) cn.Open() If xstock < xcant Then MsgBox("No hay suficiente Stock", MsgBoxStyle.Information, "Mensaje") Else Try Dim ximp = Math.Round(Val(xprec) * Val(xcant), 2) cmd.CommandText = "insert into DETALLE values ('" & xcod & "','" & xprod & "','" & xprec & "','" & xcant & "','" & ximp & "') " cmd.Connection = cn cmd.ExecuteNonQuery() subtotal = Math.Round(Val(xprec) * Val(xcant), 2) stot_fac = Math.Round(stot_fac + subtotal, 2) igv_fac = Math.Round(stot_fac * 0.19, 2) tot_fac = Math.Round(stot_fac + igv_fac, 2)
128
Catch ex As Exception MsgBox("No se pudo realizar la operación correctamente", MsgBoxStyle.Exclamation, "Mensaje") End Try End If cn.Close()End Sub
Sub quitar_linea(ByVal codi As String) cn.Open() Try cmd.CommandText = "delete from DETALLE where CODIGO='" & Trim(codi) & "'" cmd.Connection = cn cmd.ExecuteNonQuery() Catch ex As Exception MsgBox("No hay Productos", MsgBoxStyle.Exclamation, "Mensaje") End Try cn.Close()End Sub
Sub Guardar_(ByVal xnum_fac As String, ByVal xcod_tdoc As String, ByVal xfecha_fac As String, ByVal xcod_cli As String, ByVal xcod_emp As String, ByVal xstot_fac As Double, ByVal xigv_fac As Double, ByVal xtot_fac As Double) 'TABLA FACTURA --------------------------- cn.Open() Trycmd.CommandText = "INSERT INTO FACTURA VALUES('" & xnum_fac & "', '" & xcod_tdoc & "','" & CDate(xfecha_fac) & "','" & xcod_cli & "','" & xcod_emp & "' ,'" & xstot_fac & "','" & xigv_fac & "','" & xtot_fac & "' )" cmd.Connection = cn cmd.ExecuteNonQuery() ' cn.Close() 'TABLA DETALLE_AUXILIAR -------------------- Dim n As Integer = 0 ' cn.Open() ds.Tables.Clear() cmd.CommandText = "Select * from DETALLE" cmd.Connection = cn da.SelectCommand = cmd da.Fill(ds, "DETALLE") For n = 0 To ds.Tables("DETALLE").Rows.Count - 1 Dim codf = ds.Tables("DETALLE").Rows(n).Item(0) Dim cant = ds.Tables("DETALLE").Rows(n).Item(3) Dim importe = ds.Tables("DETALLE").Rows(n).Item(4) ' GUARDANDO TABLA DETALLE ---------------cmd.CommandText = "Insert into detalle_factura values ('" & xnum_fac & "','" & codf & "','" & Val(cant) & "','" & Val(importe) & "')" cmd.Connection = cn cmd.ExecuteNonQuery() ' ACTUALIZA STOCK ----------------------- ' ================== dt.Clear() cmd.CommandText = "SELECT STOCK FROM MEDICAMENTO WHERE cod_med= '" & codf & "'" cmd.Connection = cn
129
da.SelectCommand = cmd da.Fill(dt) Dim stock = dt.Rows(0).Item("stock") ' ===================cmd.CommandText = "UPDATE MEDICAMENTO SET STOCK='" & Val(stock) - Val(cant) & "' WHERE cod_med='" & codf & "'" cmd.Connection = cn cmd.ExecuteNonQuery() ' =================== Next '------------------------------------------------------------- MsgBox("Registro Guardado", MsgBoxStyle.Information, "Mensaje") Catch ex As Exception MsgBox("No se pudo guardar el documento, porfabor verifique sus datos", MsgBoxStyle.Critical, "E R R O R") End Try cn.Close()End Sub
Sub NUEVO() cn.Open() cmd.CommandText = "delete from DETALLE" cmd.Connection = cn cmd.ExecuteNonQuery() cn.Close()End Sub
Sub DETALLE_() Dim n As Integer = 0 cn.Open() ds.Tables.Clear() cmd.CommandText = "Select * from DETALLE" cmd.Connection = cn da.SelectCommand = cmd da.Fill(ds, "DETALLE") For n = 0 To ds.Tables("DETALLE").Rows.Count - 1 Dim codf = ds.Tables("DETALLE").Rows(n).Item(0) Dim cant = ds.Tables("DETALLE").Rows(n).Item(3) Dim importe = ds.Tables("DETALLE").Rows(n).Item(4) Next cn.Close()End Sub
CFMedicamento:CFMedicamento:
Imports INKAFARMA.CConexionImports formulario = System.Windows.FormsPublic Class CFmedicamento Inherits CConexion Private xcod As String Private xmedicam As String Private xpot As String Private xlab As String
130
Private xunimed As String Private xpres As String Public Property cod() As String Get Return xcod End Get Set(ByVal value As String) xcod = value End Set End Property Public Property medicam() As String Get Return xmedicam End Get Set(ByVal value As String) xmedicam = value End Set End Property Public Property pot() As String Get Return xpot End Get Set(ByVal value As String) xpot = value End Set End Property Public Property lab() As String Get Return xlab End Get Set(ByVal value As String) xlab = value End Set End Property Public Property unimed() As String Get Return xunimed End Get Set(ByVal value As String) xunimed = value End Set End Property Public Property pres() As String Get Return xpres End Get Set(ByVal value As String) xpres = value End Set End Property Public Sub Mostrar_() cn.Open() ds.Tables.Clear() cmd.CommandText = "VER_ARTE" cmd.Connection = cn
131
da.SelectCommand = cmd da.Fill(ds) dv = New DataView(ds.Tables(0)) cn.Close() End SubPublic Sub Guardar_(ByVal xcod As String, ByVal xmedicam As String, ByVal xpot As String, ByVal xlab As String, ByVal xunimed As String, ByVal xpres As String) cn.Open() Trycmd.CommandText = "INSERT INTO FMEDICAMENTO VALUES ('" & xcod & "','" & xmedicam & "','" & xpot & "','" & xlab & "','" & xunimed & "','" & xpres & "')" cmd.Connection = cn cmd.ExecuteNonQuery() MsgBox("Registro Guardado", MsgBoxStyle.Information, "Mensaje") Catch ex As Exception MsgBox("No se pudo guardar registro, porfabor verifique sus datos", MsgBoxStyle.Critical, "E R R O R") End Try cn.Close() End Sub Public Sub Buscar_(ByVal XCODIGO As String) cn.Open() dt.Clear() cmd.CommandText = "SELECT FMED.cod_fmed,MED.medicamento,POT.potencia,LAB.laboratorio,UMED.unidadmed,PRES.presentacion FROM MEDICAMENTO MED,POTENCIA POT,LABORATORIO LAB,UNIDADES_MEDIDA UMED,PRESENTACION PRES,FMEDICAMENTO FMED WHERE MED.cod_med=FMED.cod_med and POT.cod_pot=FMED.cod_pot and LAB.cod_lab=FMED.cod_lab and UMED.cod_unid=FMED.cod_unid AND PRES.cod_pres=FMED.cod_pres and FMED.COD_FMED= '" & XCODIGO & "' " cmd.Connection = cn da.SelectCommand = cmd da.Fill(dt) If dt.Rows.Count = 0 Then MsgBox("Codigo No Existe") Else medicam = dt.Rows(0).Item("medicamento") pot = dt.Rows(0).Item("potencia") lab = dt.Rows(0).Item("laboratorio") unimed = dt.Rows(0).Item("unidadmed") pres = dt.Rows(0).Item("presentacion") End If cn.Close() End SubPublic Sub Actualizar_(ByVal xcod As String, ByVal xmedicam As String, ByVal xpot As String, ByVal xlab As String, ByVal xunimed As String, ByVal xpres As String)cn.Open()cmd.CommandText = "update FMEDICAMENTO set cod_med='" & xmedicam & "',cod_pot='" & xpot & "',cod_lab='" & xlab & "',cod_unid='" & xunimed & "',cod_pres='" & xpres & "' where cod_fmed='" & xcod & "'" cmd.Connection = cn cmd.ExecuteNonQuery() MsgBox("Registro Modificado") cn.Close() End SubEnd Class
132
CkardekCkardek
Imports formulario = System.Windows.FormsImports INKAFARMA.CKardexPublic Class CKardex Inherits CConexion Private xcod As String Private xfecha As String Private xfmed As String Private xprecio As Decimal Private xstock As Integer Public Property cod() As String Get Return xcod End Get Set(ByVal value As String) xcod = value End Set End Property Public Property fecha() As String Get Return xfecha End Get Set(ByVal value As String) xfecha = value End Set End Property Public Property fmed() As String Get Return xfmed End Get Set(ByVal value As String) xfmed = value End Set End Property Public Property precio() As Double Get Return xprecio End Get Set(ByVal value As Double) xprecio = value End Set End Property Public Property stock() As Integer Get Return xstock End Get Set(ByVal value As Integer) xstock = value End Set End PropertyPublic Sub Guardar_(ByVal xcod As String, ByVal xfecha As String, ByVal xfmed As String, ByVal xprecio As Double, ByVal xstock As Integer)
133
cn.Open() Trycmd.CommandText = "INSERT INTO FICHA_KARDEX VALUES ('" & xcod & "','" & CDate(xfecha) & "','" & xfmed & "','" & Val(xprecio) & "','" & xstock & "')" cmd.Connection = cn cmd.ExecuteNonQuery() MsgBox("Registro Guardado", MsgBoxStyle.Information, "Mensaje") Catch ex As Exception MsgBox("No se pudo guardar registro, porfabor verifique sus datos", MsgBoxStyle.Critical, "E R R O R") End Try cn.Close() End Sub Public Sub Buscar_(ByVal XCODIGO As String) cn.Open() dt.Clear() cmd.CommandText = "SELECT * FROM FICHA_KARDEX WHERE COD_f='" & XCODIGO & "' " cmd.Connection = cn da.SelectCommand = cmd da.Fill(dt) If dt.Rows.Count = 0 Then MsgBox("Codigo No Existe") Else cod = dt.Rows(0).Item("cod_f") fecha = dt.Rows(0).Item("fecha_f") fmed = dt.Rows(0).Item("cod_fmed") precio = dt.Rows(0).Item("costo") stock = dt.Rows(0).Item("stock") End If cn.Close() End Sub
Public Sub Actualizar_(ByVal xcod As String, ByVal xfecha As String, ByVal xfmed As String, ByVal xprecio As Decimal, ByVal xstock As Integer) cn.Open() Trycmd.CommandText = "update FICHA_KARDEX set fecha_f='" & CDate(xfecha) & "',cod_fmed='" & xfmed & "',costo='" & Val(xprecio) & "',stock='" & xstock & "' where cod_f='" & xcod & "'" cmd.Connection = cn cmd.ExecuteNonQuery() MsgBox("Registro Modificado") Catch ex As Exception MsgBox("Nose pudo actualizar los datos", MsgBoxStyle.Critical, "ERROR") End Try cn.Close() End SubEnd Class
COrden_Compra:COrden_Compra:
134
Public Class COrden_compraInherits CConexion
Private xnum_ord, xcod_tdoc, xfecha_ord, xcod_prov, xcod_ealm, xobs_ord As String Private xstot_ord As Double = 0 Private xigv_ord As Double = 0 Private xtot_ord As Double = 0 Dim subtotal = 0 '-------------TABLA DETALLE -------------- Private xcod, xprod As String Private xpres, xcant, ximp As Double Private SUMT As Double = 0 Public Ostot_ord, Oigv_ord, Otot_ord As Double
Public Property num_ord() As String Get Return xnum_ord End Get Set(ByVal value As String) xnum_ord = value End Set End Property Public Property cod_tdoc() As String Get Return xcod_tdoc End Get Set(ByVal value As String) xcod_tdoc = value End Set End Property Public Property fecha_ord() As String Get Return xfecha_ord End Get Set(ByVal value As String) xfecha_ord = value End Set End Property Public Property cod_prov() As String Get Return xcod_prov End Get Set(ByVal value As String) xcod_prov = value End Set End Property Public Property cod_ealm() As String Get Return xcod_ealm End Get Set(ByVal value As String) xcod_ealm = value End Set End Property Public Property obs_ord() As String
135
Get Return xobs_ord End Get Set(ByVal value As String) xobs_ord = value End Set End Property Public Property stot_ord() As Double Get Return xstot_ord End Get Set(ByVal value As Double) xstot_ord = value End Set End Property Public Property igv_ord() As Double Get Return xigv_ord End Get Set(ByVal value As Double) xigv_ord = value End Set End Property Public Property tot_ord() As Double Get Return xtot_ord End Get Set(ByVal value As Double) xtot_ord = value End Set End Property
Sub agregar_linea(ByVal CODIGO As String, ByVal PRODUCTO As String, ByVal PRECIO As Double, ByVal CANTIDAD As Integer)cn.Open()TryDim IMPORTE = Math.Round(Val(PRECIO) * Val(CANTIDAD), 2)cmd.CommandText = "insert into DETALLE values ('" & CODIGO & "','" & PRODUCTO & "','" & PRECIO & "','" & CANTIDAD & "','" & IMPORTE & "') " cmd.Connection = cn cmd.ExecuteNonQuery() subtotal = Math.Round((PRECIO * CANTIDAD), 2) stot_ord = Math.Round(stot_ord + subtotal, 2) igv_ord = Math.Round(stot_ord * 0.19, 2) tot_ord = Math.Round(stot_ord + igv_ord, 2)Catch ex As ExceptionMsgBox("Verificar datos, vuelva a intentarlo ", MsgBoxStyle.Critical, "ERROR") End Try cn.Close()End Sub
Sub Quitar_Linea(ByVal codi As String)cn.Open()Try
136
cmd.CommandText = "delete from DETALLE where CODIGO='" & Trim(codi) & "'" cmd.Connection = cn cmd.ExecuteNonQuery() 'CALCULOS_ Catch ex As ExceptionMsgBox("Verificar datos, vuelva a intentarlo ", MsgBoxStyle.Critical, "ERROR")End Trycn.Close()End Sub
Sub Guardar_(ByVal xnum_ord As String, ByVal xcod_tdoc As String, ByVal xfecha_ord As String, ByVal xcod_prov As String, ByVal xcod_ealm As String, ByVal xobs_ord As String, ByVal xstot_ord As Double, ByVal xigv_ord As Double, ByVal xtot_ord As Double)'TABLA FACTURA --------------------cn.Open()Trycmd.CommandText = "INSERT INTO ORDEN_COMPRA VALUES('" & xnum_ord & "', '" & xcod_tdoc & "','" & CDate(xfecha_ord) & "','" & xcod_prov & "','" & xcod_ealm & "' ,'" & xobs_ord & "' ,'" & xstot_ord & "','" & Val(xigv_ord) & "','" & Val(xtot_ord) & "' )" cmd.Connection = cn cmd.ExecuteNonQuery() cn.Close() 'TABLA DETALLE --------------------- Dim n As Integer = 0 cn.Open() ds.Tables.Clear() cmd.CommandText = "Select * from DETALLE" cmd.Connection = cn da.SelectCommand = cmd da.Fill(ds, "DETALLE")For n = 0 To ds.Tables("DETALLE").Rows.Count - 1 Dim codf = ds.Tables("DETALLE").Rows(n).Item(0) Dim cant = ds.Tables("DETALLE").Rows(n).Item(3) Dim importe = ds.Tables("DETALLE").Rows(n).Item(4) '-------------------------------------------------cmd.CommandText = "Insert into detalle_ocompra values ('" & xnum_ord & "','" & codf & "','" & Val(cant) & "','" & Val(importe) & "')" cmd.Connection = cn cmd.ExecuteNonQuery()Next
'-------------------------------------------------------------MsgBox("Registro Guardado", MsgBoxStyle.Information, "Mensaje")Catch ex As ExceptionMsgBox("No se pudo guardar registro, porfabor verifique sus datos", MsgBoxStyle.Critical, "E R R O R")End Trycn.Close()End Sub
Sub NUEVO() cn.Open() cmd.CommandText = "delete from DETALLE" cmd.Connection = cn cmd.ExecuteNonQuery() cn.Close()
137
End SubEnd Class
CTDocumento:CTDocumento:
Imports formulario = System.Windows.FormsPublic Class CTDocumento Inherits CConexion
Private xcod_tdoc As String PUBLIC xdocumento As String
Public Property cod_tdoc() As String Get Return xcod_tdoc End Get Set(ByVal value As String) xcod_tdoc = value End SetEnd PropertyPublic Property documento() As String Get Return xdocumento End Get Set(ByVal value As String) xdocumento = value End SetEnd Property
Public Sub Guardar_(ByVal xcod_tdoc As String, ByVal xdocumento As String)cn.Open()Trycmd.CommandText = "INSERT INTO TDOCUMENTO VALUES ('" & xcod_tdoc & "','" & xdocumento & "')" cmd.Connection = cn cmd.ExecuteNonQuery() MsgBox("Registro Guardado", MsgBoxStyle.Information, "Mensaje")Catch ex As ExceptionMsgBox("No se pudo guardar registro, porfabor verifique sus datos", MsgBoxStyle.Critical, "E R R O R") End Try cn.Close()End Sub
Public Sub Buscar_(ByVal xcod_tdoc As String)cn.Open()dt.Clear()cmd.CommandText = "SELECT * FROM TDOCUMENTO WHERE COD_TDOC='" & xcod_tdoc & "' OR DOCUMENTO='" & xcod_tdoc & "'" cmd.Connection = cn da.SelectCommand = cmd da.Fill(dt) If dt.Rows.Count = 0 Then MsgBox("Codigo No Existe")
138
Else cod_tdoc = dt.Rows(0).Item("cod_tdoc") documento = dt.Rows(0).Item("documento") End If cn.Close()End Sub
Public Sub Actualizar_(ByVal xcod_tdoc As String, ByVal xdocumento As String)cn.Open()cmd.CommandText = "UPDATE TDOCUMENTO SET documento='" & xdocumento & "'where cod_tdoc='" & xcod_tdoc & "'" cmd.Connection = cn cmd.ExecuteNonQuery() MsgBox("Registro Modificado") cn.Close()End SubEnd Class
Las otras clases deberán ser elaboradas por Ud.Las otras clases deberán ser elaboradas por Ud.
REUTILIZABLESREUTILIZABLES
RBUSCARRBUSCAR
Imports formulario = System.Windows.FormsPublic Class RBuscar Inherits CConexion Sub BUSCAR_(ByVal SQL As String) cn.Open() dt.Clear() cmd.CommandText = SQL cmd.Connection = cn da.SelectCommand = cmd da.Fill(dt) If dt.Rows.Count = 0 Then MsgBox("Codigo No Existe") Else ' cod_ealm = dt.Rows(0).Item("cod_ealm") End If cn.Close() End SubEnd Class
RCODIGORCODIGO
Imports formulario = System.Windows.FormsPublic Class RCodigo Inherits CConexion Private XCODIGO As StringPublic Property CODIGO() As String Get
139
Return XCODIGO End Get Set(ByVal value As String) XCODIGO = value End SetEnd PropertyPublic Sub GCodigo(ByVal campo As String, ByVal tabla As String, ByVal ini As String) cn.Open() dt.Clear() cmd.CommandText = "SELECT DISTINCT " + "MAX" + "(" + campo + ")" + " as xx " + " FROM " + tabla cmd.Connection = cn da.SelectCommand = cmd da.Fill(dt) Dim cod cod = Right(dt.Rows(0).Item("XX"), 5) XCODIGO = ini + Right("00000" + Right(Int(cod) + 1, 5), 5) cn.Close() End SubEnd Class
RCOMBORCOMBO
Imports formulario = System.Windows.FormsPublic Class RCombo Inherits CConexionPublic Sub CCombo(ByVal C As formulario.ComboBox, ByVal campo As String, ByVal tabla As String) Dim n As Integer C.Items.Clear() ds.Tables.Clear() cn.Open() cmd.CommandText = "SELECT DISTINCT " + campo + " FROM " + tabla cmd.Connection = cn da.SelectCommand = cmd da.Fill(ds, "XXX") For n = 0 To ds.Tables("XXX").Rows.Count - 1 C.Items.Add(ds.Tables("XXX").Rows(n).Item(0)) Next cn.Close() End SubEnd Class
RELIMINARRELIMINAR
Public Class REliminar Inherits CConexionPublic Sub Eliminar(ByVal campo As String, ByVal tabla As String, ByVal XCODIGO As String) cn.Open() Try cmd.CommandText = "DELETE FROM " & tabla & " WHERE " & campo & "=" & XCODIGO cmd.Connection = cn cmd.ExecuteNonQuery() MsgBox("Registro Eliminado", MsgBoxStyle.Information, "Mensaje")
140
Catch ex As Exception MsgBox("No se pudo eliminar registro, porfabor verifique sus datos", MsgBoxStyle.Critical, "E R R O R") End Try cn.Close() End SubEnd Class
RMOSTRARRMOSTRAR
Imports INKAFARMA.RMostrarImports formulario = System.Windows.FormsPublic Class RMostrar Inherits CConexionPublic Sub Mostrar_(ByVal GV As formulario.DataGridView, ByVal campo As String, ByVal tabla As String) cn.Open() ds.Tables.Clear() cmd.CommandText = "SELECT DISTINCT " + campo + " FROM " + tabla cmd.Connection = cn da.SelectCommand = cmd da.Fill(ds) dv = New DataView(ds.Tables(0)) GV.DataSource = dv cn.Close() End SubEnd Class
RNUEVORNUEVO
Public Class RNuevo Inherits CConexion Public Sub BLANCO(ByVal ff As Form) Dim ctrl As Object For Each ctrl In ff.Controls If TypeOf ctrl Is TextBox Then ctrl.Text = "" End If If TypeOf ctrl Is ComboBox Then ctrl.Text = "" End If Next End Sub End Class
141
FORMULARIOSFORMULARIOS
Public Class ACCESO
Dim USU As New INKAFARMA.CUsuario
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.Close()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button1.Click
Dim MENU As New MENU_INKAFARMA
Dim ACCESO As New ACCESO
'USU.validar_(TextBox1.Text, TextBox2.Text)
If TextBox1.Text = "ARTESANO" And TextBox2.Text = "123456" Then
MENU.Show()
Me.Hide()
Else
MsgBox("Usuario o Password incorrecto", MsgBoxStyle.Critical, "Mensaje")
142
End If
End Sub
Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button2.Click
Me.Close()
End Sub
End Class
Crear la ventana principal: Crear la ventana principal: (Menu_InkaFarma)(Menu_InkaFarma)
Las Sub Alternativas que conforman son:Las Sub Alternativas que conforman son:
TablasTablas :: PaísPaís KardekKardek :: Ficha Control KardekFicha Control Kardek
ClienteCliente
ProveedorProveedor
EmpleadoEmpleado
MedidaMedida
Ficha ArtesaníaFicha Artesanía
Tipo de DocumentoTipo de Documento
ArtesaníaArtesanía
PresentaciónPresentación
VentaVenta :: FacturaFactura CompraCompra :: Orden Orden
CompraCompra
143
ReporteReporte :: FacturaFactura
Crear la Ventana para el mantenimiento de los Clientes: Crear la Ventana para el mantenimiento de los Clientes: (Cliente.vb)(Cliente.vb)
Public Class CLIENTE
Dim RMOSTRAR As New INKAFARMA.RMostrar
Dim RNUEVO As New INKAFARMA.RNuevo
Dim RCODIGO As New INKAFARMA.RCodigo
Dim RCOMBO As New INKAFARMA.RCombo
Dim RELIMINAR As New INKAFARMA.REliminar
Dim CLI As New INKAFARMA.CCliente
Dim DIS As New INKAFARMA.CDistrito
Dim DISTRITO As String
Dim ESTADO As String
Sub MOSTRAR()
144
RMOSTRAR.Mostrar_(DataGridView1, "CLI.cod_cli,CLI.apnom_cli,DIS.distrito", "CLIENTE
CLI,DISTRITO DIS where DIS.cod_dis=CLI.cod_dis")
With DataGridView1
.Columns(0).HeaderText = "Código"
.Columns(0).Width = 60
.Columns(1).HeaderText = "Cliente"
.Columns(1).Width = 280
.Columns(2).HeaderText = "Distrito"
.Columns(2).Width = 180
End With
End Sub
Private Sub CLIENTE_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load
RCOMBO.CCombo(ComboBox1, "distrito", "DISTRITO")
Call MOSTRAR()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button1.Click
CLI.Buscar_(TextBox1.Text)
TextBox2.Text = CLI.pat_cli
TextBox3.Text = CLI.mat_cli
TextBox4.Text = CLI.nom_cli
ComboBox1.Text = CLI.cod_dis
TextBox5.Text = CLI.dir_cli
TextBox6.Text = CLI.telef_cli
If CLI.tipo_cli = "NATURAL" Then RadioButton1.Checked = True
If CLI.tipo_cli = "JURIDICO" Then RadioButton2.Checked = True
TextBox7.Text = CLI.ruc_cli
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button2.Click
RNUEVO.BLANCO(Me)
RCODIGO.GCodigo("cod_cli", "CLIENTE", "")
145
TextBox1.Text = RCODIGO.CODIGO
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button5.Click
RELIMINAR.Eliminar("cod_cli", "CLIENTE", TextBox1.Text)
Call MOSTRAR()
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button3.Click
Dim APNOM = TextBox2.Text & " " & TextBox3.Text & ", " & TextBox4.Text
If RadioButton1.Checked = True Then ESTADO = "NATURAL"
If RadioButton2.Checked = True Then ESTADO = "JURIDICO"
CLI.Guardar_(TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text, APNOM,
DISTRITO, TextBox5.Text, TextBox6.Text, ESTADO, TextBox7.Text)
Call MOSTRAR()
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ComboBox1.SelectedIndexChanged
DIS.Buscar_(ComboBox1.Text)
DISTRITO = DIS.cod_dis
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button4.Click
Dim APNOM = TextBox2.Text & " " & TextBox3.Text & ", " & TextBox4.Text
If RadioButton1.Checked = True Then ESTADO = "NATURAL"
If RadioButton2.Checked = True Then ESTADO = "JURIDICO"
CLI.Actualizar_(TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text, APNOM,
DISTRITO, TextBox5.Text, TextBox6.Text, ESTADO, TextBox7.Text)
Call MOSTRAR()
End Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button6.Click
146
Me.Close()
End Sub
Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles RadioButton2.CheckedChanged
If RadioButton2.Checked = True Then
TextBox7.Enabled = True
End If
End Sub
Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles RadioButton1.CheckedChanged
If RadioButton1.Checked = True Then
TextBox7.Enabled = False
TextBox7.Text = ""
End If
End Sub
End Class
CONSULTA_FACTURACONSULTA_FACTURA
Public Class COSULTA_FACTURA
Dim RMOSTRAR As New INKAFARMA.RMostrar
147
Dim RCOMBO As New INKAFARMA.RCombo
Dim RBUSCAR As New INKAFARMA.RBuscar
Dim RCODIGO As New INKAFARMA.RCodigo
Dim DISTRITO As String
Sub MOSTRAR()
with datagridview1
.columns(0).headertext = "numero"
.columns(0).width = 60
.columns(1).headertext = "fecha"
.columns(1).width = 70
.columns(2).headertext = "cliente"
.columns(2).width = 250
.columns(3).headertext = "empleado"
.columns(3).width = 250
.columns(4).headertext = "total"
.columns(4).width = 60
end with
End Sub
Private Sub COSULTA_FACTURA_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
rcombo.ccombo(combobox1, "apnom_cli", "cliente")
rmostrar.mostrar_(datagridview1, "fac.num_fac,fac.fecha_fac,cli.apnom_cli,emp.apnom_emp,
fac.tot_fac", "factura fac,cliente cli,empleado emp where cli.cod_cli=fac.cod_cli and
emp.cod_emp=fac.cod_emp")
call mostrar()
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ComboBox1.SelectedIndexChanged
148
rmostrar.mostrar_(datagridview1, "fac.num_fac,fac.fecha_fac,cli.apnom_cli,emp.apnom_emp,
fac.tot_fac", "factura fac,cliente cli,empleado emp where cli.cod_cli=fac.cod_cli and
emp.cod_emp=fac.cod_emp and cli.apnom_cli= '" & combobox1.text & "'")
call mostrar()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button1.Click
RMOSTRAR.Mostrar_(DataGridView1, "fac.num_fac,fac.fecha_fac ,cli.apnom_cli,emp.apnom_emp,
fac.tot_fac", "factura fac,cliente cli,empleado emp where cli.cod_cli=fac.cod_cl and
emp.cod_emp=fac.cod_emp and fac.fecha_fac between '" & cdate(datetimepicker1.text) & "'
and '" & cdate(datetimepicker2.text) & "'")
call mostrar()
End Sub
End Class
149
Mantenimiento de PAISMantenimiento de PAIS
Public Class DISTRITO
Dim RMOSTRAR As New INKAFARMA.RMostrar
Dim RNUEVO As New INKAFARMA.RNuevo
Dim RCODIGO As New INKAFARMA.RCodigo
Dim RELIMINAR As New INKAFARMA.REliminar
Dim DIS As New INKAFARMA.CDistrito
Sub MOSTRAR()
RMOSTRAR.Mostrar_(DataGridView1, "cod_dis,distrito", "DISTRITO")
End Sub
Private Sub DISTRITO_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load
Call MOSTRAR()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button2.Click
RNUEVO.BLANCO(Me)
RCODIGO.GCodigo("cod_dis", "DISTRITO", "")
TextBox1.Text = RCODIGO.CODIGO
150
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button3.Click
DIS.Guardar_(TextBox1.Text, TextBox2.Text)
Call MOSTRAR()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button1.Click
DIS.Buscar_(TextBox1.Text)
TextBox2.Text = DIS.distrito
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button4.Click
DIS.Actualizar_(TextBox1.Text, TextBox2.Text)
Call MOSTRAR()
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button5.Click
RELIMINAR.Eliminar("cod_dis", "DISTRITO", TextBox1.Text)
Call MOSTRAR()
End Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button6.Click
Me.Close()
End Sub
End Class
151
Mantenimiento de la Tabla EMPLEADOMantenimiento de la Tabla EMPLEADO
Public Class EMPLEADO
Dim RMOSTRAR As New INKAFARMA.RMostrar
Dim RNUEVO As New INKAFARMA.RNuevo
Dim RCODIGO As New INKAFARMA.RCodigo
Dim RCOMBO As New INKAFARMA.RCombo
Dim RELIMINAR As New INKAFARMA.REliminar
Dim EMPL As New INKAFARMA.CEmpleado
Dim DIS As New INKAFARMA.CDistrito
Dim DISTRITO As String
Sub MOSTRAR()
RMOSTRAR.Mostrar_(DataGridView1, "EMP.cod_emp,EMP.apnom_emp,DIS.distrito",
"EMPLEADO EMP,DISTRITO DIS where DIS.cod_dis=EMP.cod_dis")
End Sub
Private Sub EMPLEADO_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load
RCOMBO.CCombo(ComboBox1, "distrito", "DISTRITO")
152
Call MOSTRAR()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button1.Click
EMPL.Buscar_(TextBox1.Text)
TextBox2.Text = EMPL.pat_emp
TextBox3.Text = EMPL.mat_emp
TextBox4.Text = EMPL.nom_emp
ComboBox1.Text = EMPL.cod_dis
TextBox5.Text = EMPL.dir_emp
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button2.Click
RNUEVO.BLANCO(Me)
RCODIGO.GCodigo("cod_emp", "EMPLEADO", "")
TextBox1.Text = RCODIGO.CODIGO
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button3.Click
Dim APNOM = TextBox2.Text & " " & TextBox3.Text & ", " & TextBox4.Text
EMPL.Guardar_(TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text, APNOM,
DISTRITO, TextBox5.Text)
Call MOSTRAR()
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button4.Click
Dim APNOM = TextBox2.Text & " " & TextBox3.Text & ", " & TextBox4.Text
EMPL.Actualizar_(TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text, APNOM,
DISTRITO, TextBox5.Text)
Call MOSTRAR()
End Sub
153
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button5.Click
RELIMINAR.Eliminar("cod_emp", "EMPLEADO", TextBox1.Text)
Call MOSTRAR()
End Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button6.Click
Me.Close()
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ComboBox1.SelectedIndexChanged
DIS.Buscar_(ComboBox1.Text)
DISTRITO = DIS.cod_dis
End Sub
End Class
Crear la ventana deCrear la ventana de FACTURACION:FACTURACION:
154
Imports System.Data
Imports System.Data.SqlClient
Public Class FACTURA
'-------------------------
Public cn As New SqlConnection("Developers\SQLExpress;Initial
Catalog=Hospital;uid=sa;pwd=")
Public cmd As New SqlCommand
Public da As New SqlDataAdapter
Public ds As New DataSet
Public dt As New DataTable
Public dv As New DataView
Public dr As SqlDataReader
'-------------------------
Dim FAC As New INKAFARMA.CFactura
Dim FMED As New INKAFARMA.CFmedicamento
Dim MED As New INKAFARMA.CMedicamento
Dim TDOC As New INKAFARMA.CTDocumento
Dim CLI As New INKAFARMA.CCliente
Dim EMP As New INKAFARMA.CEmpleado
Dim KARDEX As New INKAFARMA.CKardex
Dim NU As New INKAFARMA.RNuevo
Dim RGCOD As New INKAFARMA.RCodigo
Dim RELIM As New INKAFARMA.REliminar
Dim RMOS As New INKAFARMA.RMostrar
Dim RCB As New INKAFARMA.RCombo
'Dim hh As New Excel.Application
Dim XCOD_TDOC As String
Dim XCOD_CLI As String
Dim XCOD_EMP As String
Sub VER()
RMOS.Mostrar_(DataGridView1, "CODIGO,PRODUCTO,PRECIO,CANTIDAD,IMPORTE",
"DETALLE")
With DataGridView1
155
.Columns(0).HeaderText = "Codigo"
.Columns(0).Width = 60
.Columns(1).HeaderText = "Producto"
.Columns(1).Width = 255
.Columns(2).HeaderText = "Precio"
.Columns(2).Width = 70
.Columns(3).HeaderText = "Cantidad"
.Columns(3).Width = 70
.Columns(4).HeaderText = "Importe"
.Columns(4).Width = 70
End With
End Sub
Private Sub FACTURA_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load
RCB.CCombo(ComboBox1, "documento", "TDOCUMENTO")
RCB.CCombo(ComboBox2, "apnom_cli", "CLIENTE")
RCB.CCombo(ComboBox3, "medicamento", "medicamento")
RCB.CCombo(ComboBox4, "apnom_emp", "EMPLEADO")
TextBox7.Text = Format(Val(0), "###,###,##0.00")
TextBox8.Text = Format(Val(0), "###,###,##0.00")
TextBox9.Text = Format(Val(0), "###,###,##0.00")
Call VER()
End Sub
Private Sub ComboBox3_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs)
KARDEX.Buscar_(ComboBox3.Text)
TextBox3.Text = KARDEX.precio
TextBox4.Text = KARDEX.stock
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button4.Click
156
If TextBox1.Text = "" Or ComboBox1.Text = "" Or ComboBox2.Text = "" Or ComboBox4.Text =
"" Then
MsgBox("Datos Incompletos", MsgBoxStyle.Information, "MENSAJE")
Else
FAC.Guardar_(TextBox1.Text, XCOD_TDOC, DateTimePicker1.Text, XCOD_CLI,
XCOD_EMP, Val(TextBox7.Text), Val(TextBox8.Text), Val(TextBox9.Text))
Call VER()
End If
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button3.Click
NU.BLANCO(Me)
RGCOD.GCodigo("num_fac", "FACTURA", "000")
TextBox1.Text = RGCOD.CODIGO
TextBox7.Text = Format(Val(0), "###,###,##0.00")
TextBox8.Text = Format(Val(0), "###,###,##0.00")
TextBox9.Text = Format(Val(0), "###,###,##0.00")
FAC.NUEVO()
Call VER()
ComboBox1.Text = ""
ComboBox2.Text = ""
ComboBox3.Text = ""
ComboBox4.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox6.Text = ""
TextBox10.Text = ""
TextBox11.Text = ""
TextBox12.Text = ""
End Sub
Private Sub ComboBox3_SelectedIndexChanged_1(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ComboBox3.SelectedIndexChanged
MED.Buscar_(ComboBox3.Text)
157
TextBox3.Text = Math.Round(MED.precio, 2)
TextBox4.Text = MED.stock
End Sub
Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button1.Click
If TextBox6.Text = "" Then
MsgBox("Datos Incompletos", MsgBoxStyle.Information, "MENSAJE")
Else
MED.Buscar_(ComboBox3.Text)
Dim XX = MED.cod
FAC.agregar_linea(XX, ComboBox3.Text, Val(TextBox4.Text), Val(TextBox3.Text),
Val(TextBox6.Text))
TextBox7.Text = Format(Val(FAC.stot_fac), "###,###,##0.00")
TextBox8.Text = Format(Val(FAC.igv_fac), "###,###,##0.00")
TextBox9.Text = Format(Val(FAC.tot_fac), "###,###,##0.00")
Call VER()
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button2.Click
Dim aa As String
Try
aa = DataGridView1.CurrentCell.Value
FAC.quitar_linea(aa)
Catch ex As Exception
MsgBox("No hay Productos", MsgBoxStyle.Exclamation, "Mensaje")
End Try
Call VER()
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ComboBox1.SelectedIndexChanged
TDOC.Buscar_(ComboBox1.Text)
158
XCOD_TDOC = TDOC.cod_tdoc
End Sub
Private Sub ComboBox2_SelectedIndexChanged_1(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ComboBox2.SelectedIndexChanged
CLI.Buscar_(ComboBox2.Text)
XCOD_CLI = CLI.cod_cli
TextBox10.Text = CLI.ruc_cli
TextBox11.Text = CLI.dir_cli
TextBox12.Text = CLI.telef_cli
End Sub
Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button8.Click
Me.Close()
End Sub
Private Sub ComboBox4_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ComboBox4.SelectedIndexChanged
EMP.Buscar_(ComboBox4.Text)
XCOD_EMP = EMP.cod_emp
End Sub
Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As
System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
Dim aa As String
Try
aa = DataGridView1.CurrentCell.Value
FAC.quitar_linea(aa)
Catch ex As Exception
MsgBox("No hay Productos", MsgBoxStyle.Exclamation, "Mensaje")
End Try
Call VER()
End Sub
End Class
159
Crear la ventana de KARDEKCrear la ventana de KARDEK
Imports INKAFARMA.FKARDEX
Public Class FKARDEX
Dim RMOSTRAR As New INKAFARMA.RMostrar
Dim RNUEVO As New INKAFARMA.RNuevo
Dim RCODIGO As New INKAFARMA.RCodigo
Dim RCOMBO As New INKAFARMA.RCombo
Dim RELIMINAR As New INKAFARMA.REliminar
Dim FMED As New INKAFARMA.CFmedicamento
Dim KARDEX As New INKAFARMA.CKardex
Dim CDIS As String
Sub MOSTRAR()
RMOSTRAR.Mostrar_(DataGridView1, "cod_f,fecha_f,costo,stock", "FICHA_KARDEX")
End Sub
160
Private Sub control_kardex_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load
RCOMBO.CCombo(ComboBox1, "cod_fmed", "FMEDICAMENTO")
Call MOSTRAR()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button2.Click
RNUEVO.BLANCO(Me)
RNUEVO.BLANCO(Me)
RNUEVO.BLANCO(Me)
RCODIGO.GCodigo("cod_f", "FICHA_KARDEX", "")
TextBox1.Text = RCODIGO.CODIGO
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button3.Click
KARDEX.Guardar_(TextBox1.Text, DateTimePicker1.Text, ComboBox1.Text, TextBox3.Text,
TextBox7.Text)
Call MOSTRAR()
End Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button6.Click
Me.Close()
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button5.Click
RELIMINAR.Eliminar("cod_f", "FICHA_KARDEX", TextBox1.Text)
Call MOSTRAR()
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ComboBox1.SelectedIndexChanged
FMED.Buscar_(ComboBox1.Text)
TextBox2.Text = FMED.medicam
161
'TextBox3.Text = FMED.lab
TextBox4.Text = FMED.pres
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button1.Click
KARDEX.Buscar_(TextBox1.Text)
DateTimePicker1.Text = KARDEX.fecha
ComboBox1.Text = KARDEX.fmed
FMED.Buscar_(ComboBox1.Text)
TextBox2.Text = FMED.medicam
' TextBox3.Text = FMED.lab
TextBox4.Text = FMED.pres
TextBox3.Text = KARDEX.precio
TextBox7.Text = KARDEX.stock
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button4.Click
KARDEX.Actualizar_(TextBox1.Text, DateTimePicker1.Text, ComboBox1.Text, TextBox3.Text,
TextBox7.Text)
Call MOSTRAR()
End Sub
End Class
TAREA: TAREA:
Crear los Siguientes Mantenimientos:Crear los Siguientes Mantenimientos:
LaboratorioLaboratorio
162
ArtesaníaArtesanía
MedidaMedida
PresentaciónPresentación
163
TipoTipo
DocumentoDocumento
ProveedorProveedor
Orden de CompraOrden de Compra
164
Public Class ORDEN_COMPRA
Dim ORD As New INKAFARMA.COrden_compra
Dim FMED As New INKAFARMA.CFmedicamento
Dim TDOC As New INKAFARMA.CTDocumento
Dim PROV As New INKAFARMA.CProveedor
Dim EAL As New INKAFARMA.CEAlmacen
Dim KARDEX As New INKAFARMA.CKardex
165
Dim NU As New INKAFARMA.RNuevo
Dim RGCOD As New INKAFARMA.RCodigo
Dim RELIM As New INKAFARMA.REliminar
Dim RMOS As New INKAFARMA.RMostrar
Dim RCB As New INKAFARMA.RCombo
'Dim hh As New Excel.Application
Dim XCOD_TDOC As String
Dim XCOD_PROV As String
Dim XCOD_EALM As String
Sub MOSTRAR()
RMOS.Mostrar_(DataGridView1, "CODIGO,PRODUCTO,PRECIO,CANTIDAD,IMPORTE",
"DETALLE")
With DataGridView1
.Columns(0).HeaderText = "Codigo"
.Columns(0).Width = 60
.Columns(1).HeaderText = "Producto"
.Columns(1).Width = 255
.Columns(2).HeaderText = "Precio"
.Columns(2).Width = 70
.Columns(3).HeaderText = "Cantidad"
.Columns(3).Width = 70
.Columns(4).HeaderText = "Importe"
.Columns(4).Width = 70
End With
End Sub
Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ComboBox2.SelectedIndexChanged
PROV.Buscar_(ComboBox2.Text)
XCOD_PROV = PROV.cod
TextBox10.Text = PROV.ruc
TextBox11.Text = PROV.dir
TextBox12.Text = PROV.telef
166
End Sub
Private Sub ORDEN_COMPRA_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
RCB.CCombo(ComboBox1, "documento", "TDOCUMENTO")
RCB.CCombo(ComboBox2, "proveedor", "PROVEEDOR")
RCB.CCombo(ComboBox3, "cod_f", "FICHA_KARDEX")
RCB.CCombo(ComboBox4, "apnom_ealm", "EALMACEN")
Call MOSTRAR()
End Sub
Private Sub ComboBox3_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ComboBox3.SelectedIndexChanged
KARDEX.Buscar_(ComboBox3.Text)
TextBox3.Text = KARDEX.precio
TextBox4.Text = KARDEX.stock
FMED.Buscar_(KARDEX.fmed)
TextBox2.Text = FMED.XCOD_
TextBox5.Text = FMED.pres
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button3.Click
NU.BLANCO(Me)
RGCOD.GCodigo("num_ord", "ORDEN_COMPRA", "000")
TextBox1.Text = RGCOD.CODIGO
TextBox7.Text = Format(Val(0), "###,###,##0.00")
TextBox8.Text = Format(Val(0), "###,###,##0.00")
TextBox9.Text = Format(Val(0), "###,###,##0.00")
Call MOSTRAR()
End Sub
Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button8.Click
Me.Close()
End Sub
167
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button1.Click
If TextBox3.Text = "" Or TextBox6.Text = "" Then
MsgBox("Datos Incompletos", MsgBoxStyle.Information, "MENSAJE")
Else
ORD.agregar_linea(ComboBox3.Text, TextBox2.Text, Val(TextBox3.Text),
Val(TextBox6.Text))
TextBox7.Text = Format(Val(ORD.stot_ord), "###,###,##0.00")
TextBox8.Text = Format(Val(ORD.igv_ord), "###,###,##0.00")
TextBox9.Text = Format(Val(ORD.tot_ord), "###,###,##0.00")
Call MOSTRAR()
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button2.Click
Dim aa As String
Try
aa = DataGridView1.CurrentCell.Value
ORD.quitar_linea(aa)
TextBox7.Text = Format(Val(ORD.Ostot_ord), "###,###,##0.00")
TextBox8.Text = Format(Val(ORD.Oigv_ord), "###,###,##0.00")
TextBox9.Text = Format(Val(ORD.Otot_ord), "###,###,##0.00")
Catch ex As Exception
MsgBox("No hay Productos", MsgBoxStyle.Exclamation, "Mensaje")
End Try
Call MOSTRAR()
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button4.Click
If TextBox1.Text = "" Or ComboBox1.Text = "" Or ComboBox2.Text = "" Or
ComboBox4.Text = "" Then
MsgBox("Datos Incompletos", MsgBoxStyle.Information, "MENSAJE")
168
Else
ORD.Guardar_(TextBox1.Text, XCOD_TDOC, DateTimePicker1.Text, XCOD_PROV,
XCOD_EALM, TextBox13.Text, Val(TextBox7.Text), Val(TextBox8.Text), Val(TextBox9.Text))
MOSTRAR()
End If
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ComboBox1.SelectedIndexChanged
TDOC.Buscar_(ComboBox1.Text)
XCOD_TDOC = TDOC.cod_tdoc
End Sub
Private Sub GroupBox3_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
GroupBox3.Enter
End Sub
Private Sub ComboBox4_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ComboBox4.SelectedIndexChanged
EAL.Buscar_(ComboBox4.Text)
XCOD_EALM = EAL.cod_ealm
End Sub
End Class
169