210
1

ManualVisualStudio2008 II

Embed Size (px)

DESCRIPTION

Manual Visual

Citation preview

Page 1: ManualVisualStudio2008 II

1

Page 2: ManualVisualStudio2008 II

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

Page 3: ManualVisualStudio2008 II

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

Page 4: ManualVisualStudio2008 II

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

Page 5: ManualVisualStudio2008 II

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

Page 6: ManualVisualStudio2008 II

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

Page 7: ManualVisualStudio2008 II

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

Page 8: ManualVisualStudio2008 II

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

Page 9: ManualVisualStudio2008 II

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

Page 10: ManualVisualStudio2008 II

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

Page 11: ManualVisualStudio2008 II

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

Page 12: ManualVisualStudio2008 II

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

Page 13: ManualVisualStudio2008 II

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

Page 14: ManualVisualStudio2008 II

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

Page 15: ManualVisualStudio2008 II

De donde podremos seleccionar la tabla(s) y colocar los criterios de condición para el

funcionamiento de las mismas.

15

Page 16: ManualVisualStudio2008 II

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

Page 17: ManualVisualStudio2008 II

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

Page 18: ManualVisualStudio2008 II

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

Page 19: ManualVisualStudio2008 II

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

Page 20: ManualVisualStudio2008 II

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

Page 21: ManualVisualStudio2008 II

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

Page 22: ManualVisualStudio2008 II

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

Page 23: ManualVisualStudio2008 II

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

Page 24: ManualVisualStudio2008 II

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

Page 25: ManualVisualStudio2008 II

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

Page 26: ManualVisualStudio2008 II

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

Page 27: ManualVisualStudio2008 II

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

Page 28: ManualVisualStudio2008 II

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

Page 29: ManualVisualStudio2008 II

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

Page 30: ManualVisualStudio2008 II

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

Page 31: ManualVisualStudio2008 II

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

Page 32: ManualVisualStudio2008 II

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

Page 33: ManualVisualStudio2008 II

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

Page 34: ManualVisualStudio2008 II

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

Page 35: ManualVisualStudio2008 II

SESIÓN II

GENERACION DE OBJETOS II

CONTENIDO

Objeto SQLDataReader

Objeto DataSet

Objeto DataView

LABORATORIO

35

Page 36: ManualVisualStudio2008 II

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

Page 37: ManualVisualStudio2008 II

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

Page 38: ManualVisualStudio2008 II

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

Page 39: ManualVisualStudio2008 II

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

Page 40: ManualVisualStudio2008 II

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

Page 41: ManualVisualStudio2008 II

SESIÓN III

LABORATORIOS RESUELTOS

CONTENIDO

Resumen de los temas tratados, laboratorios para reforzar lo aprendido

Laboratorio1

Laboratorio2

Laboratorio3

Laboratorio4

Laboratorio5

Laboratorio6

41

Page 42: ManualVisualStudio2008 II

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

Page 43: ManualVisualStudio2008 II

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

Page 44: ManualVisualStudio2008 II

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

Page 45: ManualVisualStudio2008 II

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

Page 46: ManualVisualStudio2008 II

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

Page 47: ManualVisualStudio2008 II

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

Page 48: ManualVisualStudio2008 II

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

Page 49: ManualVisualStudio2008 II

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

Page 50: ManualVisualStudio2008 II

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

Page 51: ManualVisualStudio2008 II

'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

Page 52: ManualVisualStudio2008 II

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

Page 53: ManualVisualStudio2008 II

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

Page 54: ManualVisualStudio2008 II

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

Page 55: ManualVisualStudio2008 II

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

Page 56: ManualVisualStudio2008 II

'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

Page 57: ManualVisualStudio2008 II

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

Page 58: ManualVisualStudio2008 II

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

Page 59: ManualVisualStudio2008 II

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

Page 60: ManualVisualStudio2008 II

'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

Page 61: ManualVisualStudio2008 II

SESIÓN IV

TRABAJO CON CRYSTAL REPORT

CONTENIDO

Reporte Simple ( Usando una tabla )

Reporte Compuesto ( Usando Tablas Relacionadas )

Reporte Con Procedure

61

Page 62: ManualVisualStudio2008 II

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

Page 63: ManualVisualStudio2008 II

6. Se visualiza la siguiente pantalla:

7. Se visualiza la siguiente pantalla:

a. Usar Asistente de Informes

b. Estandarc. Aceptar

63

Page 64: ManualVisualStudio2008 II

8. Se visualiza la siguiente pantalla:

a. Seleccionamos Crear Nueva Conexion

9. Se visualiza lo siguiente:

i. Aperturo OLE DB

ADO

64

Page 65: ManualVisualStudio2008 II

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)

Page 66: ManualVisualStudio2008 II

11. Se visualiza la siguiente pantalla:

12. Se visualiza la siguiente pantalla:

66

Seleccionar el botón:Finalizar

Page 67: ManualVisualStudio2008 II

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

Page 68: ManualVisualStudio2008 II

16. Se visualiza la siguiente pantalla:

a. Clic en NorthWind

b. Se va a mostrar la siguiente ventana.

17. Se visualiza lo siguiente:

68

Page 69: ManualVisualStudio2008 II

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

Page 70: ManualVisualStudio2008 II

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

Page 71: ManualVisualStudio2008 II

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

Page 72: ManualVisualStudio2008 II

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

Page 73: ManualVisualStudio2008 II

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

Page 74: ManualVisualStudio2008 II

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

Page 75: ManualVisualStudio2008 II

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

Page 76: ManualVisualStudio2008 II

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

Page 77: ManualVisualStudio2008 II

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

Page 78: ManualVisualStudio2008 II

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

Page 79: ManualVisualStudio2008 II

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

Page 80: ManualVisualStudio2008 II

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

