Você está na página 1de 47

1.

INTRODUCCIN
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 Ingeniera. La estada
la realic en el Departamento de Corporativo fungiendo como mi asesor empresarial
el Ing. David Alberto Herrera Martnez y como representante legal de la empresa el
Ing. David Alberto Herrera Martnez.
PLANTEAMIENTO Y DELIMITACIN DEL PROBLEMA
En esta Memoria Estada se explica a grandes rasgos el funcionamiento del sistema
(SISFA) y como fue implementado a la empresa que dio la oportunidad de ejercer las
prcticas laborales, de igual manera se explica detalladamente la funcionalidad de
los formularios y la implementacin del cdigo en dicho sistema elaborado, de igual
manera se explicar todo referente a la base de datos, que en esta ocasin est
elaborado en un manejador de base de datos con el nombre de SQL SERVER 2008,
esto sirve para poder almacenar grandes cantidades de informacin aadidas
mediante una conexin hecha mediante mdulos en Visual Basic y manipulado por
medio de los formularios.
En esta Memoria tambin se explicar cmo fuimos elaborando el sistema paso a
paso, mediante una plataforma de programacin bsica en el mbito de la
programacin en general, que se encarga de realizar proyectos en escritorio, web,
dispositivos mviles, etc., llamado Microsoft Visual Studio 2010.
Describiremos todos los componentes utilizados en dichos programas, explicremos
el mdulo de conexin, a la base de datos ya elaborada en SQL SERVER 2008, la
funcionalidad de cada formulario.

En resumen se explicar

todo lo referente al proyecto elaborado mediante las

prcticas de estada hechas en las compaa Versus Risk, S.A. de C.V., as como
todo el funcionamiento en general, implementacin del sistema en las mquinas de la
oficina, y manejo del sistema de facturas (SISFA), la explicacin de formularios por
separados, para la mayor comprensin, las herramientas utilizadas para la
realizacin de los formularios, explicaremos todos los botones, funcionalidad y el
cdigo 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 prdidas de dinero, y conflicto cuando se
requiere buscar algn 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 estara
teniendo un buen nivel administrativo desequilibro que es necesario solucionar.
Por lo cual se deber crear una aplicacin 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 da en la empresa Versus Risk, S.A. de C.V., slo se utilizan tablas en Excel
para poder controlar las facturas, pero si se necesita buscar los datos de una factura
en especfica por algn problema que surja es muy tardado buscarla y una compaa
no puede permitirse eso, debe de estar en un buen rango a nivel administrativo.
A continuacin la problemtica planteada anteriormente se expresa en interrogantes,
las cuales guiarn el proyecto:
Pregunta Principal:
Qu estrategias se pueden aplicar, para poder llevar un control de las facturas y
resolver los problemas planteados?

Preguntas especficas:
1. Cules recursos o mtodos se pueden utilizar para la creacin de una
aplicacin que pueda llevar el control sobre las facturas?
2. Qu software nos ayudara para crear un control sobre las facturas?
3. Qu Sistema Gestor de Base de Datos podra ayudarnos en la creacin de
una aplicacin para el control de las facturas?
4. En qu entorno se podr crear la aplicacin que lleve un control sobre las
facturas?

2. JUSTIFICACIN Y OBJETIVO

JUSTIFICACIN
En cualquier compaa siempre hay un momento en que se tiene un desorden de
documentos, archivos, facturas, etc. En este caso le pondremos atencin a las
facturas, y los problemas que pueden llegar a ocasionar si no se tiene un control
sobre ellas, sin duda alguna el problema ms importante que puede presentarse al
no llevar un buen control con las facturas son, en algunos momentos la prdida 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 ayudara a tener un mejor control sobre los gastos que se realizan
mes con mes y aceleraran la bsqueda de alguna factura en el momento que se
necesita para verificar algn dato sobre ella, se podr dar de baja alguna factura en
el momento que se quiera eliminar, dar de alta y registrar la informacin importante
acerca de la factura que se est registrando en el momento, modificaciones del
mismo, y as evitar la prdida de informacin manipulada por varias personas, el
sistema ayudar a que una sola persona se haga cargo de l y le sea fcil de usar,
por lo cual cuenta con la seguridad de la contrasea.
Dado esta situacin el sistema SISFA reducira drsticamente estos problemas con el
control y la prdida de cantidades de dinero, adems de reducir los tiempos de
respuesta, ya que de cada factura se capturara directamente a como se vayan
recibiendo dentro de las interfaces del sistema.
Adems el empleado que sea encargado de almacenar la informacin tendra pocos
mrgenes de error, y se le facilitara el registro de las facturas ya que el sistema ser
fcil de usar y se tendr la seguridad que slo las personas autorizadas podrn tener
acceso al manejo del sistema una vez que cuenten con la contrasea.

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 informacin
de la factura sin eliminarla por completa, tambin se podr buscar por nombre de
institucin que emite la factura.
Objetivos especficos:
1. Analizar el uso e implementacin de un sistema conectado a una base de
datos para controlar las facturas recibidas.
2. Una aplicacin diseada en un entorno de programacin conectada a una
base de datos diseada en algn Sistema Gestor de Base de Datos nos
ayudara para tener un buen control.
3. En SQL Server 2008 se podrn crear las tablas para la base de datos que se
necesita.
4. En Microsoft Visual Studio 2010 podrn crear la aplicacin y hacer la conexin
con la base de datos.

