visual basic net.pdf

Upload: carlos-ronald-manrique-arias

Post on 10-Jan-2016

114 views

Category:

Documents


0 download

TRANSCRIPT

  • 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