Estructura de La Guía 3 Autoguardado

62
1. INTRODUCCIÓN DATOS GENERALES DE LA EMPRESA La empresa VERSUS RISK, S.A de C.V se encuentra ubicada en la Avenida Isla de Tris No. 20 Int. 8 Planta Alta, Col. Aeropuerto, C.P. 24080. Es una empresa del Sector Privado y el giro al cual se dedica es el de Servicios de Ingeniería. La estadía la realicé en el Departamento de Corporativo fungiendo como mi asesor empresarial el Ing. David Alberto Herrera Martínez y como representante legal de la empresa el Ing. David Alberto Herrera Martínez. PLANTEAMIENTO Y DELIMITACIÓN DEL PROBLEMA En esta Memoria Estadía se explica a grandes rasgos el funcionamiento del sistema (SISFA) y como fue implementado a la empresa que dio la oportunidad de ejercer las prácticas laborales, de igual manera se explica detalladamente la funcionalidad de los formularios y la implementación del código en dicho sistema elaborado, de igual manera se explicará todo referente a la base de datos, que en esta ocasión está elaborado en un manejador de base de datos con el nombre de SQL SERVER 2008, esto sirve para poder almacenar grandes cantidades de información añadidas mediante una conexión hecha mediante módulos en Visual Basic y manipulado por medio de los formularios. 1

description

tesis

Transcript of Estructura de La Guía 3 Autoguardado

1. INTRODUCCIÓN

DATOS GENERALES DE LA EMPRESA

La empresa VERSUS RISK, S.A de C.V se encuentra ubicada en la Avenida Isla de

Tris No. 20 Int. 8 Planta Alta, Col. Aeropuerto, C.P. 24080. Es una empresa del

Sector Privado y el giro al cual se dedica es el de Servicios de Ingeniería. La estadía

la realicé en el Departamento de Corporativo fungiendo como mi asesor empresarial

el Ing. David Alberto Herrera Martínez y como representante legal de la empresa el

Ing. David Alberto Herrera Martínez.

PLANTEAMIENTO Y DELIMITACIÓN DEL PROBLEMA

En esta Memoria Estadía se explica a grandes rasgos el funcionamiento del sistema

(SISFA) y como fue implementado a la empresa que dio la oportunidad de ejercer las

prácticas laborales, de igual manera se explica detalladamente la funcionalidad de

los formularios y la implementación del código en dicho sistema elaborado, de igual

manera se explicará todo referente a la base de datos, que en esta ocasión está

elaborado en un manejador de base de datos con el nombre de SQL SERVER 2008,

esto sirve para poder almacenar grandes cantidades de información añadidas

mediante una conexión hecha mediante módulos en Visual Basic y manipulado por

medio de los formularios.

En esta Memoria también se explicará cómo fuimos elaborando el sistema paso a

paso, mediante una plataforma de programación básica en el ámbito de la

programación en general, que se encarga de realizar proyectos en escritorio, web,

dispositivos móviles, etc., llamado Microsoft Visual Studio 2010.

Describiremos todos los componentes utilizados en dichos programas, explicáremos

el módulo de conexión, a la base de datos ya elaborada en SQL SERVER 2008, la

funcionalidad de cada formulario.

1

En resumen se explicará todo lo referente al proyecto elaborado mediante las

prácticas de estadía hechas en las compañía Versus Risk, S.A. de C.V., así como

todo el funcionamiento en general, implementación del sistema en las máquinas de la

oficina, y manejo del sistema de facturas (SISFA), la explicación de formularios por

separados, para la mayor comprensión, las herramientas utilizadas para la

realización de los formularios, explicaremos todos los botones, funcionalidad y el

código del mismo.

Dentro de la empresa Versus Risk S.A. de C.V. existen algunos problemas con el

control de las facturas y esto ocasiona pérdidas de dinero, y conflicto cuando se

requiere buscar algún dato de la factura como por ejemplo en qué fecha fue emitida,

esto da como resultado que la empresa tenga ciertas deficiencias, ya que no estaría

teniendo un buen nivel administrativo desequilibro que es necesario solucionar.

Por lo cual se deberá crear una aplicación que tenga un control sobre las facturas

que pueda dar de baja, alta, modificar, buscar y lleve un control de todas las facturas

que se reciben diariamente.

Hoy en día en la empresa Versus Risk, S.A. de C.V., sólo se utilizan tablas en Excel

para poder controlar las facturas, pero si se necesita buscar los datos de una factura

en específica por algún problema que surja es muy tardado buscarla y una compañía

no puede permitirse eso, debe de estar en un buen rango a nivel administrativo.

A continuación la problemática planteada anteriormente se expresa en interrogantes,

las cuales guiarán el proyecto:

Pregunta Principal:

¿Qué estrategias se pueden aplicar, para poder llevar un control de las facturas y

resolver los problemas planteados?

2

Preguntas específicas:

1. ¿Cuáles recursos o métodos se pueden utilizar para la creación de una

aplicación que pueda llevar el control sobre las facturas?

2. ¿Qué software nos ayudaría para crear un control sobre las facturas?

3. ¿Qué Sistema Gestor de Base de Datos podría ayudarnos en la creación de

una aplicación para el control de las facturas?

4. ¿En qué entorno se podrá crear la aplicación que lleve un control sobre las

facturas?

3

2. JUSTIFICACIÓN Y OBJETIVO

JUSTIFICACIÓN

En cualquier compañía siempre hay un momento en que se tiene un desorden de

documentos, archivos, facturas, etc. En este caso le pondremos atención a las

facturas, y los problemas que pueden llegar a ocasionar si no se tiene un control

sobre ellas, sin duda alguna el problema más importante que puede presentarse al

no llevar un buen control con las facturas son, en algunos momentos la pérdida de

cantidades de dinero para la empresa.

Por lo tanto se requiere llevar un control sobre las facturas que se reciben en la

empresa, esto ayudaría a tener un mejor control sobre los gastos que se realizan

mes con mes y acelerarían la búsqueda de alguna factura en el momento que se

necesita para verificar algún dato sobre ella, se podrá dar de baja alguna factura en

el momento que se quiera eliminar, dar de alta y registrar la información importante

acerca de la factura que se está registrando en el momento, modificaciones del

mismo, y así evitar la pérdida de información manipulada por varias personas, el

sistema ayudará a que una sola persona se haga cargo de él y le sea fácil de usar,

por lo cual cuenta con la seguridad de la contraseña.

Dado esta situación el sistema SISFA reduciría drásticamente estos problemas con

el control y la pérdida de cantidades de dinero, además de reducir los tiempos de

respuesta, ya que de cada factura se capturaría directamente a como se vayan

recibiendo dentro de las interfaces del sistema.

Además el empleado que sea encargado de almacenar la información tendría pocos

márgenes de error, y se le facilitaría el registro de las facturas ya que el sistema será

fácil de usar y se tendrá la seguridad que sólo las personas autorizadas podrán tener

acceso al manejo del sistema una vez que cuenten con la contraseña.

4

OBJETIVO

Objetivo general:

Este programa tiene como objetivo principal llevar el control de las facturas que se

reciben para la empresa “VERSUS RISK, S.A. DE C.V.” Por lo cual con este

programa se podrá dar de alta a las nuevas facturas que se reciban diariamente, en

caso de que se necesite cambiar una factura y ya no se necesita la que este dada

de alta el sistema permitirá dar de baja o modificar algunos campos de la información

de la factura sin eliminarla por completa, también se podrá buscar por nombre de

institución que emite la factura.

Objetivos específicos:

1. Analizar el uso e implementación de un sistema conectado a una base de

datos para controlar las facturas recibidas.

2. Una aplicación diseñada en un entorno de programación conectada a una

base de datos diseñada en algún Sistema Gestor de Base de Datos nos

ayudaría para tener un buen control.

3. En SQL Server 2008 se podrán crear las tablas para la base de datos que se

necesita.

4. En Microsoft Visual Studio 2010 podrán crear la aplicación y hacer la conexión

con la base de datos.

5

3. DESARROLLO TEÓRICO