3. DESARROLLO TERICO
CAPTULO I. METODOLOGA PARA LA ELABORACIN DE UN
SOFTWARE LIBRE Y FIABLE

1.1 METODOLOGA
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 ELABORACIN 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 cmo ir elaborando el proyecto o sistemas.
1.2.1 Pasos para la elaboracin de un software fiable:
Paso1:
En esta etapa evalu la peticin del software, ver si era factible o no llevar a cabo la
elaboracin del proyecto, en esta etapa es importante que el cliente, en este caso el
dueo de la compaa Versus Risk, S.A. de C.V., aporte ideas de cmo 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 ningn inconveniente.

Paso 2:
Despus 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 algn
desacuerdo que tenga, para hacer modificaciones antes de que el prototipo sea

llevado acabo) para ser elaborado se hace un anlisis de los requerimientos


necesarios para que el software sea elaborado.
Paso 3:
Despus de que se haya revisado la representacin de los requerimientos, se crea el
diseo elaborado del software. El diseo debe ocurrir antes de que comience la
construccin del software ya que dependiendo el diseo se har la codificacin. Sin
embargo, el diseo 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
rpida ya que esto sirva de muestra para el cliente se d una idea de cmo quedara
elaborado el software, y as poderse dar una idea si es lo que en realidad necesitaba
hablando tcnicamente, o si quiere cambiar diseo de las interfaces.
Paso 5:
Una vez que el prototipo ha sido probado, se presenta al cliente, el cual "conduce la
prueba" de la aplicacin y sugiere modificaciones.
Es aqu donde el cliente puede examinar una representacin implementada de los
requerimientos del programa, sugerir modificaciones que harn 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.

CAPTULO II. METODOLOGA O DESCRIPCIN DE LAS


ACTIVIDADES DESARROLLADAS EN LA ESTADA.
2.1 DESARROLLO DEL PROYECTO SISFA

Este es un sistema desarrollado en las 525 horas que he laborado en la compaa de


Servicios de ingeniera

llamado Versus Risk, S.A. de C.V. , en conjunto con la

Contadora y el Director Corporativo tomaron la decisin de pedir una aplicacin que


pudiera llevar un control con los datos de las facturas recibidas diariamente ellos
dicen: que tena una problemtica de prdidas de dinero, por ejemplo: Una factura no
se guard o se perdi en algn 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 aplicacin pueda dar de
baja, alta modifique, busque y lleve un control de todas las facturas que se reciben
diariamente, actualmente este control slo 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 ms o menos llevan, por ejemplo se toma
el nmero de la factura, Nombre de la institucin que emite la factura, el concepto de
esa factura, IVA, Total , Subtotal y la fecha en que fue emitida y tambin se le
agregar el RFC de la institucin, esto ser de ayuda cuando se tiene que hacer
algn pago mediante una transaccin por internet, la contadora slo tendr que
buscar la intuicin y podr ver cul es el RFC de este y as ser ms rpido realizar
la transaccin; tambin ser importante saber en qu Ciudad se emiti la factura,
quin realiz la compra y en qu status se encuentra se deber tomar en cuenta que
slo hay dos categoras: pendiente o pagado.
Por este motivo hemos creado este sistema para realizar ms rpido las bsquedas
de las facturas en el momento y as agilizar el trabajo del departamento de
contabilidad y as evitar ms prdida de dinero. Y ya no tardar ms buscando una por
una en las tablas de Excel, aqu en formulario se realizarn consultas por medio de
las interfaces ya respectivamente programadas en la plataforma de programacin
Microsoft Visual Estudio 2010 conectado a una base de datos en SQL SERVER
2008.
2.1.1 Creacin del formulario de presentacin.
8

