estructura de la guía 3 autoguardado
DESCRIPTION
tesisTRANSCRIPT
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