CAPÍTULO I. METODOLOGÍA PARA LA ELABORACIÓN DE UN

SOFTWARE LIBRE Y FIABLE

1.1 METODOLOGÍA

Para elaborar un buen software capaz de generar muchos beneficios y retribuir

ganancias al programador se deben seguir una serie de pasos, estos pasos pueden

ser modificados dependiendo las necesidades del cliente pero la idea principal es la

misma tal y como se describen aquí mismo.

1.2 ELABORACIÓN DE UN SOFTWARE FIABLE

Para elaborar un buen software capaz de generar muchos beneficios y retribuir

ganancias al programador se deben seguir una serie de pasos (Microsoft, 2007),

estos pasos pueden ser modificados dependiendo las necesidades del cliente pero la

idea principal es la misma tal y como se describen aquí mismo, estos pasos se

realizan de esta manera por el motivo de que estoy implementando el modelo de

prototipo, en dado caso que hubiese utilizado otro tipo de modelo traen sus

referencias de cómo ir elaborando el proyecto o sistemas.

1.2.1 Pasos para la elaboración de un software fiable:

Paso1:

En esta etapa evalué la petición del software, ver si era factible o no llevar a cabo la

elaboración del proyecto, en esta etapa es importante que el cliente, en este caso el

dueño de la compañía Versus Risk, S.A. de C.V., aporte ideas de cómo quiere el

proyecto, por ejemplo qué acciones tendrá, o para qué será utilizado en la empresa

ese proyecto, en qué departamento será empleado el mismo, para poder dar una

idea de la que vamos hacer. Y así mismo para que quede el programa al gusto del

cliente y no haya ningún inconveniente.

6

Paso 2:

Después de verificar que el software es candidato fiable y factible dependiendo las

necesidades del cliente (esto es importante hablarlo muy bien con el cliente por algún

desacuerdo que tenga, para hacer modificaciones antes de que el prototipo sea

llevado acabo) para ser elaborado se hace un análisis de los requerimientos

necesarios para que el software sea elaborado.

Paso 3:

Después de que se haya revisado la representación de los requerimientos, se crea el

diseño elaborado del software. El diseño debe ocurrir antes de que comience la

construcción del software ya que dependiendo el diseño se hará la codificación. Sin

embargo, el diseño de un sistema enfoca normalmente hacia la arquitectura del

proyecto así mismo antes de este paso debes realizar correctamente los primeros 2.

Paso 4:

El prototipo del software se crea, se prueba y se refina, esto se crea de una forma

rápida ya que esto sirva de muestra para el cliente se dé una idea de cómo quedara

elaborado el software, y así poderse dar una idea si es lo que en realidad necesitaba

hablando técnicamente, o si quiere cambiar diseño de las interfaces.

Paso 5:

Una vez que el prototipo ha sido probado, se presenta al cliente, el cual "conduce la

prueba" de la aplicación y sugiere modificaciones.

Es aquí donde el cliente puede examinar una representación implementada de los

requerimientos del programa, sugerir modificaciones que harán al programa cumplir

mejor las necesidades reales.

Paso 6:

Los pasos 4 y 5 se repiten hasta que el cliente este totalmente de acuerdo con todos

los cambios.

7

CAPÍTULO II. METODOLOGÍA O DESCRIPCIÓN DE LAS

ACTIVIDADES DESARROLLADAS EN LA ESTADÍA.

2.1 DESARROLLO DEL PROYECTO SISFA

Este es un sistema desarrollado en las 525 horas que he laborado en la compañía de

Servicios de ingeniería llamado Versus Risk, S.A. de C.V. , en conjunto con la

Contadora y el Director Corporativo tomaron la decisión de pedir una aplicación que

pudiera llevar un control con los datos de las facturas recibidas diariamente ellos

dicen: que tenía una problemática de pérdidas de dinero, por ejemplo: Una factura no

se guardó o se perdió en algún momento y al cierre de mes de sacar las cuentas ese

dinero gastado no tiene manera de comprobarse por lo que se pierde dinero para la

empresa , por eso la contadora pidió que se realizará un programa que llevara el

control de las facturas que se van recibiendo , que esta aplicación pueda dar de

baja, alta modifique, busque y lleve un control de todas las facturas que se reciben

diariamente, actualmente este control sólo se lleva en archivos de Excel pero no de

una manera muy eficiente se pudo encontrar unas tablas, y de ahí nos apoyamos

para crear las tablas, y saber qué campos más o menos llevan, por ejemplo se toma

el número de la factura, Nombre de la institución que emite la factura, el concepto de

esa factura, IVA, Total , Subtotal y la fecha en que fue emitida y también se le

agregará el RFC de la institución, esto será de ayuda cuando se tiene que hacer

algún pago mediante una transacción por internet, la contadora sólo tendrá que

buscar la intuición y podrá ver cuál es el RFC de este y así será más rápido realizar

la transacción; también será importante saber en qué Ciudad se emitió la factura,

quién realizó la compra y en qué status se encuentra se deberá tomar en cuenta que

sólo hay dos categorías: pendiente o pagado.

Por este motivo hemos creado este sistema para realizar más rápido las búsquedas

de las facturas en el momento y así agilizar el trabajo del departamento de

contabilidad y así evitar más pérdida de dinero. Y ya no tardar más buscando una por

una en las tablas de Excel, aquí en formulario se realizarán consultas por medio de

las interfaces ya respectivamente programadas en la plataforma de programación

8

Microsoft Visual Estudio 2010 conectado a una base de datos en SQL SERVER

2008.

2.1.1 Creación del formulario de presentación.

En primera parte antes de todo, aunque algunos programadores no toman esta parte

del proyecto con mucha importancia, porque se enfocan más en la funcionalidad del

proyecto que también es importante, pero también igual de importante es el diseño

del programa, por eso en este proyecto cree un formulario de presentación al

programa SISFA. ( ver figura 1)

Figura 1. Formulario de presentación

Fuente: Elaboración propia.

Como ya mencionaba, este formulario es la presentación del proyecto, sin una

presentación a veces los clientes no encuentran interesante el sistema, ya que esto

no es bueno porque los clientes utilizarán ese sistema la mayor parte del tiempo y si

no les llama la atención el sistema, no habrá servido de nada haber realizado todo el

sistema; por eso yo insisto que esta parte del sistema es muy importante para dar

una buena imagen tanto al programador como a la persona que lo utilizará en la

empresa. También puedes utilizar el tipo de presentación como un sello de tu trabajo,

en pocas palabras para que tu trabajo sea reconocido, y el cliente pueda

recomendarte con muchos colegas por ese motivo es bueno entregar una buena

presentación del sistema, el diseño del formulario fue realizado por personas

involucradas en el sistema en un programa de edición llama Photoshop en su edición

completa CS5.5. Es una imagen insertada al formulario por medio de la opción de

9

propiedades ya incluido por default en la plataforma de programación de Microsoft

Visual Estudio 2010 (Fundación Wikimedia, Inc., 2006) , en este caso utilicé en las

propiedades del formulario el apartado que dice Backgroundimage, ahí seleccionas

la imagen que quieras poner como presentación, por ejemplo, se habló de la

presentación con el contador y se acordó elegir la imagen que diseñé con el logo de

la empresa y del color del área de contaduría en Photoshop CS5.5, como es

presentación este formulario no tiene botones, caja de textos, tampoco etiquetas. Así

que tal vez te preguntarás dónde se codifica, es muy sencillo, se codifica dentro del

formulario dándole doble clic en medio del formulario, ahí se redirige al espacio de

trabajo para empezar la codificación del formulario, como es sólo una simple

presentación se codificará para que el formulario haga la acción de ocultarse y se

redirige al formulario de contraseña, ya dicho esto mostraremos el código.

A Continuación mostraremos un poco del código utilizado en la realización del

formulario de presentación:

Public Class Presentacion

Public CONTADOR As Byte = 4

Private Sub ProgressBar1_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles ProgressBar1.Click

ProgressBar1.Value = 0.0

ProgressBar1.Maximum = 100

Timer1.Interval = 40