En primera parte antes de todo, aunque algunos programadores no toman esta parte
del proyecto con mucha importancia, porque se enfocan ms en la funcionalidad del
proyecto que tambin es importante, pero tambin igual de importante es el diseo
del programa, por eso en este proyecto cree un formulario de presentacin al
programa SISFA. ( ver figura 1)

Figura 1. Formulario de presentacin


Fuente: Elaboracin propia.

Como ya mencionaba, este formulario es la presentacin del proyecto, sin una


presentacin a veces los clientes no encuentran interesante el sistema, ya que esto
no es bueno porque los clientes utilizarn ese sistema la mayor parte del tiempo y si
no les llama la atencin 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. Tambin puedes utilizar el tipo de presentacin 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
presentacin del sistema, el diseo del formulario fue realizado por personas
involucradas en el sistema en un programa de edicin llama Photoshop en su edicin
completa CS5.5. Es una imagen insertada al formulario por medio de la opcin de
propiedades ya incluido por default en la plataforma de programacin de Microsoft
Visual Estudio 2010 (Fundacin 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 presentacin, por ejemplo, se habl de la
9

presentacin con el contador y se acord elegir la imagen que dise con el logo de
la empresa y del color del rea de contadura en Photoshop CS5.5, como es
presentacin este formulario no tiene botones, caja de textos, tampoco etiquetas. As
que tal vez te preguntars dnde se codifica, es muy sencillo, se codifica dentro del
formulario dndole doble clic en medio del formulario, ah se redirige al espacio de
trabajo para empezar la codificacin del formulario, como es slo una simple
presentacin se codificar para que el formulario haga la accin de ocultarse y se
redirige al formulario de contrasea, ya dicho esto mostraremos el cdigo.
A Continuacin mostraremos un poco del cdigo utilizado en la realizacin del
formulario de presentacin:
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
Me.Hide()
clave.Show()
Timer1.Enabled = False

10

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
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 pblica llamada

11

Presentacin (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 lneas de cdigo programacin. Le damos doble clic al timer que
arrastramos y codificamos ah, escribimos, Timer1.Tick, la funcin que hace es
activar el timer al correr el formulario. Despus 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 contrasea, despus hacemos una condicin:
If Me.Opacity = 0.0 Then Me.Hide() clave.show() End If,
Toda esta lnea de cdigo en programacin se llama condiciones, sabemos que son
condiciones cuando se empieza con un If. Esta lnea de cdigo sirve para que se
oculte el formulario y redirija al formulario de contrasea se cierra las lneas de
cdigo con el End If y el End Sub.

2.1.2 Creacin del formulario de contrasea


El formulario de clave es para darle una seguridad a la aplicacin (Microsoft, 2007)
esa ventana se implementar en el cdigo la contrasea y el usuario, para que slo
tengan acceso las personas que conozcan dichas cosas, porque as nos fue
12

solicitado por el director ya que slo 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
contrasea, dos cajas de texto, dos botones, (Iniciar y Salir) y un progressbar,
tambin se puso la imagen de presentacin de fondo del formulario para darle
presentacin al formulario. ( ver figura 2)

Figura 2: Formulario de Clave


Fuente: Elaboracin propia

A Continuacin mostraremos un poco del cdigo utilizado en la realizacin del


formulario de contrasea:
Public Class clave
Dim conta As Integer
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
Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
13

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("Despus de 3 intentos el programa se cerrara automaticamente")
Presentacion.ActiveForm.Close()
Else
MsgBox("Contrasea 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

Declaramos una variable pblica llamada conta, que explicaremos su propsito ms


tarde; todo el cdigo siguiente est dentro del primer botn que es

iniciar,

declaramos lo que va ser el nombre del usuario que este caso es versus y la
contrasea que ser risk, todo lo dems del cdigo 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
14

contrasea o el nombre del usuario y que al tercer intento errneo te bote el sistema,
de lo contrario si ingresaste correctamente los datos te mostrar un mensaje de
contrasea incorrecta y que vuelvas a intentarlo. ( ver figura 3)

Figura 3: Mensaje Contrasea Incorrecta


Fuente: Elaboracin propia

En caso de que se llegue a poner incorrecta la contrasea mandar otro mensaje


diferente que despus de 3 intentos se cerrar automticamente, esto nos sirve para
una seguridad del sistema ya que lo cerrar automticamente al tercer intento fallido.
( ver figura 4)

Figura 4: Mensaje de Cierre Automtico


Fuente: Elaboracin propia

Ahora veremos detalladamente la codificacin del siguiente botn que es el de


cancelar, la funcin de este botn es que tiene la capacidad de sacarte del sistema, a
continuacin veremos el cdigo implementado en el botn:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
15

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 codificacin va adentro del botn, no lo hagan
en otra parte porque puede marcar errores o simplemente el programa no corre, por
eso siempre es importante ver dnde implementar el cdigo ya que de eso depende
toda la funcionalidad y eficacia de tu sistema, ya dicho esto ltimo, con esto
acabamos con la codificacin de este formulario como podrn darse cuenta no es
complicado

es

solamente

mucho

razonamiento

lgico,

aprenderse

que

funcionalidad tiene cada lnea de cdigo, para esto es importante no dejar de


practicar con los programas, o no slo quedarte con lo que te ensean en la escuela
si no moverle por tu cuenta y vers que tendrs muy buenos resultados a la larga,
tendrs programas ms completos y con mayor eficacia, y con la prctica la
programacin ser mucho ms fcil, ya dicho esto pasaremos a explicar el siguiente
formulario.
2.1.3 Creacin 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 presentacin al programa, una de las principales funciones de este formulario
es ser un contenedor, esto quiere decir que los dems formularios del sistema se
presentarn dentro de este formulario y a travs del men podemos tener acceso a
las dems ventanas (Fundacin Wikimedia, Inc., 2005) ,esto quiere decir que desde
el formulario de men mandamos a llamar los dems formularios, pero esto no sera
posible si antes no le ponemos una opcin en propiedades, ya que sin esto sera
slo un simple formulario como los dems, y no realizara la funcin que le estoy
describiendo, de igual manera para darle un mejor diseo utilizaremos otras
herramientas para este formulario, como poner la hora completa con un timer, algn
anunci para ello se cuenta con StatusStrip, un Menustrip y un toolstrip, estas
16

herramientas son muy fcil de usar, la que ms nos interesa es el Menustrip este
sirve para crear pestaas 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 adems de agregar la opcin para poder salir por completo del sistema,
slo se codifican las pestaas que pueden ser editadas directamente desde el
diseo, no a fuerzas tiene que ser por cdigo aunque nosotros codificaremos estas
pestaas para que manden a llamar los formularios realizados en el sistema.
Primero explicaremos cmo convertimos el formulario en contenedor, para esto
seleccionamos el formulario, despus 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 fijndose en el formulario, se
darn 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: Elaboracin propia

Bueno ahora le presentar el cdigo utilizado para mandar a llamar los otros
formularios desde el MenuStrip, en el MenuStrip se aadir las pestaas de Guardar,
Modificar, Buscar y la pestaa de Salir del sistema. ( ver figura 6)

17

Figura 6: Pestaas del Men.


Fuente: Elaboracin propia

A Continuacin mostraremos un poco del cdigo utilizado en la realizacin 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

End Sub

18

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
formulario.Show()
End Sub
Private Sub FacturasToolStripMenuItem_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs)
End Sub
19

End Class
Esta parte del cdigo 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: Elaboracin propia

Voy a dejar en claro esta estas lneas de cdigo 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
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)

20

Figura 8: Mensaje en movimiento.


Fuente: Elaboracin propia

Ahora, a continuacin se mostrar el cdigo:


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 cdigo sencillamente nos sirve para poder salir del sistema utilizado
una condicin if ya que al presionar salir nos manda un mensaje hacindonos una
pregunta si deseamos salir del programa en caso de presionar si inmediatamente se
cierra el sistema por completo, incluyendo las ventanas que estn 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: Elaboracin propia

Encontramos de igual manera esta parte:


Private Sub SALIRToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles SALIRToolStripMenuItem1.Click

21

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


MsgBoxResult.Yes Then Me.Close()
End Sub
La dems parte del cdigo que mencionamos en un principio utilizando el MenuStrip
se colocan el nombre de los dems formulario en esta parte se codifica cada pestaa
utilizando por ejemplo:
Dim formulario As New modificar
formulario.Show()
Con esta parte se indica en cada pestaa que se deber mostrar el formulario que
corresponda a cada pestaa.
2.1.4 Creacin del formulario para guardar facturas.
Este formulario est diseado 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 comprensin, cuenta tambin 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 sera imposible interactuar con l, por eso cada botn
lleva su codificacin individual, las cajas de texto es para ingresar los datos que
sern 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
presentacin u ordenamiento al formulario para separar partes dentro del mismo
formulario, y el datagridview sirve para reflejar los registros guardados en la base de
datos, esta herramienta es importante para darse cuenta de dodos los registros ya
existentes en la base de datos. ( ver figura 10)

22

Figura 10: Formulario guardar.


Fuente: Elaboracin propia

Empezaremos explicando el botn de nuevo, este botn 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 estn desactivados
para que no puedas realizar ninguna otra accin fuera de lo que est diseado el
sistema, esto se hace para la fiabilidad del sistema, entonces al correr el sistema
slo el botn Nuevo est habilitado para que el usuario le d clic ah, al ocurrir esta
accin 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 numeracin del ID del usuario y haya remplazo de ID.
Estas lneas de cdigo van adentro del botn como ya antes dicho se le da doble clic
al botn y ya se codifica dentro de ah.
A continuacin mostraremos un poco del cdigo utilizado en la realizacin del botn
nuevo:
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button5.Click
g=1
botones(1, 0, 1, )
23

cajas(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
TextBox1.Text = base.numeracion("numero")
TextBox1.Focus()
End Sub
Para explicar ms detalladamente esta parte tengo que explicarle qu son
subrutinas, las subrutinas son bloques de cdigo creadas afuera de los botones
(Fundacin Wikimedia, Inc., 2005), para ya despus nada ms mandarlos a llamar en
los botones con una simple variable, se preguntarn porqu les estoy explicando
esto, se los estoy explicando por qu dentro del cdigo hay dos subrutinas botones
y cajas estas 2 subrutinas sirven para activar los botones y las cajas de texto que
estn en el formulario para poder manipularlos directo de la interfaz.
La subrutina botones esta creada con este cdigo:
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 codificacin se hace muy aparte de la dems codificacin, se declara un clase
pblica llamada botones se le declara la variable y el valor de cada botn por ejemplo
b1 as boolean, y as se van declarando dependiendo para qu utilizars los botones
y de cuntos botones deseas alterar, despus se pone el nombre del botn, en este
caso es Button1, despus se le pone la accin que va realizar y se pone la propiedad
Enabled que esto sirva para habilitar o deshabilitar el objeto que este caso es el
botn 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.
24

La subrutina cajas esta creada con este cdigo:


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
End If
If L Then
TextBox1.Text = ""
25

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 pblica 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, despus de esto escribimos una condicin, 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
opcin se pasa a la otra que para eso es el Else, la otra opcin es limpiar todas las
cajas de texto.
Ya explicado lo de las subrutinas explicaremos todo el cdigo completo para su
mayor comprensin empecemos con botones(1, 1, 0, 1, 1, 1, 1, 1 ,1 ,1 ,1) este cdigo
se utiliza para habilitar las cajas de texto, esto funciona s llamas la subrutina o
subclase botones y los nmeros son los bits 1 es igual a habilitado y 0 es igual a
deshabilitado dependiendo la formacin de los nmero es el botn que se
deshabilitar, por ejemplo aqu el botn que este posicionado en el lugar 3 se
deshabilitar al dar clic en el botn nuevo.
Pasa lo mismo con esta lnea de cdigo cajas (1, 1) habilita y deshabilita las cajas,

26

Despus sigue esta lnea de cdigo que esta lnea ya est haciendo funcin 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 numeracin que es el
contador, sea igual a lo que se encuentra en el campo nmero, y ya esto hace una
consulta con la base de datos y ve cul 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 nmero
50, al dar el botn de nuevo har la consulta y ver que es 50 y se le agregar el 50
ms 1 en otras palabras que el siguiente registro ser 51.
Ahora empezaremos con la explicacin del botn cerrar, su mismo nombre dice para
que sirve este botn pero tambin explicar la funcionalidad y el cdigo del botn 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 aplicacin cuando lo crea
necesario, bueno en realidad este botn siempre ser utilizado en cualquier tipo de
programacin, en cualquier tipo de plataforma de programacin en cualquier
lenguaje, ya sea java c++ o visual entre otros, pero que quede bien claro que podr
ser la misma funcin en cualquier tipo de programacin pero muy rara vez es la
misma lgica, ya que es diferente la forma de trabajar de cada programador, ya
dejado en claro esto empezar a explicar la funcionalidad del botn.(ver figura 11)

Figura 11: Mensaje para cerrar la ventana guardar.


Fuente: Elaboracin propia

27

En el momento que se da clic al botn cerrar aparece un cuadro de dilogo con una
leyenda que dice as Desea cerrar la ventana guardar? (ver figura 11) y en el
mismo cuadro de dilogo aparecen 2 botones, para que escojas la opcin de si o
no, al darle clic a lo opcin si automticamente se cierra nicamente la ventana en
la que estamos que es la de guardar, al darle clic al botn no se cierra el cuadro de
dilogo que nos sali y regresa al formulario en el que estabas trabajando, ya
explicada la funcionalidad del botn, pasar a explicar el cdigo 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 botn, eso no se programa, se empieza a programar
desde if hasta donde dice close(), bueno empecemos a explicar en realidad la
programacin de este botn, es muy fcil, ya que es slo una condicin if, msgbox es
la del cuadro de dilogo ya mencionado anteriormente, lo que est entre comillas es
el mensaje que saldr en el cuadro de dilogo, ojo, esto puede ser modificado a
gusto del programador, msgstyle es el estilo del cuadro de dilogo en esta ocasin
ser un cuadro de dilogo de dos opciones si y no, lo que est entre comillas
aparecer arriba del cuadro de dilogo, msgboxresult yes then me.close esto quiere
decir que si damos la opcin de si la aplicacin se cerrar automticamente y el end
sub es para cerrar el bloque.
A continuacin mostraremos el cdigo utilizado en la realizacin del botn cerrar:

Private

Sub

Button2_Click(ByVal

sender

As

System.Object,

ByVal

System.EventArgs) Handles Button2.Click


If MsgBox("Desea cerrar la ventana guardar ?", MsgBoxStyle.YesNo,
"Confirmar") = MsgBoxResult.Yes Then Me.Close()
End Sub

28

As

Ahora explicar el botn ms importante de este formulario que es el de guardar ya


que sin este botn no tendra ninguna funcin este formulario.
Para que la explicacin del cdigo de este botn sea de una manera ms detallada
se explicar en bloques o lneas de cdigo dependiendo la densidad del cdigo, para
que se pueda entender mejor, ya que el cdigo es muy extenso y puede ser confuso
si lo explico de manera general, ya que en la programacin de este botn hay varios
elementos como las consultas a la base de datos, a los ingresos al mismo, clases,
etc.
Ahora empezar con la primera lnea de cdigo:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Esta lnea de cdigo es generada por default al darle doble click al botn despus de
esta lnea de cdigo es que se empieza a codificar ya que de no hacerlo as no
realizar ninguna funcin el botn al darle click.
Ahora explicar un bloque del cdigo:
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("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 & "')")
29

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


Exitosa", MessageBoxButtons.OK, MessageBoxIcon.Information)
Este bloque de cdigo en pocas palabras es la parte ms importante del cdigo de
este botn ya que sin esta parte del cdigo sera imposible guardar los registros en la
base de datos, ya que esta parte del cdigo es la que interacta directamente con la
base de datos mediante comando SQL SERVER 2008, a qu me refiero con esto,
sea que mediante cdigo utilizado para crear bases de datos en dicho programa, se
hacen acciones u operaciones tambin en Visual Basic, esto es posible ya que en el
mdulo de conexin se hizo referencia para poder utilizar comandos de dicho
programa (el mdulo de conexin se explicar ms adelante). En esta parte del
cdigo 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 tambin se est utilizando otra subrutina que se llama
cargar; a continuacin explicar como est compuesta esta subrutina ya que es muy
larga la codificacin de la misma.
Explicar esta lnea de cdigo:
Private Sub cargar()
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)
30

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"
DataGridView1.Columns(10).Width = 80
DataGridView1.Columns(10).HeaderText = "fecha"
Dim fila(11) As String
base.consultar("select*from Factura")
While myreader.Read()
31

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 lneas de cdigo sirve para el diseo fsico del datagridview que est
en el formulario de guardar, ah le ponemos cuantas filas y columnas quieres el
tamao, el color que quieres poner en las celdas y las filas etc. En pocas palabras
modifica todo lo que es el diseo del datagridview.
Las siguientes lneas de cdigo, sirven para mandar a llamar todos los registros que
estn guardados en la base de datos y mostrarlos en el datagridview, por esto es
importante poner mucha atencin, ya que si cometemos el mnimo 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 lnea de cdigo:
DataGridView1.Columns(0).HeaderText = "numero"
DataGridView1.Columns(1).Width = 210
32

Explicar ms a detalle la funcin que hace esta lnea de cdigo, 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 programacin se
empieza desde 0,1,2,3 etc. Dependiendo el nmero de columnas que quieras utilizar,
despus 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 nmero, aqu es importante poner tal y cual est en la base de datos ya
que de no hacerlo te marcara un error y como ya antes mencion manejar bases de
datos es complicado y as se hace con las dems columnas.
Despus en las lneas siguientes es donde se hace la consulta a la base de datos,
con esta lnea de cdigo:
base.consultar("select * from Factura")
Base es el mdulo de conexin, esto se explicar ms adelante, consultar es una
variable y el select son sintaxis SQL, esa sintaxis quiere decir, que seleccione todos
los registros que estn guardados en la tabla Facturas . Las siguientes lneas de
cdigo sirven para que muestre los registros que busco al datagridview y los
acomoda en las filas correspondientes.
Se cierra la base con esta lnea de cdigo:
base.cerrar()
Y ya se cierra todo el bloque con:
End Sub

33

Bueno ya explicada la subrutina cargar, explicar la siguiente lnea 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 cdigo:
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 cdigo te muestra grficamente los registros que se encuentran actualmente en
la base de datos, automticamente cuando vayas a ingresar un registro, se actualiza
el datagridview con este cdigo para el usuario que est utilizando esta aplicacin,
ya que si no sucediera esto, el usuario no podra ver si en realidad el registro fue
guardado correctamente en la base de datos al instante, el usuario slo podra verlo
si l abre la base de datos directamente desde el programa SQL SERVER 2008, y si
hace esa accin no tendra caso haber realizado la aplicacin ya que a fuerzas
tendras que estar revisando a cada rato la base de datos, mejor si lo haces as, ya
ingresaras los registros directamente desde la base de datos sin utilizar la aplicacin
ya creada (SISFA).

34

Explicar las siguientes 2 lneas de cdigo:


botones(1, 1, 1, )
cajas(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
Estas lneas de cdigo ya haban sido explicadas por que fueron requeridas en la
codificacin de los botones anteriores, prcticamente en este botn realiza la misma
funcin habilita y deshabilita las cajas y los botones, lo nico que en realidad cambia
son los bits, en esta ocasin todos los botones estn activados (1 significa activado y
0 desactivado), y las cajas desactivadas.
La siguiente lnea de cdigo sirve para mandar un mensaje si los campos del
formulario estn 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 vacos, te generar un error
en la base de datos.
A continuacin pondr un bloque de cdigo bastante extenso, pero no muy
complicado ya que, lo que a continuacin veremos ya ha sido explicado con
anterioridad.
Como pueden ver estas lneas de cdigo son muy parecidas a la explicadas las
pginas anteriores, en realidad prcticamente viene siendo lo mismo slo cambia la
accin que hace en la base de datos ya que en esta ocasin modifica el registro con
la sentencia update y despus realiza las dems operaciones como actualizar el
datagridview, cargar las subrutinas de botones y cajas, etc.

35

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
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
36

End If
End Sub
De este modo se termina la codificacin de unos de los botones ms importantes de
este formulario, como se pudieron dar cuenta es bastante cdigo, pero muy
necesaria cada lnea de cdigo si quieres que tu programa funcione correctamente.
Se puede reducir el cdigo, 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 psimo no
te tomarn en cuenta en trabajos futuros.
2.1.5 Creacin del formulario modificar
Este formulario est diseado para modificar los registros que ya se guardaron desde
la ventana guardar, se podr modificar algn dato de los registro o tambin se podr
eliminar del sistema algn registro por completo de la base de datos y para poder
realizar todas estas operaciones ser necesario utilizar la funcin de buscar, ya que
por ejemplo se buscar primero los datos de la factura que se quiera visualizar para
despus realizar la modificacin que se desee ya sea eliminar o modificar algn dato.

Este formulario cuenta con cinco botones que vamos a codificar uno por uno; esto se
explicar por separado para una mejor comprensin, cuenta tambin 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 sera
imposible interactuar con l, por eso cada botn lleva su codificacin individual, las
cajas de texto es para ingresar los datos que vamos a modificar a la base de datos,
las etiquetas sirve como referencia para que veas qu campo va en las cajas de
texto, el groupbox sirve para darle una mejor presentacin 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)
37

Figura 12: Formulario Modificar.


Fuente: Elaboracin propia

Explicaremos la codificacin de los botones: el botn nuevo no tiene muchas lneas


de cdigo ya que slo su funcin 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 = ""

Slo se pone el nombre de la caja de texto, la propiedad text el smbolo de igual y


dos comillas para limpiar las cajas de textos.

38

El botn cerrar ya sabemos cmo funciona de igual manera que el que empleamos
en el formulario de guardar, para que slo cierre la ventana en este caso slo 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 botn modificar, este botn lo nico que hace es mandar lo que
este en el datagridview a las cajas de texto y ya poder modificar los registros que
estn en la base de datos y ya se le da guardar y ya se modifica el registro ahora
presentaremos algo del cdigo que hace posible lo que ya describimos, le damos
doble clic al botn 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
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
39

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 habamos explicado anteriormente y ya saben el procedimiento y
la funcin de esto, por esto solo explicare la segunda parte del cdigo.
TextBox1.Text = DataGridView1.CurrentRow.Cells(0).Value
Esto sirve para que los datos que estn 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 direccin mal y lo guardaste, para eso sirve toda esas lneas de cdigo, 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 informacin que por lo
mismo de manejar mucha informacin se confunden al tipiar algn registro y as nada
mas con el botn 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 botn eliminar, este botn es uno de los ms
importantes en todo el formulario ya que sin este botn sera imposible eliminar.
A continuacin mostraremos un poco del cdigo utilizado en la realizacin del botn
eliminar:
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button4.Click, Button1.Click
40

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
End Sub
En esta parte del sistema tambin se manda a llamar otra vez subrutina que se
llama cargar que ya sabemos cmo trabaja.

41

Bueno ya explicada la subrutina cargar explicare todo el cdigo completo de eliminar.


Comenzamos con una condicin, 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 botn 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. Despus ponemos la subrutina cargar
para que se reflejen los registros en el datagridview, las siguientes lneas de cdigo
descuentan el registro que fue eliminado y as ya no aparecer ms en el
datagridview.
En general eso es lo que realiza todo el cdigo, al darle el botn eliminar te muestra
un mensaje le das que s, te manda otro mensaje confirmando que se ha eliminado el
registro, despus cargamos los registros al data, y podremos observar que el registro
ya ha sido eliminado.
El botn buscar en realidad si es muy largo el cdigo ya que en un solo botn hace
todas las operaciones.
A continuacin presentar el cdigo del botn buscar:
Dim indicador As Integer
indicador = 0
Try
If (campo = "campos") Then
base.consultar("select * from Facturas")
Else
base.consultar("select * from Factura where " & campo & " like '" &
TextBox1.Text & "')
End If

DataGridView1.Rows.Clear()
42

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
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"
43

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 cdigo es relativamente largo porque en el botn se hacen muchas
operaciones, se realiza la bsqueda a la base de datos. Se implementa el diseo del
datagridview tambin 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 estn usando en el momento que est realizando
la bsqueda, etc.

44

4. CONCLUSIONES
La aplicacin 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
existan algunos problemas planteados como el de perdida de dinero.
Cuando la aplicacin que fue diseada 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 aplicacin SISFA se puso a prueba en un tiempo de 20 das en la compaa,


donde se pudieron ver a grandes rasgos los cambios en la prdida de informacin de
las facturas y a futuro se podran ver mensualmente como no habra ms prdida de
dinero, ya que existan facturas viejas que eran del 2012 y nuevas de este aos se
fueron poniendo su nmero de folio correspondiente a cada una y se fueron
archivando y ya

no haba ms atraso en la revisin de las facturas al azar, ya que

de esta manera es ms rpido buscar alguna factura por su folio y una vez buscada
se podra modificar algn campo que se desee de ella.

Este sistema cuenta con una seguridad de inicio de sesin para que slo 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.

45

5. FUENTES DE INFORMACIN

Fundacin 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

Fundacin 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. Mxico: Guas inmediatas de computacin.

Microsoft. (15 de Noviembre de 2007). MSDN. Recuperado el 10 de Agosto de 2013,


de Disear diagramas de base de datos: http://msdn.microsoft.com/eses/library/ms171971(v=vs.90).aspx

PECK, G. (2004). CrystalReports Resultados Profesionale. Mxico: Mcgraw-Hill /


Interamericana de Mxico.

46

6. ANEXOS

47

Você também pode gostar