Curso : Visual .Net II Pg. 1
Conexiones Ado.Net Conceptos Generales: En muchas ocasiones nos hemos preguntado cmo es posible
las conexiones y cuantas veces puedo hacer una, la respuesta es sencilla, las
codificaciones de Visual .Net con respecto a este tema con muy cortas, es decir solo
es suficiente tener la cadena de conexin lista para que inmediatamente tengamos
una conexin directa con la base de datos (SQL) y realizar las transacciones
necesarios en un proyecto basado en Visual Net.
Curso : Visual .Net II Pg. 2
Curso : Visual .Net II Pg. 3
Despus de observar los conceptos general acerca del .Net Procederemos a realizar
nuestras conexiones, es decir aprenderemos de diversas formas y optaremos por la
mejor, con la cual las usaremos en nuestros proyectos.
Conexin a Nivel de Formulario: es decir solo el formulario donde se defina la
cadena de conexin podr usarlo, si otro formulario desea usar una conexin, este
deber definir su propia cadena y as sucesivamente.
EJEMPLO N 1
Este ejemplo es simple, pero cumple las expectativas de conectarse y desconectarse
de una base de datos.
Este formulario solo tiene dos objetos
Buttons: BTNConectar y BTNDEsconectar,
cada uno de ellos posee un cdigo de
conexin y desconexin, para garantizar el
xito del ejemplo siga los pasos al pie de la
letra y saque sus propias conclusiones.
Curso : Visual .Net II Pg. 4
PROGRAMANDO EL FORMULARIO.
Formulario Clase Form1 Public Class Form1
Dim CN As New SqlClient.SqlConnection("Server=Apolo;" + _
"DataBase=SysAdoNet;Uid=sa;Password=123")
Private Sub BtnConectar_Click CN.Open()
If CN.State = ConnectionState.Open Then
MsgBox("Conexion Estalecida con Exito")
Else
MsgBox("Error al Conectar")
End If
Private Sub BtnDesconectar_Click CN.Close()
If CN.State = ConnectionState.Closed Then
MsgBox("Conexion Cerrada !!")
Else
MsgBox("Error al Cerrar !!")
End If
SEGUN LAS CARACTERISTICAS DE NUESTRA BASE DE DATOS, DEBEMOS
TOMAR EN CUENTA:
ACLARACIONES:
En el form Class definimos la cadena de conexin, con todas las
caractersticas acerca de la misma, ms no su apertura.
El botn conectar solo invitara a SQL a conectarse a su entorno, usando el
mtodo OPEN, toda conexin debe ser verificada, por esa razn se usa el
mtodo STATE que verifica el estado de la conexin, los estados pueden ser:
ConnectionState.Open o ConnectionState.Closed (Abierto o Cerrado). Y los mensajes respectivamente.
Nombre del Servidor: En este caso APOLO
Nombre de Base de datos: SysAdoNet
Inicio de Sesin: SA
Password: 123 (Esto es interno ***)
Curso : Visual .Net II Pg. 5
DESVENTAJAS:
Que pasara si en la ejecucin de este formulario, presiono dos o mas veces
el botn CONECTAR ?, lo lgico es que obtengamos un error, ya que no nos
podemos conectar otra vez (estaramos usando la misma cadena de
conexin 2 veces), por que existe una conexin aun vigente o abierta, es
decir, la ya se abri antes.
El botn DESCONECTAR puede ser usado muchas veces ya no solo
desconecta.
SOLUCION:
Agregar la siguiente lnea al cdigo del botn CONECTAR. CN.Open()
BtnConectar.Enabled = False If CN.State = ConnectionState.Open Then
MsgBox("Conexion Estalecida con Exito")
Else
MsgBox("Error al Conectar")
End If
Agregar la siguiente lnea al cdigo del botn DESCONECTAR. CN.Close()
If CN.State = ConnectionState.Closed Then
BtnConectar.Enabled = True MsgBox("Conexion Cerrada !!")
Else
MsgBox("Error al Cerrar !!")
End If
EJEMPLO N 2 (Conexiones a Nivel Pblico o Proyecto)
Agregue a su proyecto un nuevo formulario (form2) y que ejecute como objeto inicial,
diselo con el siguiente aspecto:
Agregue a su proyecto un mdulo (Modulo1), este estar codificado con la
declaracin de una variable pblica sobre el proyecto llamado CN2, y aparte dos
procedimientos (CONECTAR y DESCONECTAR) el primero de ellos llevar
parmetros de entrada hacia el procedimiento, observe el cdigo en la siguiente
tabla: Module Module1
'Declaracion de Variable Public sobre el proyecto
Public CN2 As New SqlClient.SqlConnection
Primer Procedimiento (Conectar 2 parmetro de entrada usuario y clave )
Este formulario solo tiene dos objetos
Buttons: BTNConectar y BTNDEsconectar,
cada uno de ellos posee un cdigo de
conexin y desconexin, para garantizar el
xito del ejemplo siga los pasos al pie de la
letra y saque sus propias conclusiones.
Curso : Visual .Net II Pg. 6
Public Sub Conectar(ByVal Usuario As String, ByVal Clave As String)
If CN2.State = ConnectionState.Closed Then
CN2.ConnectionString = "Server=APOLO;" + _
"Database=SysAdoNet;Uid='" + Usuario + _
"';Password='" + Clave + "';"
' Abrir Conexin
CN2.Open()
If CN2.State = ConnectionState.Open Then
MsgBox("Conexion Establecida..!!")
Else
MsgBox("Error al Conectar..!!")
End If
End If
End Sub
Segundo Procedimiento (Desconectar) Sin Prametros. Public Sub DesConectar()
If CN2.State = ConnectionState.Open Then
' Cerrar Conexin
CN2.Close()
If CN2.State = ConnectionState.Closed Then
MsgBox("Conexion Cerrada..!!")
End If
Else
MsgBox("No se Hizo una Conexion ..!!")
End If
End Sub
AHORA VOLVAMOS AL FORMULARIO Y PROGRAMAREMOS LOS BOTONES
CONECTAR Y DESCONECTAR.
Private Sub BtnConectar_Click 'Aqu solo se le envia los parametros de usuario y clave
Conectar("sa", "123")
Private Sub BtnDesconectar_Click DesConectar()
ACLARACIONES:
Aqu se estn agregando dos nuevos objetos al proyecto: un nuevo formulario
(Form2) y un modulo (Modulo1), como observaremos empezamos a programar
el modulo, aqu definimos una variable publica CN2, es decir la variable de
conexin podr ser usada en todo el proyecto, por cuantos formularios tenga
el proyecto, esta podr ser utilizada sin prejuicios. 'Declaracion de Variable Public sobre el proyecto
Public CN2 As New SqlClient.SqlConnection
En el modulo existen dos procedimientos CONECTAR, este usara dos
parmetros de entrada (el usuario y el password) el segundo procedimiento
llamado DESCONECTAR solo permitir desconectarse de la base de datos.
No usa parmetros. Public Sub Conectar(ByVal Usuario As String, ByVal Clave As String)
Public Sub DesConectar()
Curso : Visual .Net II Pg. 7
Por ultimo los botones CONECTAR y DESCONECTAR solo hacen las llamadas de los
procedimientos y enviando los parametros, ya que son publicos.
EJEMPLO N 3 (Conexiones a Nivel Pblico o Proyecto)
Agregue a su proyecto un nuevo formulario (form3), este ejemplo es parecido al
anterior, solo que aqu controlaremos los errores va excepciones.
Agregue a su proyecto un mdulo (Modulo2), este estar codificado con la
declaracin de una variable pblica sobre el proyecto llamado CN3, y aparte dos
procedimientos (CONECTAR2 y DESCONECTAR2) el primero de ellos llevar
parmetros de entrada, observe el cdigo en la siguiente tabla: Module Module2
'Aqui se define la variable publica
Public CN3 As New SqlClient.SqlConnection Public Sub Conectar2(ByVal Usuario As String, ByVal Clave As String)
Try
If CN3.State = ConnectionState.Closed Then
CN3.ConnectionString = "Server=APOLO;" + _
"Database=SysAdoNet;Uid='" + Usuario + _
"';Password='" + Clave + "';"
' abrir conexin
CN3.Open()
If CN3.State = ConnectionState.Open Then
MsgBox("Conexion Establecida..!")
End If
End If
Catch Excep As SqlClient.SqlException
' si se produce algun error,
' lo capturamos mediante el objeto
' de excepciones particular para
' el proveedor de SQL Server
MessageBox.Show("Error al conectar con datos" & _
ControlChars.CrLf & _
Excep.Message & ControlChars.CrLf & _
Excep.Server)
End Try
End Sub Public Sub DesConectar2()
If CN3.State = ConnectionState.Open Then
' Cerrar Conexin
CN3.Close()
If CN3.State = ConnectionState.Closed Then
MsgBox("Conexion Cerrada..!!")
End If
Else
MsgBox("No se Hizo una Conexion ..!!")
End If
End Sub
Este formulario solo tiene dos objetos
Buttons: BTNConectar y BTNDEsconectar,
cada uno de ellos posee un cdigo de
conexin y desconexin, para garantizar el
xito del ejemplo siga los pasos al pie de la
letra y saque sus propias conclusiones.
Curso : Visual .Net II Pg. 8
AHORA VOLVAMOS AL FORMULARIO Y PROGRAMAREMOS LOS BOTONES
CONECTAR Y DESCONECTAR.
Private Sub BtnConectar_Click 'Aqu solo se le envia los parametros de usuario y clave
Conectar2("sa", "123")
Private Sub BtnDesconectar_Click DesConectar2()
ACLARACIONES:
Aqu se estn agregando dos nuevos objetos al proyecto: un nuevo formulario
(form3) y un modulo (Modulo2), como observaremos empezamos a programar
el modulo, aqu definimos una variable publica CN3, es decir la variable de
conexin podr ser usada en todo el proyecto, por cuantos formularios tenga
el proyecto, esta podr ser utilizada sin prejuicios. 'Declaracion de Variable Public sobre el proyecto
Public CN3 As New SqlClient.SqlConnection
En el modulo existen dos procedimientos CONECTAR2, este usara dos
parmetros de entrada (el usuario y el password) el segundo procedimiento
llamado DESCONECTAR2 solo permitir desconectarse de la base de datos.
No usa parmetros. Public Sub Conectar2(ByVal Usuario As String, ByVal Clave As String)
Public Sub DesConectar2() Por ultimo los botones CONECTAR y DESCONECTAR solo hacen las llamadas de los
procedimientos y enviando los parmetros, ya que son pblicos.
FUNCIONES PROPIAS DE VISUAL BASIC
Se describen las funciones propias del lenguaje que permiten trabajar con
cadenas de caracteres, con nmeros, fechas, horas, presentar mensajes en
pantalla y muchas otras funciones para formatear datos especficos.
Contenido
1 - Funciones para el tratamiento de cadenas
1.1 - Funcin Lcase y Ucase
1.2 - Funcin Trim, LTrim y RTrim
1.3 - Funcin Len
1.4 - Funcin Asc y Chr
1.5 - Funcin InsTr
1.6 - Funcin Left, Right y Mid
1.7 - Funcin Str y Val
2 - Funciones para el tratamiento de nmeros
2.1 - Funcin Round
2.2 - Rnd y Randomize - Nmeros aleatorios
2.3 - Otras funciones
3 - Funciones de formato
4 - Funciones de formato para fechas y hora
4.1 - Funciones para calcular fechas
4.2 - Funciones para obtener la fecha y hora de la PC
6 - Funciones para presentar mensajes - InputBox y
MSgbox
7 - Ejemplos
1 - Funciones para el tratamiento de cadenas
Las funciones de cadena , como su nombre lo indica, se utilizan para trabajar y
tratar las cadenas de caracteres.
A continuacin las mas importantes de ellas.
1.1 - Funcin Lcase y Ucase
Estas dos funciones se utilizan para convertir cadenas de texto a minscula y mayscula.
La funcin Lcase cambia o convierte una cadena de texto a minscula y un ejemplo de como utilizarla sera as:
Lcase (cadena que queremos convertir a minsculas)
Ejemplo:
Dim cadena As String
cadena = "HOLA MUNDO"
'Convertimos
cadena = LCase(cadena)
'La variable cadena ahora vale "hola mundo"
La funcin Ucase funciona de la misma manera que Lcase pero convierte el
contenido de una cadena a maysculas.
Por ejemplo, si tenemos un control Label1 que contiene un texto que dice:
"Porcentaje de sueldos", escribiendo la siguiente lnea:
Label1 = UCase(Label1)
El control Label1 pasara a mostrar o mejor dicho contener en su propiedad
caption:"PORCENTAJE DE SUELDOS".
1.2 - Funcin Trim, LTrim y RTrim
Estas tres funciones se utilizan para eliminar los espacios vacos de una
cadena.
LTrim elimina los espacios vacos de la parte izquierda de la cadena, RTrim de la parte derecha y Trim de ambas partes.
Ejemplos:
Tenemos una variable llamada ciudad con el valor " Barcelona". Para eliminar
los espacios vacos de la izquierda haramos lo siguiente:
ciudad = LTrim(ciudad)
Si en un TextBox quisieramos borrar todos los espacios vacos de la parte
derecha de la cadena:
MiText = RTrim(MiText)
La Funcin Trim elimina todos los espacios vacos de ambos lados de la
cadena. Ejemplo:
Pais = " Argentina "
Pas = Trim(Pais)
Ahora el valor de Pas es igual a: "Argentina".
1.3 - Funcin Len
La funcin Len nos permite conocer la cantidad de caracteres que tiene una
determinada cadena. O sea que esta funcin nos devuelve un nmero.
Ejemplo:
Len (Aqu va la cadena que queremos averiguar su tamao)
Como la funcin Len devuelve un nmero debemos asignar ese nmero
devuelto en una variable de tipo numrica.
Ejemplo:
Dim TamanoCadena As Long
Dim MiCadena As String
MiCadena = "Me Llamo Eustaquio"
TamanoCadena = Len(MiCadena)
El valor de la variable TamanoCadena pasara a valer 18.
Hay que tener en cuenta que la funcin Len tambin toma en cuenta los espacios vacos.
1.4 - Funcin Asc y Chr
La funcin Asc nos permite obtener el cdigo ASCII de un de terminado caracter.
Ejempos:
Si queremos obtener el cdigo ASCII del caracter "a", que es el nmero 97
podramos hacer lo siguiente:
Dim num As Integer
num = Asc("a")
En definitiva la funcin Asc lleva un solo parmetro de tipo String del cual
queremos obtener dicho nmero.
La Funcin Chr acta a la inversa de la funcin Asc, esto quiere decir, que a
partir de un determinado nmero nos devolver el caracter ASCII.
Obviamente que en vez de pasarle a la funcin un parmetro String es decir la letra, debemos pasarle un nmero ASCII y nos devolver el carcter
asociado.
Ejemplo:
Dim letra As String
letra = Chr(97)
La variable pasa a valer en este caso el caracter "a"
1.5 - Funcin InsTr
La funcin InStr se utiliza para buscar una cadena o parte de una cadena dentro de otra cadena.
Si la funcin encuentra la cadena a buscar devuelve un nmero que representa
la posicin donde encontr la cadena, si no la encuentra devuelve un 0.
Los parmetros que lleva esta funcin son:
InStr (comienzo, Cadena donde buscar , La Cadena a buscar)
Como esta funcin devuelve un nmero debemos almacenarla en una variable
de tipo numrica para utilizarla.
Ejemplo:
Dim posicion As Integer
posicion = InStr("Estoy tomando mate", "mate")
En este ejemplo la funcin encontr la cadena "mate" en la posicin 15, o sea
que la variable posicin pasa a valer 15.
Si observamos bien, la funcin en el primer parmetro, denominado comienzo, nos pide que le digamos desde que posicin comenzar a buscar. En nuestro
ejemplo, este parmetro lo obviamos, esto quiere decir que comenzar desde la posicin 0 de la cadena a buscar. Pero podramos especificar una posicin en particular, por ejemplo desde la 5 , 10 etc..., segn lo que necesitemos hacer.
Otro ejemplo de InsTr :
Este ejemplo, muestra como buscar dentro de un control TextBox, el cual tiene dos opciones, un botn para buscar la primera frase, y otro que sigue buscando a partir de donde est ubicda la seleccin.
Para armar el ejemplo colocar un Textbox llamado Text_Buscar que es donde se ingresar la frase y otro TextBox llamado Text1 que tendr el texto. Este ultimo con la propiedad Multiline en True.
Tambin colocar dos CommandButton: Command1 y Command2
Colocar el siguiente cdigo fuente en el formulario:
Option Explicit
Private m_Pos As Integer
Sub buscar_cadena(ByVal Posicion As Integer)
Dim p As Integer, Frase As String
Frase = txt_Buscar
p = InStr(Posicion, Text1, Frase)
If p > 0 Then
m_Pos = p
With Text1
.SelStart = m_Pos - 1
.SelLength = Len(Frase)
.SetFocus
End With
Else
MsgBox "No se encontr la frase", vbInformation
Text1.SetFocus
End If
End Sub
Private Sub Command1_Click()
'Busca a pratir de la primera pocicin
Call buscar_cadena(1)
End Sub
Private Sub Command2_Click()
'Busca a partir del valor que tenga m_Pos
Call buscar_cadena(m_Pos + 1)
End Sub
Private Sub Form_Load()
Command1.Caption = "Buscar"
Command2.Caption = "Buscar siguiente"
Me.Caption = "Ejemplo de InStr "
End Sub
Nota: tambin hay una funcin similar a Instr llamada InstrRev , y lo que hace
es devolver la posicin de la primera concurrencia de una cadena dentro de
otra cadena, pero comenzando por el extremo derecho de la misma
En este enlace hay un ejemplo que usa la funcin instrRev
Extraer de un path o ruta, solo la extensin del archivo
Funcin Left, Right y Mid
Estas funciones son utilizadas para extraer partes de una cadena.
La funcin Left:
tiene 2 parmetros: El primero es la cadena de la cual se extraern caracteres,
y el segundo un nmero desde el cual comenzar a extraer caracteres desde la parte izquierda.
Ejemplo:
Dim Cadena As String
Cadena = Left("Ya es la madrugada", 9)
'Cadena, que es un string, sera igual a: "Ya es la"
Funcin Right:
Es igual que la funcin Left pero comienza a extraer caracteres desde el lado
derecho de la cadena.
La funcin Mid:
Tiene la misma funcin que las anteriores pero posee tres parmetros. Su sintaxis es:
Mid (cadena, inicio, longitud)
El parmetro cadena es la cadena a extraer caracteres. El parmetro Inicio
es donde comenzar y el parmetro longitud, es la cantidad de caracteres a
extraer de la cadena de caracteres
Ejemplos:
Dim nombre As String
nombre = Mid("River perdi la copa", 7, 6)
'La variable nombre sera igual a: "perdi"
Este Otro ejemplo usa la funcin Mid para realizar un simple efecto tipo
mquina de escribir.
Colocar en un formulario un CommandButton y el siguiente cdigo fuente en el form.
Option Explicit
Sub Pausa(Segundos As Double)
Dim inicio As Double
' Devuelve la cantidad de segundos desde que inicio
windows
inicio = Timer
Do While (Timer - inicio) < Segundos
' pausa
DoEvents
Loop
End Sub
Private Sub Command1_Click()
Dim texto As String
texto = "... Hola mundo --->>> "
Call MostrarTexto(texto, 0.1, Me)
End Sub
Private Sub MostrarTexto(Frase As String, _
Segundos As Double, _
Destino As Object)
Dim LenFrase As Integer
Dim i As Integer
Dim Caracter As String
Dim texto As String
LenFrase = Len(Frase)
Do While i
Private Sub Form_Unload(Cancel As Integer)
End
End Sub
1.6 - Funcin Str y Val
La funcin Val convierte una cadena en un nmero yla funcin Str un nmero
en una cadena.
Ejemplos:
cadena = "123456"
cadena = Val(cadena)
'Ahora cadena vale 123456
cadena2 = 123456
cadena2 = Str(cadena2)
'Ahora cadena2 vale "123456"
2 - Funciones para el tratamiento de nmeros
Visual Basic posee muchas funciones para tratar nmeros. A continuacin las
principales funciones.
2.1 - Funcin Round
La funcin Round se utiliza para redondear un nmero decimal, devolviendo un nmero entero.
Ejemplo:
Dim Mimumero As Long
Minumero = Round(245.8) '(La funcin devuelve 246)
Minumero = Round(245.3) '(La funcin devuelve 245)
Minumero = Round(245.5) '(La funcin devuelve 245)
Round posee un parmetro opcional por si queremos incluir los dgitos
decimales.
2.2 - Rnd y Randomize - Nmeros aleatorios
Para generar nmeros aleatorios, Visual Basic incluye 2 funciones: Rnd y Randomize.
La funcin Rnd devuelve un nmero aleatorio, y esta posee un solo parmetro.
Ejemplo :
Rnd (nmero)
Pero para poder generar dichos nmeros aleatorios, debemos utilizar
previamente la funcin Randomize con la siguiente frmula:
Dim LimiteInferior As Integer
Dim LimiteSuperior As Integer
LimiteInferior = 20
LimiteSuperior = 40
MsgBox Int((LimiteInferior - LimiteSuperior + 1) * Rnd +
LimiteInferior)
En el ejemplo anterior, se generarn nmeros aleatorios comprendidos entre el
20 y el 40
Nota: en este enlace pods ver un ejemplo que permite generar nmeros aleatorios no repetidos
Funciones matemticas
Las principales funciones matemticas provistas por Visual Basic son:
Abs: Devuelve el valor absoluto de una expresin numrica.
Atn: Devuelve el arco tangente de un nmero.
Cos: Devuelve el coseno de un ngulo.
Exp: Devuelve el nmero "e" elevado a una potencia.
Log: Devuelve el logaritmo natural de un nmero.
Sgn: Devuelve un valor indicando el signo de un nmero.
Sin: Devuelve el seno de un ngulo.
Sqr: Devuelve la raz cuadrada de un nmero.
Tan: Devuelve la tangente de un ngulo.
3 - Funciones de formato
Visual Basic posee varias funciones para darle formato a distintos tipos de
datos e informacin. A continuacin se ve algunos ejemplos de las principales funciones:
FormatCurrency: Esta funcin se utiliza para trabajar con
nmeros con formato en dinero. Ejemplo:
si tenemos un nmero 3 y utilizamos la funcin nos devolvera
"$3".
FormatPercent: Esta funcin es utilizada para trabajar con
porcentajes. Ejemplo :
si tendramos un nmero 321, nos devolvera: "32,1%" .
FormatDateTime: Esta funcin trabaja con fechas y horas.
FormatNumber: Formatea expresiones nmeros
Resultado = FormatPercent(321) 'devuelve: "32.100,00%"
Resultado = FormatCurrency(3) 'devuelve: "$3,00"
Resultado = FormatDateTime("6-8-1978") 'La funcin
devolvera: "06/08/1978"
NumDigitsAfterDecimal: Parmetro de tipo opcional. Este indicar cuantos
nmeros decimales devolver la funcin:
Ejemplo
cadena = FormatCurrency(325, 3) 'Devuelve: "$325,000"
Ejemplo de la funcin FormatDateTime
Esta funcin, en el primer parmetro se le debe pasar la fecha u hora a formatear, y el segundo parmetro es el tipo de formato, pueden ser 5 tipos.
vbGeneralDate, vbLongDate, vbShortDate, vbLongTime y vbShortTime.
Este parmetro es de tipo opcional. al colocar la coma dentro de la funcin ,
visual basic despliega la lista de constanetas mencionadas, como muestra el grfico:
Un ejemplo para ver estos formatos utilizando FormatDateTime: Colocar cinco option Button, cada botn de opcin mostrar los diferentes formatos en el caption del formulario, es decir en la barra de ttulo.
Cdigo en el formulario:
Private Sub Form_Load()
Option1.Caption = " vbGeneralDate "
Option2.Caption = " vbLongDate "
Option3.Caption = " vbShortDate "
Option4.Caption = " vbLongTime "
Option5.Caption = " vbShortTime "
End Sub
Private Sub Option1_Click()
Me.Caption = FormatDateTime(Now, vbGeneralDate)
End Sub
Private Sub Option2_Click()
Me.Caption = FormatDateTime(Now, vbLongDate)
End Sub
Private Sub Option3_Click()
Me.Caption = FormatDateTime(Now, vbShortDate)
End Sub
Private Sub Option4_Click()
Me.Caption = FormatDateTime(Now, vbLongTime)
End Sub
Private Sub Option5_Click()
Me.Caption = FormatDateTime(Now, vbShortTime)
End Sub
FormatNumber - Ejemplos:
Formatea 0.489698 a 0,49
Dim Numero As Double
Numero = 0.489698
Numero = FormatNumber(Numero, 2, vbFalse)
MsgBox Numero
Formatea 1.958754 a 1,96
Dim Numero As Double
Numero = 1.958754
Numero = FormatNumber(Numero, 2)
MsgBox Numero
Funcin Format:
La funcin Format es mas completa que las anteriores funciones, porque
puede manejar mas tipos de datos, y no devuelve solo cadenas, esta tambin puede devolver nmeros y fechas.
La funcin Format posee dos parmetros:
Format (Expresin, formato)
En el primero debemos colocar cualquier expresin vlida. El segundo es
opcional y a continuacin veremos una descripcin de los formatos de VB:
GeneralNumber: Devuelve el nmero sin formato.
Currency: Devuelve el nmero en formato moneda, con el
smbolo "$" y 2 decimales a las derecha.
Fixed: Devuelve como mnimo un dgito a la izquierda y 2 ala
derecha del decimal.
Standar: Similar a Fixed pero incluye un separador de miles.
Percent: Multiplica el nmero por cien y le agrega el smbolo
"%"
True/False: Devuelve Verdadero para un valor distinto de 0,y
Falso para 0.
On/OFF: Devuelve "Activado" para un valor distinto de 0, y
"Desactivado" para 0.
La forma de pasar el parmetro es entre comillas.
Ejemplo:
cadena = Format(75, "Currency") ' Devolvera: "$75,00"
Nota: Si ingresamos un nmero decimal, debemos utilizar el "." y no la coma
"," ya que la coma determina el comienzo de otro parmetro dentro de la
funcin y Visual basic dara error de sintaxis
4 - Funciones de formato para fechas y hora
Ejemplos de los principales Formatos con nombre para el manejo de Fechas y
Horas:
Funciones para Fechas
Dim cadena As String
cadena = Format("06/08/78", "General Date") ' Devuelve:
"06/08/1978"
cadena = Format("19/08/79", "Long Date") ' Devuelve : "Jueves
19 de Agosto de 1979".
cadena = Format("19/8/79", "Medium Date") ' Devuelve: "19-
Ago-1979"
cadena = Format("17:08", "Short Time") ' "05:08"
cadena = Format("17:08", "Medium Time") ' "05:08 PM"
cadena = Format("17:08", "Long Time") ' "05:08:00 PM"
4.1 - Funciones para calcular fechas
Visual basic cuenta con una serie de funciones que nos permiten calcular fechas y horas, por ejemplo generar un intervalo de fechas, sumar y restar fechas y horas y otras operaciones y clculos
DateAdd : Devuelve un Variant que contiene una fecha que indica el intervalo de tiempo que se ha agregado
DateDiff : Devuelve el nmero de intervalos de tiempo entre dos fechas determinadas
DatePart : Devuelve una parte especfica de una fecha dada
DateSerial : Devuelve un valor Date para un ao, mes y da determinados
Ejemplos
El siguiente ejemplo utiliza la funcin DateDiff para mostrar el itervalo entre dos fechas. El intervalo lo muestra en segundos , minutos, dias, semanas meses y aos, como muestra el siguiente grfico
Colocar en el formulario un Command1.
Option Explicit
' recibe las dos fechas como parmetros
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''
Private Sub Calcular(Fecha_Inicial As Date, _
Fecha_Final As Date)
Const Formato As String = "#,##0"
Me.Cls
Me.Print "Calcular Intervalos entre las fechas " &
Fecha_Inicial & _
" hasta :" & Fecha_Final & vbNewLine &
String(150, "-") & vbNewLine
Me.Print Format(DateDiff("s", Fecha_Inicial,
Fecha_Final), Formato) & " segundos"
Me.Print Format(DateDiff("n", Fecha_Inicial,
Fecha_Final), Formato) & " minutos"
Me.Print Format(DateDiff("h", Fecha_Inicial,
Fecha_Final), Formato) & " horas"
Me.Print Format(DateDiff("y", Fecha_Inicial,
Fecha_Final), Formato) & " dias"
Me.Print Format(DateDiff("WW", Fecha_Inicial,
Fecha_Final), Formato) & " semanas"
Me.Print Format(DateDiff("m", Fecha_Inicial,
Fecha_Final), Formato) & " meses"
Me.Print Format(DateDiff("yyyy", Fecha_Inicial,
Fecha_Final), Formato) & " aos"
End Sub
Private Sub Command1_Click()
' le pasa las dos fechas a la funcin
Call Calcular("01/01/2000", Date)
End Sub
Private Sub Form_Load()
Me.AutoRedraw = True
Command1.Caption = "calcular intervalos "
End Sub
Ejemplo con DateAdd
Lo siguiente, muestra como aadir y restar fechas
' agrega 10 aos a la fecha actual
MsgBox DateAdd("yyyy", 10, Date)
' Agrega cinco meses a la fecha actual
MsgBox DateAdd("m", 5, Date)
' resta 1 dias a la fecha actual ( usa el signo -)
MsgBox DateAdd("y", -1, Date)
Nota: para restar, usar el signo negativo, como se usa en el ltimo ejemplo.
Para poder restar y agregar segundos a una hora, usar en el parmetro intervalo la "S", para minutos usar la "n", para horas la "h", para restar y
sumar semanas la "ww"
En el siguiente enlace pods ver algunos otros ejemplos que trabajan con dichas funciones
Funciones para trabajar con fechas en visual basic
Calcular edad de una persona usando DateDiff
Averiguar con Dateserial, el Primer y ltimo da de un mes
4.2 - Funciones para obtener la fecha u hora actual de la PC
Dim Cadena As String
Cadena = Date ' Devuelve el da del sistema en este formato:
"02/08/2004"
Cadena = Time ' Devuelve la hora del sistema en este formato:
"17:32:51"
'Funciones para establecer la fecha u hora de la PC:
Date = (La fecha que queremos establecer)
Time = (La hora que queremos establecer)
5 - Funciones para presentar mensajes
Visual Basic posee 2 tipos de funciones para presentar mensajes, ellas son MsgBox e InputBox.
Funcin InputBox:
La funcin InputBox presenta un mensaje al usuario, permitindole ingresar
un valor en una caja de texto:
Como se dijo la funcin InputBox presenta un cuadro de dilogo donde el
usuario puede ingresar un texto y luego aceptar o cancelar dicho cuadro de dilogo.
Los parmetros principales de esta funcin son:
InputBox (Promt,Title, Default)
El parmetro Prompt especfica la leyenda que mostrar la caja
de mensajes.
El parmetro Title especifica el ttulo que llevar el cuadro de
dilogo.
El parmetro Default es el texto que mostrar la caja de texto.
El aspecto mas importante de InputBox es que nos devuelve una cadena con lo
que haya ingresado el usuario en la caja de texto. Luego podemos realizar una tarea especfica dependiendo del valor devuelto.
Ejemplo:
Dim retorno As String
retorno = InputBox("Ingrese algo en la caja de texto",
"Ejemplo")
MsgBox "Usted ingres:" & retorno
En el ejemplo anterior, en la variable Retorno se almacenar el valor que
haya ingresado el usuario cuando haga Click en el botn de Aceptar.
Cuando el usuario presiona Candelar, el InputBox devuelve una cadena vaca. Esto es importante tenerlo en cuenta para realizar una o tal accin
Si quiseramos por ejemplo desplegar un InputBox, y que este no se cierre hasta que el usuario si o si haya ingresado un valor, podemos hacerlo de la
siguiente forma, utilizando una condicin en un bucle Do Loop
Cdigo fuente en el formulario
Private Sub Form_Load()
Dim Dato As String
' Hasta que no se ingrese un dato, _
el InputBox no se cerrar
Do
Dato = InputBox("Ingresar algun dato", " Ejemplo ")
Loop Until Dato ""
'Muestra el valor
MsgBox Dato, vbInformation
End Sub
Enlace relacionado :
InputBox con PasswordChar
Funcin MsgBox:
La funcin MsgBox, que ya se vi varias veces en distintos ejemplos, es muy
fcil de usar y se utiliza para mostrar distintos tipos de mensajes.
Ejemplos de mensajes o cajas de texto con la funcin MsgBox que podemos mostrar:
Como se ve en los grficos anteriores, con MsgBox podemos tener variedad a la hora de mostrar un determinado mensaje, utilizando para ello las diferentes constantes que incorpora la funcin.
Los parmetros mas importantes son:
Title : Es la leyenda que aparecer en el ttulo del mensaje.
Texto : Es el Texto que mostrar el mensaje.
Botones: En este parmetro se colocan las constantes que
determinarn si la caja tiene uno o varios botones y el tipo de
mensaje: informativo, de exclamacin de alerta etc... Cuando
escribimos la coma dentro de la funcin en el parmetro
botones, Visual Basic despliega una lista con las opciones o
constantes que podemos utilizar.
Computacin e Informtica V Ciclo Willeams Medina [email protected] tlf. 972893759
Sistema de Ventas
Form1.vb
Public Class Form1
Private Sub MantenimientoDeClientesToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
MantenimientoDeClientesToolStripMenuItem.Click
Dim frm As New FRMCLIENTES
frm.MdiParent = Me
frm.Show()
End Sub
Private Sub MantenimientoDeProdutosToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
MantenimientoDeProdutosToolStripMenuItem.Click
Dim frm As New frmPoductos
frm.MdiParent = Me
frm.Show()
End Sub
Private Sub CascadaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles CascadaToolStripMenuItem.Click
Me.LayoutMdi(MdiLayout.Cascade)
End Sub
Private Sub MosaicoHorizontalToolStripMenuItem_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MosaicoHorizontalToolStripMenuItem.Click
Me.LayoutMdi(MdiLayout.TileHorizontal)
End Sub
Private Sub MosaicoVerticalToolStripMenuItem_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MosaicoVerticalToolStripMenuItem.Click
Me.LayoutMdi(MdiLayout.TileVertical)
Computacin e Informtica V Ciclo Willeams Medina [email protected] tlf. 972893759 End Sub
Private Sub AcercaDeToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles AcercaDeToolStripMenuItem.Click
Dim frm As New Acercade
frm.MdiParent = Me
frm.Show()
End Sub
Private Sub SalirToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles SalirToolStripMenuItem.Click
If MessageBox.Show("Desea Salir de la aplicacin?", "Systms Test",
MessageBoxButtons.YesNo, MessageBoxIcon.Information) = Windows.Forms.DialogResult.Yes
Then
Me.Close()
End If
End Sub
Private Sub MantenimientoDeBoletasToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
MantenimientoDeBoletasToolStripMenuItem.Click
Dim frm As New frmBoleta
frm.MdiParent = Me
frm.Show()
End Sub
Private Sub CalculadoraToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles CalculadoraToolStripMenuItem.Click
Dim proceso As New Process
proceso.StartInfo.FileName = "calc.exe"
proceso.StartInfo.Arguments = ""
proceso.Start()
End Sub
Private Sub WordToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles WordToolStripMenuItem.Click
Dim proceso As New Process
proceso.StartInfo.FileName = "winword.exe"
proceso.StartInfo.Arguments = ""
proceso.Start()
End Sub
Private Sub EcxelToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles EcxelToolStripMenuItem.Click
Dim proceso As New Process
proceso.StartInfo.FileName = "excel.exe"
proceso.StartInfo.Arguments = ""
proceso.Start()
End Sub
Private Sub UsuariosToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles UsuariosToolStripMenuItem.Click
Dim frm As New frmUsuarios
frm.MdiParent = Me
frm.Show()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
Dim myfrm As New frmAcceso
myfrm.ShowDialog()
End Sub
Private Sub ApellidoClienteToolStripMenuItem_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles ApellidoClienteToolStripMenuItem.Click
Dim frm As New frmBoletas_Clientes
frm.MdiParent = Me
Computacin e Informtica V Ciclo Willeams Medina [email protected] tlf. 972893759 frm.Show()
End Sub
Private Sub FechasToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles FechasToolStripMenuItem.Click
Dim frm As New frmBuscarxfecha
frm.MdiParent = Me
frm.Show()
End Sub
End Class
Frmclientes.vb
Imports System.Data.SqlClient
Public Class FRMCLIENTES
Private oDataAdapter As SqlDataAdapter
Private oDataTable As DataTable
Private oConnection As SqlConnection
Private oDataRow As DataRow
Private oCommandBuilder As SqlCommandBuilder
Private PosFilaAct As Integer
Private vNuevo As Boolean
Private Sub Activa_Desactiva(ByVal sw As Boolean)
gbdatos.Enabled = Not sw
Me.btnGuardar.Enabled = Not sw
Me.btnNuevo.Enabled = sw
Me.btnEditar.Enabled = sw
Me.btnEliminar.Enabled = sw
Me.btnImprimir.Enabled = sw
Me.dtgclientes.Enabled = sw
End Sub
Private Sub CargarDatos()
Try
Me.oDataRow = Me.oDataTable.Rows(Me.PosFilaAct)
Me.txtid.Text = oDataRow("ID_CLIENTE")
Me.txtnom.Text = oDataRow("NOM_CLIENTE")
Me.txtape.Text = oDataRow("APE_CIENTE")
Computacin e Informtica V Ciclo Willeams Medina [email protected] tlf. 972893759 Me.txtdni.Text = oDataRow("DNI_CLIENTE")
Me.txtruc.Text = oDataRow("RUC_CLIENTE")
Me.txttele.Text = oDataRow("TELEFONO_CLIENTE")
Me.txtdomicilio.Text = oDataRow("DOMICILIO_CLIENTE")
Catch ex As Exception
MessageBox.Show("Error" & Chr(13) & "No existen registros", "Cargar datos",
MessageBoxButtons.OK, MessageBoxIcon.Information)
End Try
End Sub
Private Sub FRMCLIENTES_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
oConnection = New
SqlConnection("server=.\SQLEXPRESS;database=DB_VENTAS;integrated security=yes")
oCommandBuilder = New SqlCommandBuilder(Me.oDataAdapter)
oDataAdapter = New SqlDataAdapter("Select * From TB_CLIENTES", oConnection)
oDataTable = New DataTable
oDataAdapter.Fill(oDataTable)
dtgclientes.DataSource = oDataTable
Me.dtgclientes.AllowUserToAddRows = False
Me.dtgclientes.AllowUserToDeleteRows = False
Me.CargarDatos()
Me.Activa_Desactiva(True)
End Sub
Private Sub btnNuevo_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnNuevo.Click
For Each objControl As Control In Me.gbdatos.Controls
If TypeOf objControl Is TextBox Then
objControl.Text = ""
End If
Next
vNuevo = True
Activa_Desactiva(False)
Me.txtnom.Focus()
End Sub
Private Sub btnGuardar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnGuardar.Click
Try
For Each objControl As Control In Me.gbdatos.Controls
If (TypeOf objControl Is TextBox) And objControl.Text = "" _
And Not objControl.Name = "txtid" Then
MessageBox.Show("Error faltan datos en" & Chr(13) & _
objControl.Name, "Guardar", MessageBoxButtons.OK,
MessageBoxIcon.Information)
Exit Sub
End If
Next
If MessageBox.Show("Desea guardar registro actual?", "Guardar",
MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
If vNuevo Then
oDataRow = Me.oDataTable.NewRow
End If
'oDataRow("ID_CLIENTE") = Me.txtid.Text
oDataRow("NOM_CLIENTE") = Me.txtnom.Text
oDataRow("APE_CIENTE") = Me.txtape.Text
oDataRow("DNI_CLIENTE") = Me.txtdni.Text
oDataRow("RUC_CLIENTE") = Me.txtruc.Text
oDataRow("TELEFONO_CLIENTE") = Me.txttele.Text
oDataRow("DOMICILIO_CLIENTE") = Me.txtdomicilio.Text
Computacin e Informtica V Ciclo Willeams Medina [email protected] tlf. 972893759
If vNuevo Then
Me.oDataTable.Rows.Add(Me.oDataRow)
Me.PosFilaAct = (Me.oDataTable.Rows.Count - 1)
End If
oCommandBuilder.DataAdapter = Me.oDataAdapter
Me.oDataAdapter.Update(Me.oDataTable)
Me.oDataTable.Clear()
Me.oDataAdapter.Fill(Me.oDataTable)
MessageBox.Show("Datos Guardados", "Guardar", MessageBoxButtons.OK,
MessageBoxIcon.Information)
Else
MessageBox.Show("No se guard el registro", "Eliminar",
MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
Activa_Desactiva(True)
Me.CargarDatos()
Catch ex As Exception
MessageBox.Show("Error al intentar guardar registro" & Chr(13) & ex.Message,
"Guardar", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Try
End Sub
Private Sub btnEditar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnEditar.Click
MessageBox.Show("Proceda con la edicin del registro actual", "Edicin",
MessageBoxButtons.OK, MessageBoxIcon.Information)
Me.Activa_Desactiva(False)
vNuevo = False
Me.txtnom.Focus()
End Sub
Private Sub btnEliminar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnEliminar.Click
Try
If Me.oDataTable.Rows.Count > 0 Then
If MessageBox.Show("Desea eliminar registro actual?", "Eliminar",
MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
Dim strDeleteSQL As String
Dim oSQLCommand As New SqlCommand
strDeleteSQL = "Delete From TB_CLIENTES where ID_CLIENTE =" &
CInt(Me.txtid.Text)
Me.oConnection.Open()
oSQLCommand.Connection = Me.oConnection
oSQLCommand.CommandText = strDeleteSQL
oSQLCommand.ExecuteNonQuery()
Me.oConnection.Close()
Me.PosFilaAct = IIf(Me.PosFilaAct > 0, Me.PosFilaAct - 1, 0)
Me.oDataAdapter = New SqlDataAdapter("Select * From TB_CLIENTES",
Me.oConnection)
Me.oDataTable.Clear()
Me.oDataAdapter.Fill(Me.oDataTable)
Me.CargarDatos()
End If
Else
MessageBox.Show("No existen registros para eliminar", "Eliminar",
MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
Catch ex As Exception
MessageBox.Show("Error para eliminar", "Error", MessageBoxButtons.OK,
MessageBoxIcon.Information)
End Try
End Sub
Computacin e Informtica V Ciclo Willeams Medina [email protected] tlf. 972893759 Private Sub dtgclientes_CellClick(ByVal sender As Object, ByVal e As
System.Windows.Forms.DataGridViewCellEventArgs) Handles dtgclientes.CellClick
If Not Me.dtgclientes.Item(0, Me.dtgclientes.CurrentRow.Index).Value Is
DBNull.Value Then
Me.PosFilaAct = Me.dtgclientes.CurrentRow.Index
Me.CargarDatos()
End If
End Sub
Private Sub txtnom_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtnom.KeyPress
sololetras(e)
If e.KeyChar() = Chr(13) Then
Me.txtape.Focus()
End If
End Sub
Private Sub txtape_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtape.KeyPress
sololetras(e)
If e.KeyChar() = Chr(13) Then
Me.txtdni.Focus()
End If
End Sub
Private Sub txtdni_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtdni.KeyPress
solonumeros(e)
If e.KeyChar() = Chr(13) Then
Me.txtruc.Focus()
End If
End Sub
Private Sub txtruc_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtruc.KeyPress
solonumeros(e)
If e.KeyChar() = Chr(13) Then
Me.txttele.Focus()
End If
End Sub
Private Sub txttele_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txttele.KeyPress
solonumeros(e)
If e.KeyChar() = Chr(13) Then
Me.txtdomicilio.Focus()
End If
End Sub
Private Sub txtdomicilio_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtdomicilio.KeyPress
sololetras(e)
If e.KeyChar() = Chr(13) Then
Me.btnGuardar.Focus()
End If
End Sub
Private Sub txtbape_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtbape.KeyPress
sololetras(e)
End Sub
Private Sub txtbape_TextChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles txtbape.TextChanged
Try
Me.oDataTable.Clear()
If txtbape.Text "" Then
Computacin e Informtica V Ciclo Willeams Medina [email protected] tlf. 972893759 Me.oDataAdapter = New SqlDataAdapter("Select * From TB_CLIENTES where
APE_CIENTE like'" _
& txtbape.Text & "%'", Me.oConnection)
Else
Me.oDataAdapter = New SqlDataAdapter("Select * From TB_CLIENTES",
Me.oConnection)
End If
Me.oDataAdapter.Fill(Me.oDataTable)
Catch ex As Exception
MessageBox.Show("Error al buscar" & Chr(13) & ex.Message)
End Try
End Sub
Private Sub txtbruc_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtbruc.KeyPress
solonumeros(e)
End Sub
Private Sub txtbruc_TextChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles txtbruc.TextChanged
Try
Me.oDataTable.Clear()
If txtbruc.Text "" Then
Me.oDataAdapter = New SqlDataAdapter("Select * From TB_CLIENTES where
RUC_CLIENTE like'" _
& txtbruc.Text & "%'", Me.oConnection)
Else
Me.oDataAdapter = New SqlDataAdapter("Select * From TB_CLIENTES",
Me.oConnection)
End If
Me.oDataAdapter.Fill(Me.oDataTable)
Catch ex As Exception
MessageBox.Show("Error al buscar" & Chr(13) & ex.Message)
End Try
End Sub
Private Sub txtbdni_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtbdni.KeyPress
solonumeros(e)
End Sub
Private Sub txtbdni_TextChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles txtbdni.TextChanged
Try
Me.oDataTable.Clear()
If txtbdni.Text "" Then
Me.oDataAdapter = New SqlDataAdapter("Select * From TB_CLIENTES where
DNI_CLIENTE like'" _
& txtbdni.Text & "%'", Me.oConnection)
Else
Me.oDataAdapter = New SqlDataAdapter("Select * From TB_CLIENTES",
Me.oConnection)
End If
Me.oDataAdapter.Fill(Me.oDataTable)
Catch ex As Exception
MessageBox.Show("Error al buscar" & Chr(13) & ex.Message)
End Try
End Sub
Private Sub btnImprimir_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnImprimir.Click
Dim myreport As New rtpclientes
myreport.SetDataSource(Me.oDataTable)
Dim myfrom As New frm_Reporte_clientes
myfrom.crvclientes.ReportSource = myreport
myfrom.WindowState = FormWindowState.Maximized
myfrom.ShowDialog()
Computacin e Informtica V Ciclo Willeams Medina [email protected] tlf. 972893759 End Sub
End Class
Frmproductos.vb
Imports System.Data.SqlClient
Public Class frmPoductos
Private oDataAdapter As SqlDataAdapter
Private oDataTable As DataTable
Private oConnection As SqlConnection
Private oDataRow As DataRow
Private oCommandBuilder As SqlCommandBuilder
Private PosFilaAct As Integer
Private vNuevo As Boolean
Private Sub Activa_Desactiva(ByVal sw As Boolean)
gbDatos.Enabled = Not sw
Me.btnGuardar.Enabled = Not sw
Me.btnNuevo.Enabled = sw
Me.btnEditar.Enabled = sw
Me.btnEliminar.Enabled = sw
Me.btnImprimir.Enabled = sw
Me.dtgprductos.Enabled = sw
End Sub
Private Sub CargarDatos()
Try
Me.oDataRow = Me.oDataTable.Rows(Me.PosFilaAct)
Me.txtid.Text = oDataRow("ID_PRODUCTO")
Me.txtnom.Text = oDataRow("NOM_PRODUCTO")
Me.txtpc.Text = oDataRow("PRE_COMPRA_PRODUCTO")
Me.txtpv.Text = oDataRow("PRE_VENTA_PRODUCTO")
Me.txtstock.Text = oDataRow("STOCK_PRDUCTO")
Me.dtpfa.Text = oDataRow("FECHA_ACTUALIZACION_PRODUCTO")
Computacin e Informtica V Ciclo Willeams Medina [email protected] tlf. 972893759
Catch ex As Exception
MessageBox.Show("Error" & Chr(13) & "No existen registros", "Cargar datos",
MessageBoxButtons.OK, MessageBoxIcon.Information)
End Try
End Sub
Private Sub frmPoductos_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
oConnection = New
SqlConnection("server=.\SQLEXPRESS;database=DB_VENTAS;integrated security=yes")
oCommandBuilder = New SqlCommandBuilder(Me.oDataAdapter)
oDataAdapter = New SqlDataAdapter("Select * From TB_PRODUCTOS", oConnection)
oDataTable = New DataTable
oDataAdapter.Fill(oDataTable)
dtgprductos.DataSource = oDataTable
Me.dtgprductos.AllowUserToAddRows = False
Me.dtgprductos.AllowUserToDeleteRows = False
Me.CargarDatos()
Me.Activa_Desactiva(True)
End Sub
Private Sub btnNuevo_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnNuevo.Click
For Each objControl As Control In Me.gbdatos.Controls
If TypeOf objControl Is TextBox Then
objControl.Text = ""
End If
Next
vNuevo = True
Activa_Desactiva(False)
Me.txtnom.Focus()
End Sub
Private Sub btnGuardar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnGuardar.Click
Try
For Each objControl As Control In Me.gbdatos.Controls
If (TypeOf objControl Is TextBox) And objControl.Text = "" _
And Not objControl.Name = "txtid" Then
MessageBox.Show("Error faltan datos en" & Chr(13) & _
objControl.Name, "Guardar", MessageBoxButtons.OK,
MessageBoxIcon.Information)
Exit Sub
End If
Next
If MessageBox.Show("Desea guardar registro actual?", "Guardar",
MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
If vNuevo Then
oDataRow = Me.oDataTable.NewRow
End If
'oDataRow("ID_PRODUCTO") = Me.txtid.Text
oDataRow("NOM_PRODUCTO") = Me.txtnom.Text
oDataRow("PRE_COMPRA_PRODUCTO") = Me.txtpc.Text
oDataRow("PRE_VENTA_PRODUCTO") = Me.txtpv.Text
oDataRow("STOCK_PRDUCTO") = Me.txtstock.Text
oDataRow("FECHA_ACTUALIZACION_PRODUCTO") = Me.dtpfa.Text
If vNuevo Then
Me.oDataTable.Rows.Add(Me.oDataRow)
Me.PosFilaAct = (Me.oDataTable.Rows.Count - 1)
Computacin e Informtica V Ciclo Willeams Medina [email protected] tlf. 972893759 End If
oCommandBuilder.DataAdapter = Me.oDataAdapter
Me.oDataAdapter.Update(Me.oDataTable)
Me.oDataTable.Clear()
Me.oDataAdapter.Fill(Me.oDataTable)
MessageBox.Show("Datos Guardados", "Guardar", MessageBoxButtons.OK,
MessageBoxIcon.Information)
Else
MessageBox.Show("No se guard el registro", "Eliminar",
MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
Activa_Desactiva(True)
Me.CargarDatos()
Catch ex As Exception
MessageBox.Show("Error al intentar guardar registro" & Chr(13) & ex.Message,
"Guardar", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Try
End Sub
Private Sub btnEditar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnEditar.Click
MessageBox.Show("Proceda con la edicin del registro actual", "Edicin",
MessageBoxButtons.OK, MessageBoxIcon.Information)
Me.Activa_Desactiva(False)
vNuevo = False
Me.txtnom.Focus()
End Sub
Private Sub btnEliminar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnEliminar.Click
Try
If Me.oDataTable.Rows.Count > 0 Then
If MessageBox.Show("Desea eliminar registro actual?", "Eliminar",
MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
Dim strDeleteSQL As String
Dim oSQLCommand As New SqlCommand
strDeleteSQL = "Delete From TB_PRODUCTOS where ID_PRODUCTO =" &
CInt(Me.txtid.Text)
Me.oConnection.Open()
oSQLCommand.Connection = Me.oConnection
oSQLCommand.CommandText = strDeleteSQL
oSQLCommand.ExecuteNonQuery()
Me.oConnection.Close()
Me.PosFilaAct = IIf(Me.PosFilaAct > 0, Me.PosFilaAct - 1, 0)
Me.oDataAdapter = New SqlDataAdapter("Select * From TB_PRODUCTOS",
Me.oConnection)
Me.oDataTable.Clear()
Me.oDataAdapter.Fill(Me.oDataTable)
Me.CargarDatos()
End If
Else
MessageBox.Show("No existen registros para eliminar", "Eliminar",
MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
Catch ex As Exception
MessageBox.Show("Error para eliminar", "Error", MessageBoxButtons.OK,
MessageBoxIcon.Information)
End Try
End Sub
Private Sub dtgprductos_CellClick(ByVal sender As Object, ByVal e As
System.Windows.Forms.DataGridViewCellEventArgs) Handles dtgprductos.CellClick
If Not Me.dtgprductos.Item(0, Me.dtgprductos.CurrentRow.Index).Value Is
DBNull.Value Then
Me.PosFilaAct = Me.dtgprductos.CurrentRow.Index
Computacin e Informtica V Ciclo Willeams Medina [email protected] tlf. 972893759 Me.CargarDatos()
End If
End Sub
Private Sub txtbnom_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtbnom.KeyPress
sololetras(e)
End Sub
Private Sub txtbnom_TextChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles txtbnom.TextChanged
Try
Me.oDataTable.Clear()
If txtbnom.Text "" Then
Me.oDataAdapter = New SqlDataAdapter("Select * From TB_PRODUCTOS where
NOM_PRODUCTO like'" _
& txtbnom.Text & "%'", Me.oConnection)
Else
Me.oDataAdapter = New SqlDataAdapter("Select * From TB_PRODUCTOS",
Me.oConnection)
End If
Me.oDataAdapter.Fill(Me.oDataTable)
Catch ex As Exception
MessageBox.Show("Error al buscar" & Chr(13) & ex.Message)
End Try
End Sub
Private Sub txtbstock_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtbstock.KeyPress
solonumeros(e)
End Sub
Private Sub txtbstock_TextChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles txtbstock.TextChanged
Try
Me.oDataTable.Clear()
If txtbstock.Text "" Then
Me.oDataAdapter = New SqlDataAdapter("Select * From TB_PRODUCTOS where
STOCK_PRDUCTO like'" _
& txtbstock.Text & "%'", Me.oConnection)
Else
Me.oDataAdapter = New SqlDataAdapter("Select * From TB_PRODUCTOS",
Me.oConnection)
End If
Me.oDataAdapter.Fill(Me.oDataTable)
Catch ex As Exception
MessageBox.Show("Error al buscar" & Chr(13) & ex.Message)
End Try
End Sub
Private Sub txtnom_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtnom.KeyPress
sololetras(e)
If e.KeyChar() = Chr(13) Then
Me.txtpc.Focus()
End If
End Sub
Private Sub txtpc_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtpc.KeyPress
solonumeros(e)
If e.KeyChar() = Chr(13) Then
Me.txtpv.Focus()
End If
End Sub
Computacin e Informtica V Ciclo Willeams Medina [email protected] tlf. 972893759 Private Sub txtpv_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtpv.KeyPress
solonumeros(e)
If e.KeyChar() = Chr(13) Then
Me.txtstock.Focus()
End If
End Sub
Private Sub txtstock_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtstock.KeyPress
solonumeros(e)
If e.KeyChar() = Chr(13) Then
Me.dtpfa.Focus()
End If
End Sub
Private Sub dtpfa_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles dtpfa.KeyPress
If e.KeyChar() = Chr(13) Then
Me.btnGuardar.Focus()
End If
End Sub
Private Sub btnImprimir_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnImprimir.Click
Dim myreport As New rptproductos
myreport.SetDataSource(Me.oDataTable)
Dim myfrom As New frmReporte_Productos
myfrom.cvproductos.ReportSource = myreport
myfrom.WindowState = FormWindowState.Maximized
myfrom.ShowDialog()
End Sub
End Class
acercade.vb
Public NotInheritable Class Acercade
Computacin e Informtica V Ciclo Willeams Medina [email protected] tlf. 972893759 Private Sub OKButton_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles OKButton.Click
Me.Close()
End Sub
End Class
frmBoleta.vb
Imports System.Data.SqlClient
Public Class frmBoleta
Private oconnection As SqlConnection
Private oDTDBtmp As DataTable 'tabla temporal para manejar items
Private Sub Activar_Desactivar(ByVal sw As Boolean)
Me.btnBCliente.Enabled = sw
Me.btnAgregarItem.Enabled = sw
Me.btnEliminarItem.Enabled = sw
Me.btnGuardarBoleta.Enabled = sw
Me.btnImprimir.Enabled = sw
Me.btnNBoleta.Enabled = Not sw
End Sub
Private Sub Crear_Tabla_temporal()
oDTDBtmp = New DataTable("tbDetalle_Boleta_Temporal") 'crear tabla temporal
Me.dtgDetalle_Boleta.DataSource = oDTDBtmp 'asignar el datasource del tdgddetalle
With oDTDBtmp.Columns
.Add("ID_Producto", Type.GetType("System.Int32"))
.Add("Cantidad", Type.GetType("System.Int32"))
.Add("Descripcion", Type.GetType("System.String"))
Computacin e Informtica V Ciclo Willeams Medina [email protected] tlf. 972893759 .Add("Precio", Type.GetType("System.Single"))
.Add("Importe", Type.GetType("System.Single"))
End With
Me.dtgDetalle_Boleta.Columns(0).Visible = False
oDTDBtmp.PrimaryKey = New DataColumn() {oDTDBtmp.Columns("ID_Producto")}
End Sub
Private Sub frmBoleta_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Try
Me.oconnection = New
SqlConnection("server=.\sqlexpress;database=DB_VENTAS;Integrated security=true")
Me.Crear_Tabla_temporal()
Me.dtpfecha.Value = Now
Activar_Desactivar(False)
Catch ex As Exception
MessageBox.Show("Error al cargar datos" & Chr(13) & ex.Message, "Error", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Me.Activar_Desactivar(False)
End Sub
Private Sub btnBCliente_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnBCliente.Click
Dim myfrm As New frmAgregar_Clientes
Dim respuesta As Windows.Forms.DialogResult = myfrm.ShowDialog
If respuesta = Windows.Forms.DialogResult.OK Then
If myfrm.dtgClientes.RowCount > 0 Then
Dim filaAct As Integer = myfrm.dtgClientes.CurrentRow.Index
Me.txtid.Text = myfrm.dtgClientes.Item(0, filaAct).Value
Me.txtnom.Text = myfrm.dtgClientes.Item(1, filaAct).Value
Me.txtape.Text = myfrm.dtgClientes.Item(2, filaAct).Value
Me.txtdomicilio.Text = myfrm.dtgClientes.Item(6, filaAct).Value
Me.txtdni.Text = myfrm.dtgClientes.Item(5, filaAct).Value
Else
MessageBox.Show("No existe Cliente Seleccionado", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
End If
Dim objcontrol As Control
Dim txttexbox As TextBox
' for each para que no puedan cambiar sus datos que sea solo lectura
For Each objcontrol In Me.gbCliente.Controls
If TypeOf objcontrol Is TextBox Then
txttexbox = objcontrol
txttexbox.ReadOnly = True
End If
Next objcontrol
End Sub
Private Sub Calcular_Totales()
'actualizar totales
Dim vtotal As Single
vtotal = IIf(oDTDBtmp.Compute("Sum(Importe)", Nothing) Is DBNull.Value, 0,
oDTDBtmp.Compute("Sum(Importe)", Nothing))
Me.txtTotal_Boleta.Text = Format(vtotal, "###0.00")
Me.txtSon.Text = Letras(Val(Me.txtTotal_Boleta.Text)).ToUpper
End Sub
Private Sub btnNBoleta_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnNBoleta.Click
Dim oDTBoleta As DataTable
Dim oDABoleta As SqlDataAdapter
Computacin e Informtica V Ciclo Willeams Medina [email protected] tlf. 972893759 Activar_Desactivar(True)
Dim objcontrol As Control
For Each objcontrol In Me.gbCliente.Controls
If TypeOf objcontrol Is TextBox Then
objcontrol.Text = ""
End If
Next
Me.txtidboleta.Text = ""
Me.txtTotal_Boleta.Text = ""
Me.txtSon.Text = ""
Me.Crear_Tabla_temporal()
oDTBoleta = New DataTable("TB_BOLETAS")
oDABoleta = New SqlDataAdapter("select * from TB_BOLETAS", oconnection)
oDABoleta.Fill(oDTBoleta)
Dim N_Boleta As String
If oDTBoleta.Rows.Count > 0 Then
Dim oDatarow = oDTBoleta.Rows(oDTBoleta.Rows.Count - 1)
N_Boleta = oDatarow(0)
Else
N_Boleta = 0
End If
Me.txtidboleta.Text = Format(CInt(N_Boleta) + 1, "0000000000")
End Sub
Private Sub btnAgregarItem_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnAgregarItem.Click
Dim myform As New frmAgregar_Producto
Dim respuesta As Windows.Forms.DialogResult = myform.ShowDialog
Try
If respuesta = Windows.Forms.DialogResult.OK Then
Dim odatarow As DataRow
odatarow = oDTDBtmp.NewRow
odatarow(0) = myform.txtId_Producto.Text
odatarow(1) = myform.nudCantidad.Text
odatarow(2) = myform.txtDescripcion_Pro.Text
odatarow(3) = myform.txtPrecio.Text
odatarow(4) = myform.txtImporte.Text
oDTDBtmp.Rows.Add(odatarow)
oDTDBtmp.AcceptChanges()
Me.Calcular_Totales()
End If
Catch ex As Exception
MessageBox.Show("Error al agregar item" & ex.Message, "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
myform.Dispose()
Dim objcontrol As Control
Dim txttexbox As TextBox
' for each para que no puedan cambiar sus datos que sea solo lectura
For Each objcontrol In Me.Panel2.Controls
If TypeOf objcontrol Is TextBox Then
txttexbox = objcontrol
txttexbox.ReadOnly = True
End If
Next objcontrol
End Sub
Private Sub btnEliminarItem_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnEliminarItem.Click
Try
If oDTDBtmp.Rows.Count > 0 Then
Dim oDataRow As DataRow
oDataRow = oDTDBtmp.Rows(Me.dtgDetalle_Boleta.CurrentRow.Index)
oDTDBtmp.Rows.Remove(oDataRow)
Computacin e Informtica V Ciclo Willeams Medina [email protected] tlf. 972893759 Me.Calcular_Totales()
Else
MessageBox.Show("No existen items ", "error", MessageBoxButtons.OK,
MessageBoxIcon.Error)
End If
Catch ex As Exception
MessageBox.Show("error al eliminar item " & Chr(13) & ex.Message, "error",
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Private Sub btnGuardarBoleta_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnGuardarBoleta.Click
Dim oDADetalleBoleta, oDABoleta As SqlDataAdapter
Dim oDTDetalleBoleta, oDTBoleta As DataTable
Dim oCommandBuilder As New SqlCommandBuilder
If MessageBox.Show("Desea guardar registro actual ?", "guardar ",
MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
'----------------------------------------------------------------------------
--------------------
If Me.txtid.Text = "" Then
MessageBox.Show("Debe seleccionar un cliente ", "error",
MessageBoxButtons.OK, MessageBoxIcon.Information)
Me.btnBCliente_Click(Nothing, Nothing)
Exit Sub
End If
If Me.oDTDBtmp.Rows.Count 0 Then
Dim i As Integer
For i = 0 To Me.dtgDetalle_Boleta.RowCount - 1
oDataRowDetalleBoleta = oDTDetalleBoleta.NewRow
oDataRowDetalleBoleta("ID_BOLETA") = Me.txtidboleta.Text
oDataRowDetalleBoleta("ID_PRODUCTO") = Me.dtgDetalle_Boleta.Item(0,
i).Value
oDataRowDetalleBoleta("PRECIO_DT_BOLETA") =
Me.dtgDetalle_Boleta.Item(1, i).Value
oDataRowDetalleBoleta("CANTIDAD_DT_BOLETA") =
Me.dtgDetalle_Boleta.Item(3, i).Value
oDataRowDetalleBoleta("REPORTE_DT_BOLETA") =
Me.dtgDetalle_Boleta.Item(4, i).Value
oDTDetalleBoleta.Rows.Add(oDataRowDetalleBoleta)
Next
Computacin e Informtica V Ciclo Willeams Medina [email protected] tlf. 972893759 Try
oCommandBuilder.DataAdapter = oDABoleta
oDABoleta.Update(oDTBoleta)
oCommandBuilder.DataAdapter = oDADetalleBoleta
oDADetalleBoleta.Update(oDTDetalleBoleta)
MessageBox.Show("Registro Guardado", "Guardar", MessageBoxButtons.OK,
MessageBoxIcon.Information)
Catch ex As Exception
MessageBox.Show("Error al guardar" & Chr(13) & ex.Message, "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error)
Me.btnNBoleta_Click(Nothing, Nothing)
Exit Sub
Finally
Me.oDTDBtmp.Dispose()
End Try
End If
Else
MessageBox.Show("Registro no guardado", "Guardar", MessageBoxButtons.OK,
MessageBoxIcon.Information)
Me.btnNBoleta_Click(Nothing, Nothing)
End If
Activar_Desactivar(False)
End Sub
Private Sub dtgDetalle_Boleta_CellValueChanged(ByVal sender As Object, ByVal e As
System.Windows.Forms.DataGridViewCellEventArgs) Handles
dtgDetalle_Boleta.CellValueChanged
Dim vFilaActual As Integer = Me.dtgDetalle_Boleta.CurrentRow.Index
With Me.dtgDetalle_Boleta
.Item(4, vFilaActual).Value = .Item(1, vFilaActual).Value * .Item(3,
vFilaActual).Value
End With
Me.Calcular_Totales()
End Sub
End Class
Computacin e Informtica V Ciclo Willeams Medina [email protected] tlf. 972893759
frmUsuarios.vb
Imports System.Data.SqlClient
Public Class frmUsuarios
Private oDataAdapter As SqlDataAdapter
Private oDataTable As DataTable
Private oConnection As SqlConnection
Private oDataRow As DataRow
Private oCommandBuilder As SqlCommandBuilder
Private PosFilaAct As Integer
Private vNuevo As Boolean
Private Sub Activa_Desactiva(ByVal sw As Boolean)
gbdatos.Enabled = Not sw
Me.btnGuardar.Enabled = Not sw
Me.btnNuevo.Enabled = sw
Me.btnEditar.Enabled = sw
Me.btnEliminar.Enabled = sw
Me.btnImprimir.Enabled = sw
Me.dtgusuarios.Enabled = sw
End Sub
Computacin e Informtica V Ciclo Willeams Medina [email protected] tlf. 972893759 Private Sub CargarDatos()
Try
Me.oDataRow = Me.oDataTable.Rows(Me.PosFilaAct)
Me.txtId.Text = oDataRow("cod_usuario")
Me.txtnom.Text = oDataRow("Nom_usuario")
Me.txtcont.Text = "***************"
Me.txtconfir.Text = "***************"
Catch ex As Exception
MessageBox.Show("Error" & Chr(13) & "No existen registros", "Cargar datos",
MessageBoxButtons.OK, MessageBoxIcon.Information)
End Try
End Sub
Private Sub frmUsuarios_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
oConnection = New
SqlConnection("server=.\SQLEXPRESS;database=DB_VENTAS;integrated security=yes")
oCommandBuilder = New SqlCommandBuilder(Me.oDataAdapter)
oDataAdapter = New SqlDataAdapter("Select * From TB_USUARIOS", oConnection)
oDataTable = New DataTable
oDataAdapter.Fill(oDataTable)
dtgusuarios.DataSource = oDataTable
Me.CargarDatos()
Me.Activa_Desactiva(True)
End Sub
Private Sub btnNuevo_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnNuevo.Click
For Each objControl As Control In Me.gbdatos.Controls
If TypeOf objControl Is TextBox Then
objControl.Text = ""
End If
Next
Activa_Desactiva(False)
MessageBox.Show("Ingrese datos", "Nuevo", MessageBoxButtons.OK,
MessageBoxIcon.Information)
vNuevo = True
Me.txtnom.Focus()
End Sub
Private Sub btnGuardar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnGuardar.Click
Try
For Each objControl As Control In Me.gbdatos.Controls
If (TypeOf objControl Is TextBox) And objControl.Text = "" _
And Not objControl.Name = "txtId" Then
MessageBox.Show("Error faltan datos en" & Chr(13) & _
objControl.Name, "Guardar", MessageBoxButtons.OK,
MessageBoxIcon.Information)
Exit Sub
End If
Next
If Me.txtcont.Text Me.txtconfir.Text Then
MessageBox.Show("Contrasea no coincide", "Error", MessageBoxButtons.OK,
MessageBoxIcon.Error)
Exit Sub
End If
If MessageBox.Show("Desea guardar registro actual?", "Guardar",
MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
If vNuevo Then
oDataRow = Me.oDataTable.NewRow
End If
'oDataRow("cod_usuario") = Me.txtId.Text
oDataRow("Nom_usuario") = Me.txtnom.Text
Computacin e Informtica V Ciclo Willeams Medina [email protected] tlf. 972893759 oDataRow("contrasea_usuario") = ENCRIPTAR(Me.txtcont.Text)
If vNuevo Then
Me.oDataTable.Rows.Add(Me.oDataRow)
Me.PosFilaAct = (Me.oDataTable.Rows.Count - 1)
End If
oCommandBuilder.DataAdapter = Me.oDataAdapter
Me.oDataAdapter.Update(Me.oDataTable)
Me.oDataTable.Clear()
Me.oDataAdapter.Fill(Me.oDataTable)
MessageBox.Show("Datos Guardados", "Guardar", MessageBoxButtons.OK,
MessageBoxIcon.Information)
Else
MessageBox.Show("No se guard el registro", "Eliminar",
MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
Activa_Desactiva(True)
Me.CargarDatos()
Catch ex As Exception
MessageBox.Show("Error al intentar guardar registro" & Chr(13) & ex.Message,
"Guardar", MessageBoxButtons.OK, MessageBoxIcon.Information)
Me.CargarDatos()
Activa_Desactiva(True)
End Try
End Sub
Private Sub btnEditar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnEditar.Click
MessageBox.Show("Proceda con la edicin del registro actual", "Edicin",
MessageBoxButtons.OK, MessageBoxIcon.Information)
Me.Activa_Desactiva(False)
vNuevo = False
Me.txtnom.Focus()
End Sub
Private Sub btnEliminar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnEliminar.Click
Try
If Me.oDataTable.Rows.Count > 0 Then
If MessageBox.Show("Desea eliminar registro actual?", "Eliminar",
MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
Dim strDeleteSQL As String
Dim oSQLCommand As New SqlCommand
strDeleteSQL = "Delete From TB_USUARIOS where cod_usuario =" &
CInt(Me.txtId.Text)
Me.oConnection.Open()
oSQLCommand.Connection = Me.oConnection
oSQLCommand.CommandText = strDeleteSQL
oSQLCommand.ExecuteNonQuery()
Me.oConnection.Close()
Me.PosFilaAct = IIf(Me.PosFilaAct > 0, Me.PosFilaAct - 1, 0)
Me.oDataAdapter = New SqlDataAdapter("Select * TB_USUARIOS",
Me.oConnection)
Me.oDataTable.Clear()
Me.oDataAdapter.Fill(Me.oDataTable)
Me.CargarDatos()
End If
Else
MessageBox.Show("No existen registros para eliminar", "Eliminar",
MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
Catch ex As Exception
MessageBox.Show("Error para eliminar", "Error", MessageBoxButtons.OK,
MessageBoxIcon.Information)
End Try
End Sub
Computacin e Informtica V Ciclo Willeams Medina [email protected] tlf. 972893759
Private Sub btnImprimir_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnImprimir.Click
Dim myreport As New rptUsuarios
myreport.SetDataSource(Me.oDataTable)
Dim myfrom As New frmReporte_Usuarios
myfrom.crvUsuarios.ReportSource = myreport
myfrom.WindowState = FormWindowState.Maximized
myfrom.ShowDialog()
End Sub
Private Sub dtgusuarios_CellClick(ByVal sender As Object, ByVal e As
System.Windows.Forms.DataGridViewCellEventArgs) Handles dtgusuarios.CellClick
If Not Me.dtgusuarios.Item(0, Me.dtgusuarios.CurrentRow.Index).Value Is
DBNull.Value Then
Me.PosFilaAct = Me.dtgusuarios.CurrentRow.Index
Me.CargarDatos()
End If
End Sub
Private Sub txtnom_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtnom.KeyPress
sololetras(e)
If e.KeyChar() = Chr(13) Then
Me.txtcont.Focus()
End If
End Sub
Private Sub txtcont_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtcont.KeyPress
If e.KeyChar() = Chr(13) Then
Me.txtconfir.Focus()
End If
End Sub
Private Sub txtconfir_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtconfir.KeyPress
sololetras(e)
If e.KeyChar() = Chr(13) Then
Me.btnGuardar.Focus()
End If
End Sub
Private Sub txtbUsuario_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtbUsuario.KeyPress
sololetras(e)
End Sub
Private Sub txtbUsuario_TextChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles txtbUsuario.TextChanged
Try
Me.oDataTable.Clear()
If txtbUsuario.Text "" Then
Me.oDataAdapter = New SqlDataAdapter("Select * From TB_USUARIOS where
Nom_usuario like'" _
& txtbUsuario.Text & "%'", Me.oConnection)
Else
Me.oDataAdapter = New SqlDataAdapter("Select * From TB_USUARIOS",
Me.oConnection)
End If
Me.oDataAdapter.Fill(Me.oDataTable)
Catch ex As Exception
MessageBox.Show("Error al buscar" & Chr(13) & ex.Message)
End Try
End Sub
End Class
Computacin e Informtica V Ciclo Willeams Medina [email protected] tlf. 972893759
frmAcceso.vb
Imports System.Data.SqlClient
Public Class frmAcceso
Private oDAUsiario As SqlDataAdapter
Private oDTUsuario As DataTable
Private oCN As SqlConnection
Pri