Timer1.Enabled = True

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Timer1.Tick

If ProgressBar1.Value = 100 Then

Me.Opacity = -0.07

If Me.Opacity = 0.0 Then

10

Me.Hide()

clave.Show()

Timer1.Enabled = False

End If

Else

ProgressBar1.Value += 4

If ProgressBar1.Value = CONTADOR Then

Label1.Text = "INICIANDO........"

Else

If ProgressBar1.Value = CONTADOR + 16 Then

Label1.Text = ""

CONTADOR += 20

End If

If ProgressBar1.Value = 28 Then

End If

End If

End If

End Sub

Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles PictureBox1.Click

End Sub

End Class

11

Antes que todo arrastramos a la parte inferior del formulario un timer, que esto lo

puedes encontrar en la barra de herramientas ubicada en la parte izquierda de

formulario en el apartado de componentes. Declaramos una variable pública llamada

Presentación (esta es el formulario) le damos doble clic al formulario y ahí se codifica

ponemos:

Me.Timer1.Enabled=True

Esto sirve para que el timer que arrastramos no sea modificado al correr el programa,

ahora nos encontramos con :

End Sub

Es para cerrar las líneas de código programación. Le damos doble clic al timer que

arrastramos y codificamos ahí, escribimos, Timer1.Tick, la función que hace es

activar el timer al correr el formulario. Después codificamos lo siguiente:

Me.Opacity-=-0.7

Esto sirve para la velocidad la cual se irá ocultando el formulario para redirigir al otro

formulario de contraseña, después hacemos una condición:

If Me.Opacity = 0.0 Then Me.Hide() clave.show() End If,

Toda esta línea de código en programación se llama condiciones, sabemos que son

condiciones cuando se empieza con un If. Esta línea de código sirve para que se

oculte el formulario y redirija al formulario de contraseña se cierra las líneas de

código con el End If y el End Sub.

12

2.1.2 Creación del formulario de contraseña

El formulario de clave es para darle una seguridad a la aplicación (Microsoft, 2007)

esa ventana se implementará en el código la contraseña y el usuario, para que sólo

tengan acceso las personas que conozcan dichas cosas, porque así nos fue

solicitado por el director ya que sólo quiere que maneje el sistema él y la contadora

o persona que sea autorizada.

Este formulario cuenta con un Groupbox, dos etiquetas, en este caso es, usuario y

contraseña, dos cajas de texto, dos botones, (Iniciar y Salir) y un progressbar,

también se puso la imagen de presentación de fondo del formulario para darle

presentación al formulario. ( ver figura 2)

Figura 2: Formulario de Clave

Fuente: Elaboración propia

A Continuación mostraremos un poco del código utilizado en la realización del

formulario de contraseña:

Public Class clave

Dim conta As Integer

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button2.Click

13

If MsgBox("¿Desea salir del programa?", MsgBoxStyle.YesNo) =

MsgBoxResult.Yes Then Me.Close()

End Sub

Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button1.Click

conta = conta + 1

If txtusiario.Text = "versus" And txtcontra.Text = "risk" Then

Dim formulario As New menu

formulario.Show()

Me.Finalize()

ElseIf conta >= 3 Then

MsgBox("Después de 3 intentos el programa se cerrara automaticamente")

Presentacion.ActiveForm.Close()

Else

MsgBox("Contraseña incorrecta vuelve a intentarlo")

txtusiario.Text = ""

txtcontra.Text = ""

End If

End Sub

Private Sub clave_Load(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles MyBase.Load

End Sub

End Class

14

Declaramos una variable pública llamada conta, que explicaremos su propósito más

tarde; todo el código siguiente está dentro del primer botón que es iniciar,

declaramos lo que va ser el nombre del usuario que este caso es “ versus” y la

contraseña que será “risk”, todo lo demás del código nos sirve para que funcione la

variable conta, esto nos sirve para ir aumentan las veces que intentas ingresar al

programa y mande un mensaje cada vez que no se ponga correctamente la

contraseña o el nombre del usuario y que al tercer intento erróneo te bote el sistema,

de lo contrario si ingresaste correctamente los datos te mostrará un mensaje de

contraseña incorrecta y que vuelvas a intentarlo. ( ver figura 3)

Figura 3: Mensaje Contraseña Incorrecta

Fuente: Elaboración propia

En caso de que se llegue a poner incorrecta la contraseña mandará otro mensaje

diferente que después de 3 intentos se cerrará automáticamente, esto nos sirve para

una seguridad del sistema ya que lo cerrará automáticamente al tercer intento fallido.

( ver figura 4)

Figura 4: Mensaje de Cierre Automático

Fuente: Elaboración propia

15

Ahora veremos detalladamente la codificación del siguiente botón que es el de

cancelar, la función de este botón es que tiene la capacidad de sacarte del sistema, a

continuación veremos el código implementado en el botón:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button2.Click

If MsgBox("¿Desea salir del programa?", MsgBoxStyle.YesNo) =

MsgBoxResult.Yes Then Me.Close()

End Sub

En este caso lo realizamos utilizando un if y que mande un mensaje preguntando si

queremos salir del sistema, esto sirve para que el sistema salga totalmente de

funcionamiento, que quede claro esta codificación va adentro del botón, no lo hagan

en otra parte porque puede marcar errores o simplemente el programa no corre, por

eso siempre es importante ver dónde implementar el código ya que de eso depende

toda la funcionalidad y eficacia de tu sistema, ya dicho esto último, con esto

acabamos con la codificación de este formulario como podrán darse cuenta no es

complicado es solamente mucho razonamiento lógico, y aprenderse que

funcionalidad tiene cada línea de código, para esto es importante no dejar de

practicar con los programas, o no sólo quedarte con lo que te enseñan en la escuela

si no moverle por tu cuenta y verás que tendrás muy buenos resultados a la larga,

tendrás programas más completos y con mayor eficacia, y con la práctica la

programación será mucho más fácil, ya dicho esto pasaremos a explicar el siguiente

formulario.

2.1.3 Creación del formulario de menú

Bueno en realidad este formulario es opcional, la persona encargada de desarrollar

decide si lo implementa o no para una mayor facilidad de uso y para poder darle una

mejor presentación al programa, una de las principales funciones de este formulario

es ser un contenedor, esto quiere decir que los demás formularios del sistema se

presentarán dentro de este formulario y a través del menú podemos tener acceso a

las demás ventanas (Fundación Wikimedia, Inc., 2005) ,esto quiere decir que desde

16

el formulario de menú mandamos a llamar los demás formularios, pero esto no sería

posible si antes no le ponemos una opción en propiedades, ya que sin esto sería

sólo un simple formulario como los demás, y no realizaría la función que le estoy

describiendo, de igual manera para darle un mejor diseño utilizaremos otras

herramientas para este formulario, como poner la hora completa con un timer, algún

anunció para ello se cuenta con StatusStrip, un Menustrip y un toolstrip, estas

herramientas son muy fácil de usar, la que más nos interesa es el Menustrip este

sirve para crear pestañas en el formulario, por ejemplo nosotros tenemos otros 3

formularios y para no estar corriendo uno por uno los mandamos a llamar desde este

formulario además de agregar la opción para poder salir por completo del sistema,

sólo se codifican las pestañas que pueden ser editadas directamente desde el

diseño, no a fuerzas tiene que ser por código aunque nosotros codificaremos estas

pestañas para que manden a llamar los formularios realizados en el sistema.

Primero explicaremos cómo convertimos el formulario en contenedor, para esto

seleccionamos el formulario, después en la barra de propiedades que está al lado

derecho de su pantalla buscamos la propiedad IsMdiContainer por default la está en

False pero para convertirlo en contenedor cambiemos la propiedad a True, se

pueden dar cuenta que realizamos correctamente esto fijándose en el formulario, se

darán cuenta que ya ha cambiado de color a un gris oscuro, en esa parte gris se

contendrá los formularios que mandas a llamar con el toolbar.( ver figura 5)

Figura 5: Menú.

Fuente: Elaboración propia

17

Bueno ahora le presentaré el código utilizado para mandar a llamar los otros

formularios desde el MenuStrip, en el MenuStrip se añadirá las pestañas de Guardar,

Modificar, Buscar y la pestaña de Salir del sistema. ( ver figura 6)

Figura 6: Pestañas del Menú.

Fuente: Elaboración propia

A Continuación mostraremos un poco del código utilizado en la realización del

formulario de Menú:

Public Class menu

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Timer1.Tick

StatusStrip1.Items(0).Text = Format(Now, "hh:mm:ss tt")

StatusStrip1.Items(1).Text = Mid(StatusStrip1.Items(1).Text, 2) +

Microsoft.VisualBasic.Left(StatusStrip1.Items(1).Text, 1)

End Sub

Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles MyBase.Load

StatusStrip1.Items(0).Text = Format(Now, "dd -mmm - yyy")

StatusStrip1.Items(1).Text = Space(10) + StatusStrip1.Items(1).Text +

Space(15) + "Versus Risk S.A. de C.V. !"

Timer1.Interval = 100

18

End Sub

Private Sub SALIRToolStripMenuItem1_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles SALIRToolStripMenuItem1.Click

If MsgBox("¿Desea salir del programa?", MsgBoxStyle.YesNo, "Confirmar") =

MsgBoxResult.Yes Then Me.Close()

End Sub

Private Sub GuardarToolStripMenuItem_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles GuardarToolStripMenuItem.Click

Dim formulario As New guardar

formulario.Show()

End Sub

Private Sub ModificarToolStripMenuItem_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles ModificarToolStripMenuItem.Click

Dim formulario As New modificar

formulario.Show()

End Sub

Private Sub BuscarToolStripMenuItem_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles BuscarToolStripMenuItem.Click

Dim formulario As New buscar

19

formulario.Show()

End Sub

Private Sub FacturasToolStripMenuItem_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs)