Page 81: ManualVisualStudio2008 II

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

Page 82: ManualVisualStudio2008 II

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

Page 83: ManualVisualStudio2008 II

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

Page 84: ManualVisualStudio2008 II

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

Page 85: ManualVisualStudio2008 II

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

Page 86: ManualVisualStudio2008 II

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

Page 87: ManualVisualStudio2008 II

25. Se mostrara la siguiente Ventana

26. De la cual Activamos Procedimientos Almacenados

27. Buscamos el procedimiento creado en SQL

87

Page 88: ManualVisualStudio2008 II

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

Page 89: ManualVisualStudio2008 II

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

Page 90: ManualVisualStudio2008 II

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:

>

Page 91: ManualVisualStudio2008 II

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

Page 92: ManualVisualStudio2008 II

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

Page 93: ManualVisualStudio2008 II

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

Page 94: ManualVisualStudio2008 II

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

Page 95: ManualVisualStudio2008 II

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

Page 96: ManualVisualStudio2008 II

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

Page 97: ManualVisualStudio2008 II

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

Page 98: ManualVisualStudio2008 II

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

Page 99: ManualVisualStudio2008 II

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

Page 100: ManualVisualStudio2008 II

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

Page 101: ManualVisualStudio2008 II

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

Page 102: ManualVisualStudio2008 II

 

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

Page 103: ManualVisualStudio2008 II

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

Page 104: ManualVisualStudio2008 II

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

Page 105: ManualVisualStudio2008 II

38. Titile: Instalador del Proyecto

de Desplazamiento

39. Clic derecho en: Menú Programas del Usuario:

105

Wiener

Page 106: ManualVisualStudio2008 II

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

Page 107: ManualVisualStudio2008 II

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

Page 108: ManualVisualStudio2008 II

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

Page 109: ManualVisualStudio2008 II

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

Page 110: ManualVisualStudio2008 II

53. Se visualiza la siguiente pantalla:

110

Page 111: ManualVisualStudio2008 II

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

Page 112: ManualVisualStudio2008 II

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

Page 113: ManualVisualStudio2008 II

63. abrir el proyecto

64. En el explorador de soluciones:

113

Archivo de icono agregado

Page 114: ManualVisualStudio2008 II

65. Instalar el programa otra vez66. Luego clic Inicio - Programas - DemoSetupDesplaza - Acceso de Aplicacion

114

Page 115: ManualVisualStudio2008 II

67. Se visualiza lo siguiente:

115

Page 116: ManualVisualStudio2008 II

SESIÓN VI

SISTEMA FINAL

CONTENIDO

Desarrollo Sistema Final

Pasos a Seguir

Módulos a utilizar

116

Page 117: ManualVisualStudio2008 II

SISTEMA INKAFARMASISTEMA INKAFARMA

Base de Datos Inkafarma

117

Page 118: ManualVisualStudio2008 II

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

Page 119: ManualVisualStudio2008 II

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

Page 120: ManualVisualStudio2008 II

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

Page 121: ManualVisualStudio2008 II

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

Page 122: ManualVisualStudio2008 II

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

Page 123: ManualVisualStudio2008 II

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

Page 124: ManualVisualStudio2008 II

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

Page 125: ManualVisualStudio2008 II

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

Page 126: ManualVisualStudio2008 II

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

Page 127: ManualVisualStudio2008 II

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

Page 128: ManualVisualStudio2008 II

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

Page 129: ManualVisualStudio2008 II

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

Page 130: ManualVisualStudio2008 II

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

Page 131: ManualVisualStudio2008 II

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

Page 132: ManualVisualStudio2008 II

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

Page 133: ManualVisualStudio2008 II

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

Page 134: ManualVisualStudio2008 II

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

Page 135: ManualVisualStudio2008 II

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

Page 136: ManualVisualStudio2008 II

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

Page 137: ManualVisualStudio2008 II

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

Page 138: ManualVisualStudio2008 II

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

Page 139: ManualVisualStudio2008 II

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

Page 140: ManualVisualStudio2008 II

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

Page 141: ManualVisualStudio2008 II

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

Page 142: ManualVisualStudio2008 II

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

Page 143: ManualVisualStudio2008 II

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

Page 144: ManualVisualStudio2008 II

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

Page 145: ManualVisualStudio2008 II

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

Page 146: ManualVisualStudio2008 II

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

Page 147: ManualVisualStudio2008 II

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

Page 148: ManualVisualStudio2008 II

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

Page 149: ManualVisualStudio2008 II

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

Page 150: ManualVisualStudio2008 II

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

Page 151: ManualVisualStudio2008 II

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

Page 152: ManualVisualStudio2008 II

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

Page 153: ManualVisualStudio2008 II

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

Page 154: ManualVisualStudio2008 II

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

Page 155: ManualVisualStudio2008 II

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

Page 156: ManualVisualStudio2008 II

.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

Page 157: ManualVisualStudio2008 II

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

Page 158: ManualVisualStudio2008 II

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

Page 159: ManualVisualStudio2008 II

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

Page 160: ManualVisualStudio2008 II

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

Page 161: ManualVisualStudio2008 II

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

Page 162: ManualVisualStudio2008 II

'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

Page 163: ManualVisualStudio2008 II

ArtesaníaArtesanía

MedidaMedida

PresentaciónPresentación

163

Page 164: ManualVisualStudio2008 II

TipoTipo

DocumentoDocumento

ProveedorProveedor

Orden de CompraOrden de Compra

164

Page 165: ManualVisualStudio2008 II

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

Page 166: ManualVisualStudio2008 II

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

Page 167: ManualVisualStudio2008 II

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

Page 168: ManualVisualStudio2008 II

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

Page 169: ManualVisualStudio2008 II

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