End Sub

End Class

Esta parte del código sirve para poner la hora, minutos y segundos actuales en que

se abra el sistema con formato de a.m. y p.m. , se aclara que este parte del timer se

mostrará dentro del StatusStrip que se encuentra en la parte inferior izquierda del

menú. ( ver figura 7)

Figura 7: Formato de Hora.

Fuente: Elaboración propia

Voy a dejar en claro esta estas líneas de código empezando con el timer

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Timer1.Tick

StatusStrip1.Items(0).Text = Format(Now, "hh:mm:ss tt")

StatusStrip1.Items(1).Text = Mid(StatusStrip1.Items(1).Text, 2) +

Microsoft.VisualBasic.Left(StatusStrip1.Items(1).Text, 1)

End Sub

20

Esta parte es para el mensaje que va pasando una y otra vez seguidamente que en

este caso dice el nombre de la empresa, se encuentra a un lado de la hora en la

parte inferior del menú, esta parte de igual manera va dentro del StatusStrip. ( ver

figura 8)

Figura 8: Mensaje en movimiento.

Fuente: Elaboración propia

Ahora, a continuación se mostrará el código:

Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles MyBase.Load

StatusStrip1.Items(0).Text = Format(Now, "dd -mmm - yyy")

StatusStrip1.Items(1).Text = Space(10) + StatusStrip1.Items(1).Text +

Space(15) + "Versus Risk S.A. de C.V. !"

Timer1.Interval = 100

End Sub

Esta parte del código sencillamente nos sirve para poder salir del sistema utilizado

una condición if ya que al presionar salir nos manda un mensaje haciéndonos una

pregunta si deseamos salir del programa en caso de presionar si inmediatamente se

cierra el sistema por completo, incluyendo las ventanas que estén abiertas, en caso

de presionar no se cierra el mensaje y no se cierra nada. ( ver figura 9)

Figura 9: Mensaje para salir del programa.

Fuente: Elaboración propia

21

Encontramos de igual manera esta parte:

Private Sub SALIRToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal

e As System.EventArgs) Handles SALIRToolStripMenuItem1.Click

If MsgBox("¿Desea salir del programa?", MsgBoxStyle.YesNo, "Confirmar") =

MsgBoxResult.Yes Then Me.Close()

End Sub

La demás parte del código que mencionamos en un principio utilizando el MenuStrip

se colocan el nombre de los demás formulario en esta parte se codifica cada pestaña

utilizando por ejemplo:

Dim formulario As New modificar

formulario.Show()

Con esta parte se indica en cada pestaña que se deberá mostrar el formulario que

corresponda a cada pestaña.

2.1.4 Creación del formulario para guardar facturas.

Este formulario está diseñado para guardar el registro de las facturas que se reciben

para la empresa en la base de datos ya conectada, este formulario cuenta con tres

botones que vamos a codificar uno por unos esto se explicara por separado para una

mejor comprensión, cuenta también con once cajas de texto, once etiquetas un

groupbox y un datagridview, los botones nos sirven para que hagan las funciones del

formulario ya que sin ellos sería imposible interactuar con él, por eso cada botón

lleva su codificación individual, las cajas de texto es para ingresar los datos que

serán guardados a la base de datos, las etiquetas, sirve como referencia para que

veas que campo va en las cajas de texto, el groupbox sirve para darle una mejor

presentación u ordenamiento al formulario para separar partes dentro del mismo

formulario, y el datagridview sirve para reflejar los registros guardados en la base de

22

datos, esta herramienta es importante para darse cuenta de dodos los registros ya

existentes en la base de datos. ( ver figura 10)

Figura 10: Formulario guardar.

Fuente: Elaboración propia

Empezaremos explicando el botón de nuevo, este botón le impusimos la tarea de

activar las cajas y los botones para que así podamos trabajar con ellos, que quiere

decir esto, al correr el formulario las cajas de texto y los botones están desactivados

para que no puedas realizar ninguna otra acción fuera de lo que está diseñado el

sistema, esto se hace para la fiabilidad del sistema, entonces al correr el sistema

sólo el botón Nuevo está habilitado para que el usuario le dé clic ahí, al ocurrir esta

acción se activan las cajas de texto y los botones restantes, al igual se hace una

consulta con la base de datos para checar cual fue el último registro ingresado y así

seguir un consecuencia en la numeración del ID del usuario y haya remplazo de ID.

Estas líneas de código van adentro del botón como ya antes dicho se le da doble clic

al botón y ya se codifica dentro de ahí.

A continuación mostraremos un poco del código utilizado en la realización del botón

nuevo:

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button5.Click

23

g = 1

botones(1, 0, 1, )

cajas(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)

TextBox1.Text = base.numeracion("numero")

TextBox1.Focus()

End Sub

Para explicar más detalladamente esta parte tengo que explicarle qué son

subrutinas, las subrutinas son bloques de código creadas afuera de los botones

(Fundación Wikimedia, Inc., 2005), para ya después nada más mandarlos a llamar en

los botones con una simple variable, se preguntarán porqué les estoy explicando

esto, se los estoy explicando por qué dentro del código hay dos subrutinas “ botones”

y “cajas” estas 2 subrutinas sirven para activar los botones y las cajas de texto que

están en el formulario para poder manipularlos directo de la interfaz.

La subrutina botones esta creada con este código:

Public Sub botones(ByVal b1 As Boolean, ByVal b2 As Boolean, ByVal b3 As

Boolean)

Button1.Enabled = b1

Button5.Enabled = b2

Button5.Enabled = b3

End Sub

Esta codificación se hace muy aparte de la demás codificación, se declara un clase

pública llamada botones se le declara la variable y el valor de cada botón por ejemplo

b1 as boolean, y así se van declarando dependiendo para qué utilizarás los botones

y de cuántos botones deseas alterar, después se pone el nombre del botón, en este

caso es Button1, después se le pone la acción que va realizar y se pone la propiedad

Enabled que esto sirva para habilitar o deshabilitar el objeto que este caso es el

24

botón y ya eso se lo agregamos a la variable de arriba por ejemplo b1 y asi le

hacemos con todos los botones que tengamos y a lo último cerramos la subrutina

con el End sub.

La subrutina cajas esta creada con este código:

Public Sub cajas(ByVal h As Boolean, ByVal L As Boolean)

If h Then

TextBox1.Enabled = False

TextBox2.Enabled = True

TextBox3.Enabled = True

TextBox4.Enabled = True

TextBox5.Enabled = True

TextBox6.Enabled = True

TextBox7.Enabled = True

TextBox8.Enabled = True

TextBox9.Enabled = True

TextBox10.Enabled = True

TextBox11.Enabled = True

Else

TextBox1.Enabled = False

TextBox2.Enabled = False

TextBox3.Enabled = False

TextBox4.Enabled = False

TextBox5.Enabled = False

TextBox6.Enabled = False

TextBox7.Enabled = False

TextBox8.Enabled = False

TextBox9.Enabled = False

TextBox10.Enabled = False

TextBox11.Enabled = False

25

End If

If L Then

TextBox1.Text = ""

TextBox2.Text = ""

TextBox3.Text = ""

TextBox4.Text = ""

TextBox5.Text = ""

TextBox6.Text = ""

TextBox7.Text = ""

TextBox8.Text = ""

TextBox9.Text = ""

TextBox11.Text = ""

End If

End Sub

Aquí igual creamos una clase pública llamada cajas, declaramos la variable que

quieras, en este caso es h, le ponemos su propiedad boolean y otra variable L con la

misma propiedad boolean, después de esto escribimos una condición, If h then y

todas las cajas de textos que tengas en tu formulario, por ejemplo yo tengo

TextBox1.Enabled = False, TextBox1 es el nombre de la caja de texto la propiedad

enabled que es para habilitar o deshabilitar la caja de texto y false que es para

deshabilitar la caja hacemos esto con todas las cajas de texto, si no se cumple esa

opción se pasa a la otra que para eso es el Else, la otra opción es limpiar todas las

cajas de texto.

Ya explicado lo de las subrutinas explicaremos todo el código completo para su

mayor comprensión empecemos con botones(1, 1, 0, 1, 1, 1, 1, 1 ,1 ,1 ,1) este código

se utiliza para habilitar las cajas de texto, esto funciona sí llamas la subrutina o

subclase botones y los números son los bits 1 es igual a habilitado y 0 es igual a

deshabilitado dependiendo la formación de los número es el botón que se

26

deshabilitará, por ejemplo aquí el botón que este posicionado en el lugar 3 se

deshabilitará al dar clic en el botón nuevo.

Pasa lo mismo con esta línea de código cajas (1, 1) habilita y deshabilita las cajas,

Después sigue esta línea de código que esta línea ya está haciendo función con la

base de datos:

TextBox1.Text = base.numeracion("numero")

TextBox1 es el nombre de la caja de texto, lo que esto quiere decir es que la caja de

texto es igual a lo que se encuentra en la base de datos y la numeración que es el

contador, sea igual a lo que se encuentra en el campo número, y ya esto hace una

consulta con la base de datos y ve cuál es el último id agregado a la base de datos y

se le agrega uno, por ejemplo si el último registro ingresado esta con el id número

50, al dar el botón de nuevo hará la consulta y verá que es 50 y se le agregará el 50

más 1 en otras palabras que el siguiente registro será 51.

Ahora empezaremos con la explicación del botón cerrar, su mismo nombre dice para

que sirve este botón pero también explicaré la funcionalidad y el código del botón ya

que esto te hace posible cerrar únicamente la ventana que se tiene abierta, en este

caso es la de guardar y para que no cierre por completo la aplicación cuando lo crea

necesario, bueno en realidad este botón siempre será utilizado en cualquier tipo de

programación, en cualquier tipo de plataforma de programación en cualquier

lenguaje, ya sea java c++ o visual entre otros, pero que quede bien claro que podrá

ser la misma función en cualquier tipo de programación pero muy rara vez es la

misma lógica, ya que es diferente la forma de trabajar de cada programador, ya

dejado en claro esto empezaré a explicar la funcionalidad del botón.(ver figura 11)

27

Figura 11: Mensaje para cerrar la ventana guardar.

Fuente: Elaboración propia

En el momento que se da clic al botón cerrar aparece un cuadro de diálogo con una

leyenda que dice así “¿Desea cerrar la ventana guardar?” (ver figura 11) y en el

mismo cuadro de diálogo aparecen 2 botones, para que escojas la opción de “si” o

“no”, al darle clic a lo opción si automáticamente se cierra únicamente la ventana en

la que estamos que es la de guardar, al darle clic al botón no se cierra el cuadro de

diálogo que nos salió y regresa al formulario en el que estabas trabajando, ya

explicada la funcionalidad del botón, pasaré a explicar el código que hace posible

todas estas funciones que anteriormente expliqué:

Donde empieza el private y donde acaba donde dice Button2.click, aparece por

default cuando le damos click al botón, eso no se programa, se empieza a programar

desde if hasta donde dice close(), bueno empecemos a explicar en realidad la

programación de este botón, es muy fácil, ya que es sólo una condición if, msgbox es

la del cuadro de diálogo ya mencionado anteriormente, lo que está entre comillas es

el mensaje que saldrá en el cuadro de diálogo, ojo, esto puede ser modificado a

gusto del programador, msgstyle es el estilo del cuadro de diálogo en esta ocasión

será un cuadro de diálogo de dos opciones si y no, lo que está entre comillas

aparecerá arriba del cuadro de diálogo, msgboxresult yes then me.close esto quiere

decir que si damos la opción de si la aplicación se cerrará automáticamente y el end

sub es para cerrar el bloque.

A continuación mostraremos el código utilizado en la realización del botón cerrar:

28

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button2.Click

If MsgBox("¿Desea cerrar la ventana guardar ?", MsgBoxStyle.YesNo,

"Confirmar") = MsgBoxResult.Yes Then Me.Close()

End Sub

Ahora explicaré el botón más importante de este formulario que es el de guardar ya

que sin este botón no tendría ninguna función este formulario.

Para que la explicación del código de este botón sea de una manera más detallada

se explicará en bloques o líneas de código dependiendo la densidad del código, para

que se pueda entender mejor, ya que el código es muy extenso y puede ser confuso

si lo explico de manera general, ya que en la programación de este botón hay varios

elementos como las consultas a la base de datos, a los ingresos al mismo, clases,

etc.

Ahora empezaré con la primera línea de código:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button1.Click

Esta línea de código es generada por default al darle doble click al botón después de

esta línea de código es que se empieza a codificar ya que de no hacerlo así no

realizará ninguna función el botón al darle click.

Ahora explicaré un bloque del código:

If (TextBox1.Text <> "" And TextBox2.Text <> "" And TextBox3.Text <> "" And

TextBox4.Text <> "" And TextBox5.Text <> "" And TextBox6.Text <> "" And

TextBox7.Text <> "" And TextBox8.Text <> "" And TextBox9.Text <> "" And

TextBox10.Text <> And TextBox11 <> "") Then

29

base.ejecutar("INSERT INTO Facturas

(numero,RFC,nombre,Concepto,ciudad,IVA,subtotal,total,por,status,fecha) VALUES

(" & TextBox1.Text & ",'" & TextBox2.Text & "','" & TextBox3.Text & "','" &

TextBox4.Text & "','" & TextBox5.Text & "','" & TextBox6.Text & "','" & TextBox7.Text

& "','" & TextBox8.Text & "','" & TextBox9.Text & "','" & TextBox10.Text & "','" &

TextBox11.Text & "')")

MessageBox.Show("Datos Guardados Correctamente", "Transaccion

Exitosa", MessageBoxButtons.OK, MessageBoxIcon.Information)

Este bloque de código en pocas palabras es la parte más importante del código de

este botón ya que sin esta parte del código sería imposible guardar los registros en la

base de datos, ya que esta parte del código es la que interactúa directamente con la

base de datos mediante comando SQL SERVER 2008, a qué me refiero con esto,

ósea que mediante código utilizado para crear bases de datos en dicho programa, se

hacen acciones u operaciones también en Visual Basic, esto es posible ya que en el

módulo de conexión se hizo referencia para poder utilizar comandos de dicho

programa (el módulo de conexión se explicará más adelante). En esta parte del

código se validan las cajas de textos y los campos para poder ser ingresados a la

base de datos, se ingresan los datos en la base de datos y arroja un mensaje de que

los datos ya fueron guardados.

En esta parte del sistema también se está utilizando otra subrutina que se llama

cargar; a continuación explicaré como está compuesta esta subrutina ya que es muy

larga la codificación de la misma.

Explicaré esta línea de código:

Private Sub cargar()

DataGridView1.Rows.Clear()

30

DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect

DataGridView1.ColumnCount = 11

DataGridView1.ColumnHeadersDefaultCellStyle.BackColor = Color.White

DataGridView1.ColumnHeadersDefaultCellStyle.ForeColor = Color.Black

DataGridView1.ColumnHeadersDefaultCellStyle.Font = New

Font(DataGridView1.Font, FontStyle.Bold)

DataGridView1.ColumnHeadersBorderStyle =

D+ataGridViewHeaderBorderStyle.None

DataGridView1.CellBorderStyle =

DataGridViewCellBorderStyle.SingleHorizontal

DataGridView1.GridColor = Color.Black

DataGridView1.Columns(0).Width = 60

DataGridView1.Columns(0).HeaderText = "numero"

DataGridView1.Columns(1).Width = 210

DataGridView1.Columns(1).HeaderText = "RFC"

DataGridView1.Columns(2).Width = 80

DataGridView1.Columns(2).HeaderText = "nombre"

DataGridView1.Columns(3).Width = 80

DataGridView1.Columns(3).HeaderText = "Concepto"

DataGridView1.Columns(4).Width = 80

DataGridView1.Columns(4).HeaderText = "ciudad"

DataGridView1.Columns(5).Width = 80

DataGridView1.Columns(5).HeaderText = "IVA"

DataGridView1.Columns(6).Width = 80

DataGridView1.Columns(6).HeaderText = "subtotal"

DataGridView1.Columns(7).Width = 80

DataGridView1.Columns(7).HeaderText = "total"

DataGridView1.Columns(8).Width = 80

DataGridView1.Columns(8).HeaderText = "por"

DataGridView1.Columns(9).Width = 80

DataGridView1.Columns(9).HeaderText = "status"

31

DataGridView1.Columns(10).Width = 80

DataGridView1.Columns(10).HeaderText = "fecha"

Dim fila(11) As String

base.consultar("select*from Factura")

While myreader.Read()

fila(0) = myreader.GetValue(0)

fila(1) = myreader.GetString(1)

fila(2) = myreader.GetString(2)

fila(3) = myreader.GetString(3)

fila(4) = myreader.GetString(4)

fila(5) = myreader.GetValue(5)

fila(6) = myreader.GetValue(6)

fila(7) = myreader.GetString(7)

fila(8) = myreader.GetString(8)

fila(9) = myreader.GetString(9)

fila(10) = myreader.GetString(10)

fila(5) = myreader.GetValue(5)

DataGridView1.Rows.Add(fila)

End While

base.cerrar()

End Sub

Las primeras 10 líneas de código sirve para el diseño físico del datagridview que está

en el formulario de guardar, ahí le ponemos cuantas filas y columnas quieres el

tamaño, el color que quieres poner en las celdas y las filas etc. En pocas palabras

modifica todo lo que es el diseño del datagridview.

Las siguientes líneas de código, sirven para mandar a llamar todos los registros que

estén guardados en la base de datos y mostrarlos en el datagridview, por esto es

32

importante poner mucha atención, ya que si cometemos el mínimo error no corre el

programa, ya que se está manejando con la base de datos, que es muy sensible a

errores por ejemplo, en esta línea de código:

DataGridView1.Columns(0).HeaderText = "numero"

DataGridView1.Columns(1).Width = 210

Explicaré más a detalle la función que hace esta línea de código, DataGridView1 es

el nombre que se le otorga a la parte donde se visualizan los datos de la base de

datos, se le puede poner como sea, en este caso yo preferí dejarle el nombre que me

puso por default al crearlo así, Columns son las columnas del datagridview y tiene

(0) osea esto significa que es la primera columna en este tipo de programación se

empieza desde 0,1,2,3 etc. Dependiendo el número de columnas que quieras utilizar,

después aparece el HeaderText = “numero” esto significa, o mejor dicho esto sirve

para que en el datagridview en la parta de arriba en la primera columna aparezca con

el nombre de número, aquí es importante poner tal y cual está en la base de datos ya

que de no hacerlo te marcaría un error y como ya antes mencioné manejar bases de

datos es complicado y así se hace con las demás columnas.

Después en las líneas siguientes es donde se hace la consulta a la base de datos,

con esta línea de código:

base.consultar("select * from Factura")

Base es el módulo de conexión, esto se explicará más adelante, consultar es una

variable y el select son sintaxis SQL, esa sintaxis quiere decir, que seleccione todos

los registros que estén guardados en la tabla Facturas . Las siguientes líneas de

código sirven para que muestre los registros que busco al datagridview y los

acomoda en las filas correspondientes.

Se cierra la base con esta línea de código:

33

base.cerrar()

Y ya se cierra todo el bloque con:

End Sub

Bueno ya explicada la subrutina cargar, explicaré la siguiente línea de codigo que

sirve para mandar a llamar los registros de la base de datos al data grid view del

formulario.

Ahora explicaré este bloque de código:

If DataGridView1.RowCount >= 1 Then

TextBox1.Text = DataGridView1.CurrentRow.Cells(0).Value

TextBox2.Text = DataGridView1.CurrentRow.Cells(1).Value

TextBox3.Text = DataGridView1.CurrentRow.Cells(2).Value

TextBox4.Text = DataGridView1.CurrentRow.Cells(3).Value

TextBox5.Text = DataGridView1.CurrentRow.Cells(4).Value

TextBox6.Text = DataGridView1.CurrentRow.Cells(5).Value

TextBox7.Text = DataGridView1.CurrentRow.Cells(6).Value

TextBox8.Text = DataGridView1.CurrentRow.Cells(7).Value

TextBox9.Text = DataGridView1.CurrentRow.Cells(8).Value

TextBox10.Text = DataGridView1.CurrentRow.Cells(9).Value

TextBox11.Text = DataGridView1.CurrentRow.Cells(10).Value

End If

Este código te muestra gráficamente los registros que se encuentran actualmente en

la base de datos, automáticamente cuando vayas a ingresar un registro, se actualiza

el datagridview con este código para el usuario que está utilizando esta aplicación,

ya que si no sucediera esto, el usuario no podría ver si en realidad el registro fue

guardado correctamente en la base de datos al instante, el usuario sólo podría verlo

si él abre la base de datos directamente desde el programa SQL SERVER 2008, y si

34

hace esa acción no tendría caso haber realizado la aplicación ya que a fuerzas

tendrías que estar revisando a cada rato la base de datos, mejor si lo haces así, ya

ingresarías los registros directamente desde la base de datos sin utilizar la aplicación

ya creada (SISFA).

Explicaré las siguientes 2 líneas de código:

botones(1, 1, 1, )

cajas(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

Estas líneas de código ya habían sido explicadas por que fueron requeridas en la

codificación de los botones anteriores, prácticamente en este botón realiza la misma

función habilita y deshabilita las cajas y los botones, lo único que en realidad cambia

son los bits, en esta ocasión todos los botones están activados (1 significa activado y

0 desactivado), y las cajas desactivadas.

La siguiente línea de código sirve para mandar un mensaje si los campos del

formulario están incompletos:

MsgBox("datos incompletos", MsgBoxStyle.Critical)

Esto es importante ponerlo cuando trabajamos con programas conectados con base

de datos, porque si creaste la base de datos y le pusiste que no acepte campos

nulos (not null) en otras palabras que no acepte campos vacíos, te generará un error

en la base de datos.

A continuación pondré un bloque de código bastante extenso, pero no muy

complicado ya que, lo que a continuación veremos ya ha sido explicado con

anterioridad.

35

Como pueden ver estas líneas de código son muy parecidas a la explicadas las

páginas anteriores, en realidad prácticamente viene siendo lo mismo sólo cambia la

acción que hace en la base de datos ya que en esta ocasión modifica el registro con

la sentencia update y después realiza las demás operaciones como actualizar el

datagridview, cargar las subrutinas de botones y cajas, etc.

If (TextBox1.Text <> "" And TextBox2.Text <> "" And TextBox3.Text <> "" And

TextBox4.Text <> "" And TextBox5.Text <> "" And TextBox6.Text <> "" And

TextBox7.Text <> "" And TextBox8.Text <> "" And TextBox9.Text <> "" And

TextBox10.Text <> And TextBox11 <> "") Then

base.ejecutar("update Facturas set numero= " & TextBox1.Text & ",RFC='" &

TextBox2.Text & "',nombre='" & TextBox3.Text & "',Concepto='" & TextBox4.Text &

"',ciudad='" & TextBox5.Text & "',IVA='" & TextBox6.Text & "',subtotal='" &

TextBox7.Text & "',total='" & TextBox8.Text & "',por='" & TextBox9.Text & "',status='"

& TextBox10.Text & "',fecha='" & TextBox11.Text & "")

MessageBox.Show("Datos Guardados Correctamente", "Transaccion

Exitosa", MessageBoxButtons.OK, MessageBoxIcon.Information)

cargar()

If DataGridView1.RowCount >= 1 Then

TextBox1.Text = DataGridView1.CurrentRow.Cells(0).Value

TextBox2.Text = DataGridView1.CurrentRow.Cells(1).Value

TextBox3.Text = DataGridView1.CurrentRow.Cells(2).Value

TextBox4.Text = DataGridView1.CurrentRow.Cells(3).Value

TextBox5.Text = DataGridView1.CurrentRow.Cells(4).Value

TextBox6.Text = DataGridView1.CurrentRow.Cells(5).Value

TextBox7.Text = DataGridView1.CurrentRow.Cells(6).Value

TextBox8.Text = DataGridView1.CurrentRow.Cells(7).Value

TextBox9.Text = DataGridView1.CurrentRow.Cells(8).Value

TextBox10.Text = DataGridView1.CurrentRow.Cells(9).Value

36

TextBox11.Text = DataGridView1.CurrentRow.Cells(10).Value

End If

botones(1, 1, 1, )

cajas(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

cargar()

End If

End If

End Sub

De este modo se termina la codificación de unos de los botones más importantes de

este formulario, como se pudieron dar cuenta es bastante código, pero muy

necesaria cada línea de código si quieres que tu programa funcione correctamente.

Se puede reducir el código, si no ponemos mensajes de alertas o ponemos

sentencias simples, pero ese no es el caso, si vas a realizar un programa que se

completó para que tu trabajo se reconocido, porque si entregas un trabajo pésimo no

te tomarán en cuenta en trabajos futuros.

2.1.5 Creación del formulario modificar

Este formulario está diseñado para modificar los registros que ya se guardaron desde

la ventana guardar, se podrá modificar algún dato de los registro o también se podrá

eliminar del sistema algún registro por completo de la base de datos y para poder

realizar todas estas operaciones será necesario utilizar la función de buscar, ya que

por ejemplo se buscará primero los datos de la factura que se quiera visualizar para

después realizar la modificación que se desee ya sea eliminar o modificar algún dato.

Este formulario cuenta con cinco botones que vamos a codificar uno por uno; esto se

explicará por separado para una mejor comprensión, cuenta también con once cajas

de texto, once etiquetas, un groupbox y un datagridview (ver figura 12), los botones

nos sirven para que hagan las funciones del formulario ya que sin ellos sería

imposible interactuar con él, por eso cada botón lleva su codificación individual, las

cajas de texto es para ingresar los datos que vamos a modificar a la base de datos,

37

las etiquetas sirve como referencia para que veas qué campo va en las cajas de

texto, el groupbox sirve para darle una mejor presentación u ordenamiento al

formulario para separar partes dentro del mismo formulario, y el datagridview sirve

para reflejar los registros que se van a buscar y aparezca únicamente ese registro y

a la hora de modificarlo se pueda observar que se modificó correctamente dentro de

la base de datos como deseamos. ( ver figura 12)

Figura 12: Formulario Modificar.

Fuente: Elaboración propia

Explicaremos la codificación de los botones: el botón nuevo no tiene muchas líneas

de código ya que sólo su función es limpiar las cajas de textos.

TextBox1.Text = ""

TextBox2.Text = ""

TextBox3.Text = ""

TextBox4.Text = ""

TextBox5.Text = ""

TextBox6.Text = ""

TextBox7.Text = ""

TextBox8.Text = ""

TextBox9.Text = ""

TextBox10.Text = ""

TextBox11.Text = ""

38

Sólo se pone el nombre de la caja de texto, la propiedad text el símbolo de igual y

dos comillas para limpiar las cajas de textos.

El botón cerrar ya sabemos cómo funciona de igual manera que el que empleamos

en el formulario de guardar, para que sólo cierre la ventana en este caso sólo cerrara

la ventana de modificar:

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button3.Click

If MsgBox("¿Desea cerrar la ventana modificar ?", MsgBoxStyle.YesNo,

"Confirmar") = MsgBoxResult.Yes Then Me.Close()

End Sub

Ahora veremos el botón modificar, este botón lo único que hace es mandar lo que

este en el datagridview a las cajas de texto y ya poder modificar los registros que

estén en la base de datos y ya se le da guardar y ya se modifica el registro ahora

presentaremos algo del código que hace posible lo que ya describimos, le damos

doble clic al botón y codificamos ahí dentro esto:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button2.Click

g = 2

botones(0, 1, 1, 0, 1, 1)

cajas(1, 0)

TextBox1.Text = DataGridView1.CurrentRow.Cells(0).Value

TextBox2.Text = DataGridView1.CurrentRow.Cells(1).Value

TextBox3.Text = DataGridView1.CurrentRow.Cells(2).Value

TextBox4.Text = DataGridView1.CurrentRow.Cells(3).Value

TextBox5.Text = DataGridView1.CurrentRow.Cells(4).Value

TextBox6.Text = DataGridView1.CurrentRow.Cells(5).Value

39

TextBox7.Text = DataGridView1.CurrentRow.Cells(6).Value

TextBox8.Text = DataGridView1.CurrentRow.Cells(7).Value

TextBox9.Text = DataGridView1.CurrentRow.Cells(8).Value

TextBox10.Text = DataGridView1.CurrentRow.Cells(9).Value

TextBox11.Text = DataGridView1.CurrentRow.Cells(10).Value

End Sub

Como lo pueden observar volvemos a utilizar las subrutinas botones y cajas de igual

manera como ya lo habíamos explicado anteriormente y ya saben el procedimiento y

la función de esto, por esto solo explicare la segunda parte del código.

TextBox1.Text = DataGridView1.CurrentRow.Cells(0).Value

Esto sirve para que los datos que estén en el datagridview se muestren en las cajas

de texto, para que hace sea posible editarlos y así modificar el registro y asi poder

guardarlo por ejemplo, si ingresaste un registro y no te diste cuenta que tipiaste su

nombre o dirección mal y lo guardaste, para eso sirve toda esas líneas de código, y

así no tener que eliminar el registro completo y volverlo a tipiar esto es una gran

ayuda a las personas que manejan grandes cantidades de información que por lo

mismo de manejar mucha información se confunden al tipiar algún registro y así nada

mas con el botón de modificar se resuelve ese problema. Y como ya lo saben se

cierra con:

End Sub

Ya que si no lo cierran marcara un error y será imposible poder correr el programa.

Ahora es el turno de explicar el botón eliminar, este botón es uno de los más

importantes en todo el formulario ya que sin este botón sería imposible eliminar.

40

A continuación mostraremos un poco del código utilizado en la realización del botón

eliminar:

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button4.Click, Button1.Click

Me.FacturasTableAdapter.FillBy1(Me.SISFADataSet.Facturas, TextBox3.Text)

If MessageBox.Show(" REALMENTE DESEA ELIMINAR AL REGISTRO

SELECCIONADO", "CONFIRMAR", MessageBoxButtons.YesNo,

MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then

base.ejecutar("update ingreso_empleados set status=0 where id_empleado =

" & DataGridView1.CurrentRow.Cells(0).Value)

MessageBox.Show("Estado Eliminado u.u!!", "EXITO",

MessageBoxButtons.OK, MessageBoxIcon.Information)

cargar()

If DataGridView1.RowCount >= 1 Then

TextBox1.Text = DataGridView1.CurrentRow.Cells(0).Value

TextBox2.Text = DataGridView1.CurrentRow.Cells(1).Value

TextBox3.Text = DataGridView1.CurrentRow.Cells(2).Value

TextBox4.Text = DataGridView1.CurrentRow.Cells(3).Value

TextBox5.Text = DataGridView1.CurrentRow.Cells(4).Value

TextBox6.Text = DataGridView1.CurrentRow.Cells(5).Value

TextBox7.Text = DataGridView1.CurrentRow.Cells(6).Value

TextBox8.Text = DataGridView1.CurrentRow.Cells(7).Value

TextBox9.Text = DataGridView1.CurrentRow.Cells(8).Value

TextBox10.Text = DataGridView1.CurrentRow.Cells(9).Value

TextBox11.Text = DataGridView1.CurrentRow.Cells(10).Value

Else

End If

End If

41

End Sub

En esta parte del sistema también se manda a llamar otra vez subrutina que se

llama cargar que ya sabemos cómo trabaja.

Bueno ya explicada la subrutina cargar explicare todo el código completo de eliminar.

Comenzamos con una condición, que sirve como advertencia, para ver si realmente

quieres eliminar el registro, y no solo fue un error por eso al seleccionar un registro

del datagridview y dar el botón eliminar aparecerá un advertencia, y ahí ya eliges si

en realidad quieres eliminar el registro si le das que no, solamente se quita el

mensaje, pero si le das que si se elimina el registro y te manda un mensaje diciendo

que el registro se ha eliminado exitosamente. Después ponemos la subrutina cargar

para que se reflejen los registros en el datagridview, las siguientes líneas de código

descuentan el registro que fue eliminado y así ya no aparecerá más en el

datagridview.

En general eso es lo que realiza todo el código, al darle el botón eliminar te muestra

un mensaje le das que sí, te manda otro mensaje confirmando que se ha eliminado el

registro, después cargamos los registros al data, y podremos observar que el registro

ya ha sido eliminado.

El botón buscar en realidad si es muy largo el código ya que en un solo botón hace

todas las operaciones.

A continuación presentaré el código del botón buscar:

Dim indicador As Integer

indicador = 0

Try

If (campo = "campos") Then

base.consultar("select * from Facturas")

42

Else

base.consultar("select * from Factura where " & campo & " like '" &

TextBox1.Text & "')

End If

DataGridView1.Rows.Clear()

DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect

DataGridView1.ColumnCount = 11

DataGridView1.ColumnHeadersDefaultCellStyle.BackColor = Color.White

DataGridView1.ColumnHeadersDefaultCellStyle.ForeColor = Color.Black

DataGridView1.ColumnHeadersDefaultCellStyle.Font = New

Font(DataGridView1.Font, FontStyle.Bold)

DataGridView1.ColumnHeadersBorderStyle =

DataGridViewHeaderBorderStyle.None

DataGridView1.CellBorderStyle =

DataGridViewCellBorderStyle.SingleHorizontal

DataGridView1.GridColor = Color.Black

DataGridView1.Columns(0).Width = 60

DataGridView1.Columns(0).HeaderText = "numero"

DataGridView1.Columns(1).Width = 210

DataGridView1.Columns(1).HeaderText = "RFC"

DataGridView1.Columns(2).Width = 80

DataGridView1.Columns(2).HeaderText = "nombre"

DataGridView1.Columns(3).Width = 80

DataGridView1.Columns(3).HeaderText = "Concepto"

DataGridView1.Columns(4).Width = 80

DataGridView1.Columns(4).HeaderText = "ciudad"

DataGridView1.Columns(5).Width = 80

DataGridView1.Columns(5).HeaderText = "IVA"

DataGridView1.Columns(6).Width = 80

DataGridView1.Columns(6).HeaderText = "subtotal"

DataGridView1.Columns(7).Width = 80

43

DataGridView1.Columns(7).HeaderText = "total"

DataGridView1.Columns(8).Width = 80

DataGridView1.Columns(8).HeaderText = "por"

DataGridView1.Columns(9).Width = 80

DataGridView1.Columns(9).HeaderText = "status"

DataGridView1.Columns(10).Width = 80

DataGridView1.Columns(10).HeaderText = "fecha"

Dim fila(11) As String

base.consultar("select*from Factura")

While myreader.Read()

fila(0) = myreader.GetValue(0)

fila(1) = myreader.GetString(1)

fila(2) = myreader.GetString(2)

fila(3) = myreader.GetString(3)

fila(4) = myreader.GetString(4)

fila(5) = myreader.GetValue(5)

fila(6) = myreader.GetValue(6)

fila(7) = myreader.GetString(7)

fila(8) = myreader.GetString(8)

fila(9) = myreader.GetString(9)

fila(10) = myreader.GetString(10)

fila(5) = myreader.GetValue(5)

DataGridView1.Rows.Add(fila)

End While

base.cerrar()

End Sub

Este código es relativamente largo porque en el botón se hacen muchas

operaciones, se realiza la búsqueda a la base de datos. Se implementa el diseño del

44

datagridview también te los muestra en el data gridview, te muestra si el empleado

no se encontró, abre y cierra la base de datos, limpia las cajas de texto, habilita y

deshabilita los botones que no se estén usando en el momento que esté realizando

la búsqueda, etc.

4. CONCLUSIONES

La aplicación creada dentro de la empresa VERSUS RISK, S.A. de C.V. se diseñó

por un problema planteado, que era el de llevar un control sobre los datos que las

facturas que se van recibiendo, ya que al no tener un buen control sobre esto

existían algunos problemas planteados como el de perdida de dinero.

Cuando la aplicación que fue diseñada para la empresa, se terminó por completo, se

empezó a revisar sus alcances y se pudo observar que alcanzó sus objetivos

planteados desde el principio.

La aplicación SISFA se puso a prueba en un tiempo de 20 días en la compañía,

donde se pudieron ver a grandes rasgos los cambios en la pérdida de información de

las facturas y a futuro se podrían ver mensualmente como no habría más pérdida de

dinero, ya que existían facturas viejas que eran del 2012 y nuevas de este años se

fueron poniendo su número de folio correspondiente a cada una y se fueron

archivando y ya no había más atraso en la revisión de las facturas al azar, ya que

de esta manera es más rápido buscar alguna factura por su folio y una vez buscada

se podría modificar algún campo que se desee de ella.

45

Este sistema cuenta con una seguridad de inicio de sesión para que sólo las

personas autorizadas puedan acceder a ella y de una manera sencilla de funcionar

para que el momento que se desee se puede capacitar a una persona que los ayude

con el registro de las facturas, el Director de la empresa quedó muy satisfecho con el

sistema.

5. FUENTES DE INFORMACIÓN

Fundación Wikimedia, Inc. (15 de Marzo de 2005). wikipedia. Recuperado el 26 de julio de 2013, de Lenguaje_de_progrmacion: http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n

Fundación Wikimedia, Inc. (23 de Julio de 2006). wikipedia. Recuperado el 19 de Agosto de 2013, de Visual Basic .NET: http://es.wikipedia.org/wiki/Visual_Basic_.NET

Javier, C. F. (2003). Visual Basic.Net. México: Guías inmediatas de computación.

Microsoft. (15 de Noviembre de 2007). MSDN. Recuperado el 10 de Agosto de 2013, de Diseñar diagramas de base de datos: http://msdn.microsoft.com/es-es/library/ms171971(v=vs.90).aspx

PECK, G. (2004). CrystalReports Resultados Profesionale. México: Mcgraw-Hill / Interamericana de México.

46

6. ANEXOS

47