SlideShare a Scribd company logo
1 of 7
Proyecto Ado .NET<br />Mantenimiento de Clientes<br />El propósito de dicho manual es, demostrar la gran versatilidad que tiene el Ado .Net de Visual Basic, en relación a conexiones y ejecución de comandos, incluyendo la carga de DataSets, las operaciones básicas como: Inserciones, Eliminaciones de tipo lógico y Actualizaciones, demostrando la autogeneración de códigos para los clientes, pero antes debemos contar con un modelo relacional demostrativo. para tener un mayor alcance de lo que se esta realizando:<br />Se tiene el siguiente Modelo Relacional:<br />18415-2540<br />Dicho Script deberá ser ejecutado en el motor de base de datos de SQL Server.<br />El proyecto esta constituido por un formulario y un módulo, para elementos generales:<br />228601905<br />Este formulario esta constituido por cajas de texto (8), combos (4), picturebox (1) y un objeto openfiledialog (1) para control de imágenes.<br />El proyecto esta programado en el siguiente orden:<br />AGREGAR UN MODULO A NUESTRO PROYECTO, ESTE CONTENDRA LA DECLARACION PUBLICA DE UN DATASET (DsSysAdoNet) Y UN DATAADAPTER (DaGenerador) incluyendo la CONEXIÓN, PARA LA TABLA GENERADOR DE CODIGOS,  PROGRAMELO DE LA SIGUENTE MANERA:Module Module1    Public DsSysAdoNet As New DataSet    Public CN As New SqlClient.SqlConnection(quot;
SERVER=LOCALHOST;UID=SA;” _           ”PASSWORD=123;DATABASE=SysAdoNetquot;
)    Public DaGenerador As New SqlClient.SqlDataAdapter(quot;
select * from GENERADORquot;
, CN)Public Function GENERAR_CODIGO(ByVal TABLA As String) As String        Dim Nfila, CEROS As Integer        Dim ULT As Integer        Dim CG As String = quot;
quot;
        DaGenerador.Fill(DsSysAdoNet, quot;
Generadorquot;
)        DsSysAdoNet.Tables(quot;
Generadorquot;
).DefaultView.Sort = quot;
Parametroquot;
        Nfila = DsSysAdoNet.Tables(quot;
Generadorquot;
).DefaultView.Find(TABLA)        If Nfila >= 0 Then            ULT = Val(DsSysAdoNet.Tables(quot;
Generadorquot;
).Rows(Nfila)(1)) + 1            CEROS = 4 - Len(Trim(Str(ULT)))            Select Case CEROS                Case 3 : CG = Left(TABLA, 1) + quot;
000quot;
 + Trim(Str(ULT))                Case 2 : CG = Left(TABLA, 1) + quot;
00quot;
 + Trim(Str(ULT))                Case 1 : CG = Left(TABLA, 1) + quot;
0quot;
 + Trim(Str(ULT))                Case 0 : CG = Left(TABLA, 1) + Trim(Str(ULT))            End Select        End If        CN.Open()        Dim SQL As String        SQL = quot;
UPDATE GENERADOR SET ULTIMO='quot;
 + Str(ULT) + _              quot;
' WHERE PARAMETRO='quot;
 + TABLA + quot;
'quot;
        Dim CMD As New SqlClient.SqlCommand(SQL, CN)        CMD.CommandType = CommandType.Text        CMD.ExecuteNonQuery()        CN.Close()        DsSysAdoNet.Tables(quot;
Generadorquot;
).Rows.Clear()        DaGenerador.Fill(DsSysAdoNet, quot;
Generadorquot;
)        GENERAR_CODIGO = CG    End FunctionEnd Module<br />Abra el formulario y agregar los siguientes IMPORTACIONES.<br />Imports SYSTEM.DATAImports SYSTEM.DATA.SQLCLIENTImports SYSTEM.IOImports SYSTEM.DRAWING.IMAGINGEn el Public Class del Formulario, declare las siguientes variables, para uso exclusivo de nuestro formulario.Dim NOMBREARCHIVO As String = quot;
quot;
Dim CONDICION As String = quot;
Uquot;
Dim FILA As IntegerDim DaCliente As New SqlClient.SqlDataAdapter(quot;
select * from clientequot;
, CN)Dim DaIdentidad As New SqlClient.SqlDataAdapter(quot;
select * from Identidadquot;
, CN)Dim DaDistrito As New SqlClient.SqlDataAdapter(quot;
Select * From distritoquot;
, CN)En el formulario crear los siguientes procedimientos:Public Sub LimpiarObjetos()   TextBox1.Text = quot;
quot;
 : TextBox2.Text = quot;
quot;
 : TextBox3.Text = quot;
quot;
   TextBox4.Text = quot;
quot;
 : TextBox5.Text = quot;
quot;
 : TextBox6.Text = quot;
quot;
   TextBox7.Text = quot;
quot;
 : TextBox8.Text = quot;
quot;
   ComboBox1.Text = quot;
quot;
 : ComboBox2.Text = quot;
quot;
 : ComboBox3.Text = quot;
quot;
   ComboBox4.Text = quot;
quot;
End SubPublic Sub MostrarDatos()Dim EST As IntegerDim GEN As StringWith DsSysAdoNet.Tables(quot;
Clientequot;
)   Me.TextBox1.Text = IIf(IsDBNull(.Rows(FILA)(0)), quot;
quot;
, .Rows(FILA)(0))   Me.TextBox2.Text = IIf(IsDBNull(.Rows(FILA)(1)), quot;
quot;
, .Rows(FILA)(1))   GEN = IIf(IsDBNull(.Rows(FILA)(2)), quot;
quot;
, .Rows(FILA)(2))   Me.ComboBox1.Text = IIf(GEN = quot;
Mquot;
, quot;
Masculinoquot;
, quot;
Femeninoquot;
)   Me.ComboBox2.SelectedValue = quot;
quot;
   Me.ComboBox2.SelectedValue = IIf(IsDBNull(.Rows(FILA)(3)), quot;
quot;
, .Rows(FILA)(3))   Me.TextBox3.Text = IIf(IsDBNull(.Rows(FILA)(4)), quot;
quot;
, .Rows(FILA)(4))   Me.ComboBox3.SelectedValue = quot;
quot;
   ComboBox3.SelectedValue = IIf(IsDBNull(.Rows(FILA)(5)), quot;
quot;
, .Rows(FILA)(5))   Me.TextBox4.Text = IIf(IsDBNull(.Rows(FILA)(6)), quot;
quot;
, .Rows(FILA)(6))   Me.TextBox5.Text = IIf(IsDBNull(.Rows(FILA)(7)), quot;
quot;
, .Rows(FILA)(7))   Me.TextBox6.Text = IIf(IsDBNull(.Rows(FILA)(8)), quot;
quot;
, .Rows(FILA)(8))   Me.TextBox7.Text = IIf(IsDBNull(.Rows(FILA)(9)), quot;
quot;
, .Rows(FILA)(9))   Me.TextBox8.Text = IIf(IsDBNull(.Rows(FILA)(10)), quot;
quot;
, .Rows(FILA)(10))   EST = IIf(IsDBNull(.Rows(FILA)(11)), quot;
quot;
, .Rows(FILA)(11))   Me.ComboBox4.Text = IIf(EST = 1, quot;
Habilitadoquot;
, quot;
Inhabilitadoquot;
)   If IsDBNull(.Rows(FILA).Item(12)) Then      PictureBox1.Image = Nothing   Else      Dim VALOR As Byte() = CType(.Rows(FILA).Item(12), Byte())      Dim MEMORIA As New MemoryStream(VALOR)      Dim MAPABITS As New Bitmap(MEMORIA)      PictureBox1.Image = MAPABITS      VALOR = Nothing   End IfEnd WithEnd SubPROGRAMAR  EN EL EVENTO LOAD DEL FORMULARIO LO SIGUIENTE:        DaCliente.Fill(DsSysAdoNet, quot;
Clientequot;
)        DaIdentidad.Fill(DsSysAdoNet, quot;
Identidadquot;
)        DaDistrito.Fill(DsSysAdoNet, quot;
Distritoquot;
)        'Carga de Combo Generos        ComboBox1.Items.Add(quot;
Masculinoquot;
)        ComboBox1.Items.Add(quot;
Femeninoquot;
)        'Carga de combo Identidad        ComboBox2.DataSource = DsSysAdoNet.Tables(quot;
Identidadquot;
)        ComboBox2.DisplayMember = quot;
Descripcion_idquot;
        ComboBox2.ValueMember = quot;
Codigo_Idquot;
        'Carga del combo Distrito        ComboBox3.DataSource = DsSysAdoNet.Tables(quot;
Distritoquot;
)        ComboBox3.DisplayMember = quot;
DesDistritoquot;
        ComboBox3.ValueMember = quot;
IdDistritoquot;
        'Carga del combo Estado        ComboBox4.Items.Clear()        ComboBox4.Items.Add(quot;
Habilitadoquot;
)        ComboBox4.Items.Add(quot;
Inhabilitadoquot;
)        Call LimpiarObjetos()        Call MostrarDatos()PROGRAMAR EL BOTON DE DESPLAZAMIENTO  IZQUIERDA INICIO (<<) Button1_ClickDim Contador As Integer = DsSysAdoNet.Tables(quot;
Clientequot;
).Rows.Count + 1If Contador < 0 Then Return   FILA = 0   Call MostrarDatos()PROGRAMAR EL BOTON DE DESPLAZAMIENTO A LA IZQUIERDA (<) Button2_ClickDim Contador As Integer = DsSysAdoNet.Tables(quot;
Clientequot;
).Rows.CountIf Contador < 0 Then Return   FILA -= 1   If FILA < 0 Then FILA = 0      Call MostrarDatos()PROGRAMAR EL BOTON DE DESPLAZAMIENTO A LA DERECHA (>) Button3_ClickDim Contador As Integer = DsSysAdoNet.Tables(quot;
Clientequot;
).Rows.Count    If Contador < 0 Then Return       FILA += 1       If FILA >= Contador Then FILA = Contador - 1          Call MostrarDatos()PROGRAMAR EL BOTON DE DESPLAZAMIENTO A LA DERECHA FINAL (>>) Button4_ClickDim Contador As Integer = DsSysAdoNet.Tables(quot;
Clientequot;
).Rows.Count - 1    If Contador < 0 Then Return       FILA = Contador       Call MostrarDatos()PROGRAMANDO EL BOTON  Nuevo / Cancelar Button5_Click        If Button5.Text = quot;
Nuevoquot;
 Then            Button5.Text = quot;
Cancelarquot;
            CONDICION = quot;
Iquot;
            Call LimpiarObjetos()            TextBox2.Focus()        Else            Button5.Text = quot;
Nuevoquot;
            CONDICION = quot;
Uquot;
            Call MostrarDatos()        End IfPROGRAMANDO EL BOTON  Consultar  Button6_Click        Dim NR As Integer        DsSysAdoNet.Tables(quot;
Clientequot;
).DefaultView.Sort = quot;
COD_CLIquot;
        NR = DsSysAdoNet.Tables(quot;
Clientequot;
).DefaultView.Find(TextBox1.Text)        If NR >= 0 Then            FILA = NR            Call MostrarDatos()        Else            MsgBox(quot;
El Cliente no Existe...quot;
)        End IfPROGRAMANDO EL BOTON  Eliminar  Button7_ClickIf MsgBox(quot;
Eliminarquot;
, MsgBoxStyle.OkCancel, quot;
Esta Seguro?quot;
) =                                                 MsgBoxResult.Ok Then   CN.Open()   Dim SQL As String   SQL = quot;
UPDATE CLIENTE SET ESTADO=0 WHERE COD_CLI='quot;
 + TextBox1.Text + quot;
'quot;
   Dim CMD As New SqlClient.SqlCommand(SQL, CN)   CMD.CommandType = CommandType.Text   CMD.ExecuteNonQuery()   CN.Close()   DsSysAdoNet.Tables(quot;
CLIENTEquot;
).Rows.Clear()   DaCliente.Fill(DsSysAdoNet, quot;
Clientequot;
)   Call MostrarDatos()End IfPROGRAMANDO EL BOTON  Actualizar  Button8_Click'ALMACENANDO DE DATOS Dim SEX As String = quot;
quot;
Dim EST As IntegerDim SQL As String = quot;
quot;
SEX = IIf(ComboBox1.Text = quot;
Masculinoquot;
, quot;
Mquot;
, quot;
Fquot;
)EST = IIf(ComboBox4.Text = quot;
Habilitadoquot;
, 1, 0)If CONDICION = quot;
Iquot;
 Then   TextBox1.Text = GENERAR_CODIGO(quot;
CLIENTEquot;
)   SQL = quot;
INSERT INTO CLIENTE VALUES('quot;
 + TextBox1.Text + quot;
','quot;
 + _     TextBox2.Text + quot;
','quot;
 + SEX + quot;
','quot;
 + ComboBox2.SelectedValue + quot;
','quot;
 + _     TextBox3.Text + quot;
','quot;
 + ComboBox3.SelectedValue + quot;
','quot;
 + TextBox4.Text + quot;
','quot;
 + _     TextBox5.Text + quot;
','quot;
 + TextBox6.Text + quot;
','quot;
 + TextBox7.Text + quot;
','quot;
 + _     TextBox8.Text + quot;
','quot;
 + Str(EST) + quot;
',null)quot;
End IfIf CONDICION = quot;
Uquot;
 Then   SQL = quot;
UPDATE CLIENTE SET NOMCLI='quot;
 + TextBox2.Text + quot;
',SEXO='quot;
 + SEX + quot;
',quot;
 + _   quot;
CODIGO_ID='quot;
 + ComboBox2.SelectedValue + quot;
',NUMERO_ID='quot;
 + TextBox3.Text + quot;
',quot;
 + _   quot;
IDDISTRITO='quot;
 + ComboBox3.SelectedValue + quot;
',TELEFONO='quot;
 + TextBox4.Text + quot;
',quot;
 + _   quot;
DIRECCION='quot;
 + TextBox5.Text + quot;
',RUC_CLIENTE='quot;
 + TextBox6.Text + quot;
',quot;
 + _   quot;
FECHA_NAC='quot;
 + TextBox7.Text + quot;
',FECHA_REG='quot;
 + TextBox8.Text + quot;
',quot;
 + _   quot;
ESTADO='quot;
 + Str(EST) + quot;
' WHERE COD_CLI='quot;
 + TextBox1.Text + quot;
'quot;
End If        CN.Open()        Dim CMD As New SqlClient.SqlCommand(SQL, CN)        CMD.CommandType = CommandType.Text        CMD.ExecuteNonQuery()        CN.Close()        DsSysAdoNet.Tables(quot;
CLIENTEquot;
).Rows.Clear()        DaCliente.Fill(DsSysAdoNet, quot;
Clientequot;
)        Call MostrarDatos()PROGRAMANDO EL BOTON  Filtros  Button9_Click        'Este boton nos conduce a otro formulario (form2)        Form2.Show()PROGRAMANDO EL BOTON  Examinar Button10_ClickWith OpenFileDialog1     .Filter = quot;
(ARCHIVOS JPG) *.JPG |*.JPGquot;
     .InitialDirectory = quot;
C:ocuments and “ + _                      “SettingsordSerafanscritoriodoNetysCliente + _                      “WindowsApplication1otosquot;
     .Title = quot;
FOTOS DEL ALUMNOquot;
     If (.ShowDialog = Windows.Forms.DialogResult.OK) Then         NOMBREARCHIVO = .FileName         PictureBox1.Image = Image.FromFile(NOMBREARCHIVO)     End IfEnd WithPROGRAMANDO EL BOTON  Grabar … Guardando foto a la BD  Button11_ClickDim FSFOTO As New FileStream(NOMBREARCHIVO, FileMode.Open, FileAccess.Read)    Dim INFOFOTO As FileInfo = New FileInfo(NOMBREARCHIVO)    Dim TEMPORAL As Long = INFOFOTO.Length    Dim LONGITUD As Long = Convert.ToInt32(TEMPORAL)    Dim IMAGEN(LONGITUD) As Byte    FSFOTO.Read(IMAGEN, 0, LONGITUD)    FSFOTO.Close()    CN.Open()    Dim DAFOTO As New SqlDataAdapter    DAFOTO.SelectCommand = New SqlCommand    With DAFOTO.SelectCommand        .Connection = CN        .CommandType = CommandType.StoredProcedure       .CommandText = quot;
Grabar_Fotoquot;
       .Parameters.Add(New SqlParameter(quot;
@Ccliquot;
, SqlDbType.Char, 7, _                       ParameterDirection.Input)).Value = TextBox1.Text       .Parameters.Add(New SqlParameter(quot;
@Fotquot;
, SqlDbType.Image, LONGITUD, _                       ParameterDirection.Input)).Value = IMAGEN       .ExecuteNonQuery    End With    CN.Close()    DsSysAdoNet.Tables(quot;
CLIENTEquot;
).Rows.Clear()    DaCliente.Fill(DsSysAdoNet, quot;
Clientequot;
)      Call MostrarDatos()<br />AL EJECUTAR EL FORMULARIO, TENDRA EL SIGUIENTE ASPECTO:<br />18415-6985<br />Nota: Cuando se proceda a insertar a un nuevo cliente, procurar no grabar la foto, después de insertar el registro, proceda a buscar la foto con el botón EXAMINAR, cuando haya sido seleccionada la foto proceda a GRABAR.<br />Diseñe el siguiente formulario (Filtros) cuyo fin será el de filtrar datos.<br />3810148590<br />Este formulario permitirá filtrar a los clientes por sus apellidos y nombres completos o carácter por carácter.<br />Imports System.Data.SqlClientPublic Class Form4Dim DsEntorno As New DataSetPrivate Sub TextBox1_TextChanged        Dim DaCli As SqlDataAdapter        DaCli = Clases.DevolverClientesFiltrados(quot;
*quot;
)        DaCli.Fill(DsEntorno, quot;
Filtroquot;
)        If DsEntorno.Tables(quot;
Filtroquot;
).Rows.Count >= 0 Then            DsEntorno.Tables(quot;
Filtroquot;
).Rows.Clear()            DaCli = Clases.DevolverClientesFiltrados(TextBox1.Text)            DaCli.Fill(DsEntorno, quot;
Filtroquot;
)            DataGrid1.DataSource = DsEntorno.Tables(quot;
Filtroquot;
)        End If<br />
PROYECTO PRUEBA DE CONEXIONES (Mantenimiento)
PROYECTO PRUEBA DE CONEXIONES (Mantenimiento)
PROYECTO PRUEBA DE CONEXIONES (Mantenimiento)
PROYECTO PRUEBA DE CONEXIONES (Mantenimiento)
PROYECTO PRUEBA DE CONEXIONES (Mantenimiento)
PROYECTO PRUEBA DE CONEXIONES (Mantenimiento)

More Related Content

What's hot

Функциональное реактивное программирование
Функциональное реактивное программированиеФункциональное реактивное программирование
Функциональное реактивное программированиеDmitriy Kiriyenko
 
Ejemplo con control de permisos o niveles de usuario
Ejemplo con control de permisos o niveles de usuarioEjemplo con control de permisos o niveles de usuario
Ejemplo con control de permisos o niveles de usuarioronaldtoscano18
 
jQuery sans jQuery
jQuery sans jQueryjQuery sans jQuery
jQuery sans jQuerygoldoraf
 
RxSwift 예제로 감잡기
RxSwift 예제로 감잡기RxSwift 예제로 감잡기
RxSwift 예제로 감잡기Yongha Yoo
 
Android Fast Track CRUD Android PHP MySql
Android Fast Track CRUD Android PHP MySqlAndroid Fast Track CRUD Android PHP MySql
Android Fast Track CRUD Android PHP MySqlAgus Haryanto
 
[2019] 실용적인 프런트엔드 테스트 전략
[2019] 실용적인 프런트엔드 테스트 전략[2019] 실용적인 프런트엔드 테스트 전략
[2019] 실용적인 프런트엔드 테스트 전략NHN FORWARD
 
4.2. trasformers-filters-y-adapters
4.2. trasformers-filters-y-adapters4.2. trasformers-filters-y-adapters
4.2. trasformers-filters-y-adaptersxavazque2
 
ECMA2015 INSIDE
ECMA2015 INSIDEECMA2015 INSIDE
ECMA2015 INSIDEJun Ho Lee
 
Form Pemesanan Tiket dengan Java NetBeans
Form Pemesanan Tiket dengan Java NetBeansForm Pemesanan Tiket dengan Java NetBeans
Form Pemesanan Tiket dengan Java NetBeansAldila Putri
 
Javascript技巧参考大全
Javascript技巧参考大全Javascript技巧参考大全
Javascript技巧参考大全fgghyyfk
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometrojubacalo
 
Java весна 2013 лекция 6
Java весна 2013 лекция 6Java весна 2013 лекция 6
Java весна 2013 лекция 6Technopark
 

What's hot (20)

Функциональное реактивное программирование
Функциональное реактивное программированиеФункциональное реактивное программирование
Функциональное реактивное программирование
 
Ejemplo con control de permisos o niveles de usuario
Ejemplo con control de permisos o niveles de usuarioEjemplo con control de permisos o niveles de usuario
Ejemplo con control de permisos o niveles de usuario
 
jQuery sans jQuery
jQuery sans jQueryjQuery sans jQuery
jQuery sans jQuery
 
Proyecto Final Android-SQLite
Proyecto Final Android-SQLiteProyecto Final Android-SQLite
Proyecto Final Android-SQLite
 
RxSwift 예제로 감잡기
RxSwift 예제로 감잡기RxSwift 예제로 감잡기
RxSwift 예제로 감잡기
 
Android Fast Track CRUD Android PHP MySql
Android Fast Track CRUD Android PHP MySqlAndroid Fast Track CRUD Android PHP MySql
Android Fast Track CRUD Android PHP MySql
 
[2019] 실용적인 프런트엔드 테스트 전략
[2019] 실용적인 프런트엔드 테스트 전략[2019] 실용적인 프런트엔드 테스트 전략
[2019] 실용적인 프런트엔드 테스트 전략
 
4.2. trasformers-filters-y-adapters
4.2. trasformers-filters-y-adapters4.2. trasformers-filters-y-adapters
4.2. trasformers-filters-y-adapters
 
ECMA2015 INSIDE
ECMA2015 INSIDEECMA2015 INSIDE
ECMA2015 INSIDE
 
Danna y felix 10°
Danna y felix 10°Danna y felix 10°
Danna y felix 10°
 
Sis quiz
Sis quizSis quiz
Sis quiz
 
Form Pemesanan Tiket dengan Java NetBeans
Form Pemesanan Tiket dengan Java NetBeansForm Pemesanan Tiket dengan Java NetBeans
Form Pemesanan Tiket dengan Java NetBeans
 
Einführung in Meteor
Einführung in MeteorEinführung in Meteor
Einführung in Meteor
 
Web components v1 intro
Web components v1 introWeb components v1 intro
Web components v1 intro
 
Javascript技巧参考大全
Javascript技巧参考大全Javascript技巧参考大全
Javascript技巧参考大全
 
Php
PhpPhp
Php
 
Blog 3
Blog 3Blog 3
Blog 3
 
Taller1
Taller1Taller1
Taller1
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometro
 
Java весна 2013 лекция 6
Java весна 2013 лекция 6Java весна 2013 лекция 6
Java весна 2013 лекция 6
 

Viewers also liked

CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)Darwin Durand
 
Visual basic-Programacion en un entorno grafico.
Visual basic-Programacion en un entorno grafico.Visual basic-Programacion en un entorno grafico.
Visual basic-Programacion en un entorno grafico.Kenia Flores Cruz
 
Ejemplos Borland C++ Builder
Ejemplos Borland C++ BuilderEjemplos Borland C++ Builder
Ejemplos Borland C++ BuilderDarwin Durand
 
Lenguajes programacion
Lenguajes programacionLenguajes programacion
Lenguajes programacionXavii Torres
 
Estudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVAEstudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVAHelmilpa
 
Practica de visual basic sistema de facturación
Practica de visual basic sistema de facturaciónPractica de visual basic sistema de facturación
Practica de visual basic sistema de facturaciónmilenka796
 
Caja de herramientas de visual basic
Caja de herramientas de visual basicCaja de herramientas de visual basic
Caja de herramientas de visual basicNoe Cayetano
 
CONEXION VISUAL STUDIO.NET - SQL SERVER
CONEXION VISUAL STUDIO.NET - SQL SERVERCONEXION VISUAL STUDIO.NET - SQL SERVER
CONEXION VISUAL STUDIO.NET - SQL SERVERDarwin Durand
 
Visual Basic .NET
Visual Basic .NETVisual Basic .NET
Visual Basic .NETDavid
 
Parte del entorno de visual basic
Parte del entorno de visual basicParte del entorno de visual basic
Parte del entorno de visual basicdabinson02
 
Entorno de desarrollo integrado de Visual Basic .NET
Entorno de desarrollo integrado de Visual Basic .NETEntorno de desarrollo integrado de Visual Basic .NET
Entorno de desarrollo integrado de Visual Basic .NETNilian Cabral
 
SISTEMA DE FACTURACION (Ejemplo desarrollado)
SISTEMA DE FACTURACION (Ejemplo desarrollado)SISTEMA DE FACTURACION (Ejemplo desarrollado)
SISTEMA DE FACTURACION (Ejemplo desarrollado)Darwin Durand
 
Diferentes sistemas de ventas
Diferentes sistemas de ventasDiferentes sistemas de ventas
Diferentes sistemas de ventasnuria229
 
Visual Studio.Net - Sql Server
Visual Studio.Net - Sql ServerVisual Studio.Net - Sql Server
Visual Studio.Net - Sql ServerDarwin Durand
 

Viewers also liked (17)

CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)
 
Visual basic-Programacion en un entorno grafico.
Visual basic-Programacion en un entorno grafico.Visual basic-Programacion en un entorno grafico.
Visual basic-Programacion en un entorno grafico.
 
Ejemplos Borland C++ Builder
Ejemplos Borland C++ BuilderEjemplos Borland C++ Builder
Ejemplos Borland C++ Builder
 
Lenguajes programacion
Lenguajes programacionLenguajes programacion
Lenguajes programacion
 
Estudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVAEstudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVA
 
Practica de visual basic sistema de facturación
Practica de visual basic sistema de facturaciónPractica de visual basic sistema de facturación
Practica de visual basic sistema de facturación
 
Caja de herramientas de visual basic
Caja de herramientas de visual basicCaja de herramientas de visual basic
Caja de herramientas de visual basic
 
CONEXION VISUAL STUDIO.NET - SQL SERVER
CONEXION VISUAL STUDIO.NET - SQL SERVERCONEXION VISUAL STUDIO.NET - SQL SERVER
CONEXION VISUAL STUDIO.NET - SQL SERVER
 
Cuadro de herramientas y botones en visual basic
Cuadro de herramientas y botones en visual basicCuadro de herramientas y botones en visual basic
Cuadro de herramientas y botones en visual basic
 
Visual Basic .NET
Visual Basic .NETVisual Basic .NET
Visual Basic .NET
 
Parte del entorno de visual basic
Parte del entorno de visual basicParte del entorno de visual basic
Parte del entorno de visual basic
 
Entorno de desarrollo integrado de Visual Basic .NET
Entorno de desarrollo integrado de Visual Basic .NETEntorno de desarrollo integrado de Visual Basic .NET
Entorno de desarrollo integrado de Visual Basic .NET
 
Visual y sql
Visual y sqlVisual y sql
Visual y sql
 
SISTEMA DE FACTURACION (Ejemplo desarrollado)
SISTEMA DE FACTURACION (Ejemplo desarrollado)SISTEMA DE FACTURACION (Ejemplo desarrollado)
SISTEMA DE FACTURACION (Ejemplo desarrollado)
 
Diferentes sistemas de ventas
Diferentes sistemas de ventasDiferentes sistemas de ventas
Diferentes sistemas de ventas
 
Visual Studio.Net - Sql Server
Visual Studio.Net - Sql ServerVisual Studio.Net - Sql Server
Visual Studio.Net - Sql Server
 
Cuaderno de Trabajo VB 6.0
Cuaderno de Trabajo VB 6.0Cuaderno de Trabajo VB 6.0
Cuaderno de Trabajo VB 6.0
 

More from Darwin Durand

VISUALIZAR REGISTROS EN UN JTABLE
VISUALIZAR REGISTROS EN UN JTABLEVISUALIZAR REGISTROS EN UN JTABLE
VISUALIZAR REGISTROS EN UN JTABLEDarwin Durand
 
PERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOSPERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOSDarwin Durand
 
INSERCION DE REGISTROS DESDE VISUAL.NET A UNA BD DE SQL SERVER
INSERCION DE REGISTROS DESDE VISUAL.NET A UNA BD DE SQL SERVERINSERCION DE REGISTROS DESDE VISUAL.NET A UNA BD DE SQL SERVER
INSERCION DE REGISTROS DESDE VISUAL.NET A UNA BD DE SQL SERVERDarwin Durand
 
CURSO DE PROGRAMACION AVANZADA EN JAVA EN ESPAÑOL
CURSO DE PROGRAMACION AVANZADA EN JAVA EN ESPAÑOLCURSO DE PROGRAMACION AVANZADA EN JAVA EN ESPAÑOL
CURSO DE PROGRAMACION AVANZADA EN JAVA EN ESPAÑOLDarwin Durand
 
INDICES EN SQL SERVER
INDICES EN SQL SERVERINDICES EN SQL SERVER
INDICES EN SQL SERVERDarwin Durand
 
APLICACIONES EMPRESARIALES
APLICACIONES EMPRESARIALESAPLICACIONES EMPRESARIALES
APLICACIONES EMPRESARIALESDarwin Durand
 
CREACION Y MANEJO DE LA BASE DE DATOS
CREACION Y MANEJO DE LA BASE DE DATOSCREACION Y MANEJO DE LA BASE DE DATOS
CREACION Y MANEJO DE LA BASE DE DATOSDarwin Durand
 

More from Darwin Durand (10)

VISUALIZAR REGISTROS EN UN JTABLE
VISUALIZAR REGISTROS EN UN JTABLEVISUALIZAR REGISTROS EN UN JTABLE
VISUALIZAR REGISTROS EN UN JTABLE
 
PERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOSPERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOS
 
INSERCION DE REGISTROS DESDE VISUAL.NET A UNA BD DE SQL SERVER
INSERCION DE REGISTROS DESDE VISUAL.NET A UNA BD DE SQL SERVERINSERCION DE REGISTROS DESDE VISUAL.NET A UNA BD DE SQL SERVER
INSERCION DE REGISTROS DESDE VISUAL.NET A UNA BD DE SQL SERVER
 
CURSO DE PROGRAMACION AVANZADA EN JAVA EN ESPAÑOL
CURSO DE PROGRAMACION AVANZADA EN JAVA EN ESPAÑOLCURSO DE PROGRAMACION AVANZADA EN JAVA EN ESPAÑOL
CURSO DE PROGRAMACION AVANZADA EN JAVA EN ESPAÑOL
 
SERVLET BASICS
SERVLET BASICSSERVLET BASICS
SERVLET BASICS
 
INDICES EN SQL SERVER
INDICES EN SQL SERVERINDICES EN SQL SERVER
INDICES EN SQL SERVER
 
INTEGRIDAD DE DATOS
INTEGRIDAD DE DATOSINTEGRIDAD DE DATOS
INTEGRIDAD DE DATOS
 
APLICACIONES EMPRESARIALES
APLICACIONES EMPRESARIALESAPLICACIONES EMPRESARIALES
APLICACIONES EMPRESARIALES
 
CREACION Y MANEJO DE LA BASE DE DATOS
CREACION Y MANEJO DE LA BASE DE DATOSCREACION Y MANEJO DE LA BASE DE DATOS
CREACION Y MANEJO DE LA BASE DE DATOS
 
CREACION DE TABLAS
CREACION DE TABLASCREACION DE TABLAS
CREACION DE TABLAS
 

PROYECTO PRUEBA DE CONEXIONES (Mantenimiento)

  • 1. Proyecto Ado .NET<br />Mantenimiento de Clientes<br />El propósito de dicho manual es, demostrar la gran versatilidad que tiene el Ado .Net de Visual Basic, en relación a conexiones y ejecución de comandos, incluyendo la carga de DataSets, las operaciones básicas como: Inserciones, Eliminaciones de tipo lógico y Actualizaciones, demostrando la autogeneración de códigos para los clientes, pero antes debemos contar con un modelo relacional demostrativo. para tener un mayor alcance de lo que se esta realizando:<br />Se tiene el siguiente Modelo Relacional:<br />18415-2540<br />Dicho Script deberá ser ejecutado en el motor de base de datos de SQL Server.<br />El proyecto esta constituido por un formulario y un módulo, para elementos generales:<br />228601905<br />Este formulario esta constituido por cajas de texto (8), combos (4), picturebox (1) y un objeto openfiledialog (1) para control de imágenes.<br />El proyecto esta programado en el siguiente orden:<br />AGREGAR UN MODULO A NUESTRO PROYECTO, ESTE CONTENDRA LA DECLARACION PUBLICA DE UN DATASET (DsSysAdoNet) Y UN DATAADAPTER (DaGenerador) incluyendo la CONEXIÓN, PARA LA TABLA GENERADOR DE CODIGOS, PROGRAMELO DE LA SIGUENTE MANERA:Module Module1 Public DsSysAdoNet As New DataSet Public CN As New SqlClient.SqlConnection(quot; SERVER=LOCALHOST;UID=SA;” _ ”PASSWORD=123;DATABASE=SysAdoNetquot; ) Public DaGenerador As New SqlClient.SqlDataAdapter(quot; select * from GENERADORquot; , CN)Public Function GENERAR_CODIGO(ByVal TABLA As String) As String Dim Nfila, CEROS As Integer Dim ULT As Integer Dim CG As String = quot; quot; DaGenerador.Fill(DsSysAdoNet, quot; Generadorquot; ) DsSysAdoNet.Tables(quot; Generadorquot; ).DefaultView.Sort = quot; Parametroquot; Nfila = DsSysAdoNet.Tables(quot; Generadorquot; ).DefaultView.Find(TABLA) If Nfila >= 0 Then ULT = Val(DsSysAdoNet.Tables(quot; Generadorquot; ).Rows(Nfila)(1)) + 1 CEROS = 4 - Len(Trim(Str(ULT))) Select Case CEROS Case 3 : CG = Left(TABLA, 1) + quot; 000quot; + Trim(Str(ULT)) Case 2 : CG = Left(TABLA, 1) + quot; 00quot; + Trim(Str(ULT)) Case 1 : CG = Left(TABLA, 1) + quot; 0quot; + Trim(Str(ULT)) Case 0 : CG = Left(TABLA, 1) + Trim(Str(ULT)) End Select End If CN.Open() Dim SQL As String SQL = quot; UPDATE GENERADOR SET ULTIMO='quot; + Str(ULT) + _ quot; ' WHERE PARAMETRO='quot; + TABLA + quot; 'quot; Dim CMD As New SqlClient.SqlCommand(SQL, CN) CMD.CommandType = CommandType.Text CMD.ExecuteNonQuery() CN.Close() DsSysAdoNet.Tables(quot; Generadorquot; ).Rows.Clear() DaGenerador.Fill(DsSysAdoNet, quot; Generadorquot; ) GENERAR_CODIGO = CG End FunctionEnd Module<br />Abra el formulario y agregar los siguientes IMPORTACIONES.<br />Imports SYSTEM.DATAImports SYSTEM.DATA.SQLCLIENTImports SYSTEM.IOImports SYSTEM.DRAWING.IMAGINGEn el Public Class del Formulario, declare las siguientes variables, para uso exclusivo de nuestro formulario.Dim NOMBREARCHIVO As String = quot; quot; Dim CONDICION As String = quot; Uquot; Dim FILA As IntegerDim DaCliente As New SqlClient.SqlDataAdapter(quot; select * from clientequot; , CN)Dim DaIdentidad As New SqlClient.SqlDataAdapter(quot; select * from Identidadquot; , CN)Dim DaDistrito As New SqlClient.SqlDataAdapter(quot; Select * From distritoquot; , CN)En el formulario crear los siguientes procedimientos:Public Sub LimpiarObjetos() TextBox1.Text = quot; quot; : TextBox2.Text = quot; quot; : TextBox3.Text = quot; quot; TextBox4.Text = quot; quot; : TextBox5.Text = quot; quot; : TextBox6.Text = quot; quot; TextBox7.Text = quot; quot; : TextBox8.Text = quot; quot; ComboBox1.Text = quot; quot; : ComboBox2.Text = quot; quot; : ComboBox3.Text = quot; quot; ComboBox4.Text = quot; quot; End SubPublic Sub MostrarDatos()Dim EST As IntegerDim GEN As StringWith DsSysAdoNet.Tables(quot; Clientequot; ) Me.TextBox1.Text = IIf(IsDBNull(.Rows(FILA)(0)), quot; quot; , .Rows(FILA)(0)) Me.TextBox2.Text = IIf(IsDBNull(.Rows(FILA)(1)), quot; quot; , .Rows(FILA)(1)) GEN = IIf(IsDBNull(.Rows(FILA)(2)), quot; quot; , .Rows(FILA)(2)) Me.ComboBox1.Text = IIf(GEN = quot; Mquot; , quot; Masculinoquot; , quot; Femeninoquot; ) Me.ComboBox2.SelectedValue = quot; quot; Me.ComboBox2.SelectedValue = IIf(IsDBNull(.Rows(FILA)(3)), quot; quot; , .Rows(FILA)(3)) Me.TextBox3.Text = IIf(IsDBNull(.Rows(FILA)(4)), quot; quot; , .Rows(FILA)(4)) Me.ComboBox3.SelectedValue = quot; quot; ComboBox3.SelectedValue = IIf(IsDBNull(.Rows(FILA)(5)), quot; quot; , .Rows(FILA)(5)) Me.TextBox4.Text = IIf(IsDBNull(.Rows(FILA)(6)), quot; quot; , .Rows(FILA)(6)) Me.TextBox5.Text = IIf(IsDBNull(.Rows(FILA)(7)), quot; quot; , .Rows(FILA)(7)) Me.TextBox6.Text = IIf(IsDBNull(.Rows(FILA)(8)), quot; quot; , .Rows(FILA)(8)) Me.TextBox7.Text = IIf(IsDBNull(.Rows(FILA)(9)), quot; quot; , .Rows(FILA)(9)) Me.TextBox8.Text = IIf(IsDBNull(.Rows(FILA)(10)), quot; quot; , .Rows(FILA)(10)) EST = IIf(IsDBNull(.Rows(FILA)(11)), quot; quot; , .Rows(FILA)(11)) Me.ComboBox4.Text = IIf(EST = 1, quot; Habilitadoquot; , quot; Inhabilitadoquot; ) If IsDBNull(.Rows(FILA).Item(12)) Then PictureBox1.Image = Nothing Else Dim VALOR As Byte() = CType(.Rows(FILA).Item(12), Byte()) Dim MEMORIA As New MemoryStream(VALOR) Dim MAPABITS As New Bitmap(MEMORIA) PictureBox1.Image = MAPABITS VALOR = Nothing End IfEnd WithEnd SubPROGRAMAR EN EL EVENTO LOAD DEL FORMULARIO LO SIGUIENTE: DaCliente.Fill(DsSysAdoNet, quot; Clientequot; ) DaIdentidad.Fill(DsSysAdoNet, quot; Identidadquot; ) DaDistrito.Fill(DsSysAdoNet, quot; Distritoquot; ) 'Carga de Combo Generos ComboBox1.Items.Add(quot; Masculinoquot; ) ComboBox1.Items.Add(quot; Femeninoquot; ) 'Carga de combo Identidad ComboBox2.DataSource = DsSysAdoNet.Tables(quot; Identidadquot; ) ComboBox2.DisplayMember = quot; Descripcion_idquot; ComboBox2.ValueMember = quot; Codigo_Idquot; 'Carga del combo Distrito ComboBox3.DataSource = DsSysAdoNet.Tables(quot; Distritoquot; ) ComboBox3.DisplayMember = quot; DesDistritoquot; ComboBox3.ValueMember = quot; IdDistritoquot; 'Carga del combo Estado ComboBox4.Items.Clear() ComboBox4.Items.Add(quot; Habilitadoquot; ) ComboBox4.Items.Add(quot; Inhabilitadoquot; ) Call LimpiarObjetos() Call MostrarDatos()PROGRAMAR EL BOTON DE DESPLAZAMIENTO IZQUIERDA INICIO (<<) Button1_ClickDim Contador As Integer = DsSysAdoNet.Tables(quot; Clientequot; ).Rows.Count + 1If Contador < 0 Then Return FILA = 0 Call MostrarDatos()PROGRAMAR EL BOTON DE DESPLAZAMIENTO A LA IZQUIERDA (<) Button2_ClickDim Contador As Integer = DsSysAdoNet.Tables(quot; Clientequot; ).Rows.CountIf Contador < 0 Then Return FILA -= 1 If FILA < 0 Then FILA = 0 Call MostrarDatos()PROGRAMAR EL BOTON DE DESPLAZAMIENTO A LA DERECHA (>) Button3_ClickDim Contador As Integer = DsSysAdoNet.Tables(quot; Clientequot; ).Rows.Count If Contador < 0 Then Return FILA += 1 If FILA >= Contador Then FILA = Contador - 1 Call MostrarDatos()PROGRAMAR EL BOTON DE DESPLAZAMIENTO A LA DERECHA FINAL (>>) Button4_ClickDim Contador As Integer = DsSysAdoNet.Tables(quot; Clientequot; ).Rows.Count - 1 If Contador < 0 Then Return FILA = Contador Call MostrarDatos()PROGRAMANDO EL BOTON Nuevo / Cancelar Button5_Click If Button5.Text = quot; Nuevoquot; Then Button5.Text = quot; Cancelarquot; CONDICION = quot; Iquot; Call LimpiarObjetos() TextBox2.Focus() Else Button5.Text = quot; Nuevoquot; CONDICION = quot; Uquot; Call MostrarDatos() End IfPROGRAMANDO EL BOTON Consultar Button6_Click Dim NR As Integer DsSysAdoNet.Tables(quot; Clientequot; ).DefaultView.Sort = quot; COD_CLIquot; NR = DsSysAdoNet.Tables(quot; Clientequot; ).DefaultView.Find(TextBox1.Text) If NR >= 0 Then FILA = NR Call MostrarDatos() Else MsgBox(quot; El Cliente no Existe...quot; ) End IfPROGRAMANDO EL BOTON Eliminar Button7_ClickIf MsgBox(quot; Eliminarquot; , MsgBoxStyle.OkCancel, quot; Esta Seguro?quot; ) = MsgBoxResult.Ok Then CN.Open() Dim SQL As String SQL = quot; UPDATE CLIENTE SET ESTADO=0 WHERE COD_CLI='quot; + TextBox1.Text + quot; 'quot; Dim CMD As New SqlClient.SqlCommand(SQL, CN) CMD.CommandType = CommandType.Text CMD.ExecuteNonQuery() CN.Close() DsSysAdoNet.Tables(quot; CLIENTEquot; ).Rows.Clear() DaCliente.Fill(DsSysAdoNet, quot; Clientequot; ) Call MostrarDatos()End IfPROGRAMANDO EL BOTON Actualizar Button8_Click'ALMACENANDO DE DATOS Dim SEX As String = quot; quot; Dim EST As IntegerDim SQL As String = quot; quot; SEX = IIf(ComboBox1.Text = quot; Masculinoquot; , quot; Mquot; , quot; Fquot; )EST = IIf(ComboBox4.Text = quot; Habilitadoquot; , 1, 0)If CONDICION = quot; Iquot; Then TextBox1.Text = GENERAR_CODIGO(quot; CLIENTEquot; ) SQL = quot; INSERT INTO CLIENTE VALUES('quot; + TextBox1.Text + quot; ','quot; + _ TextBox2.Text + quot; ','quot; + SEX + quot; ','quot; + ComboBox2.SelectedValue + quot; ','quot; + _ TextBox3.Text + quot; ','quot; + ComboBox3.SelectedValue + quot; ','quot; + TextBox4.Text + quot; ','quot; + _ TextBox5.Text + quot; ','quot; + TextBox6.Text + quot; ','quot; + TextBox7.Text + quot; ','quot; + _ TextBox8.Text + quot; ','quot; + Str(EST) + quot; ',null)quot; End IfIf CONDICION = quot; Uquot; Then SQL = quot; UPDATE CLIENTE SET NOMCLI='quot; + TextBox2.Text + quot; ',SEXO='quot; + SEX + quot; ',quot; + _ quot; CODIGO_ID='quot; + ComboBox2.SelectedValue + quot; ',NUMERO_ID='quot; + TextBox3.Text + quot; ',quot; + _ quot; IDDISTRITO='quot; + ComboBox3.SelectedValue + quot; ',TELEFONO='quot; + TextBox4.Text + quot; ',quot; + _ quot; DIRECCION='quot; + TextBox5.Text + quot; ',RUC_CLIENTE='quot; + TextBox6.Text + quot; ',quot; + _ quot; FECHA_NAC='quot; + TextBox7.Text + quot; ',FECHA_REG='quot; + TextBox8.Text + quot; ',quot; + _ quot; ESTADO='quot; + Str(EST) + quot; ' WHERE COD_CLI='quot; + TextBox1.Text + quot; 'quot; End If CN.Open() Dim CMD As New SqlClient.SqlCommand(SQL, CN) CMD.CommandType = CommandType.Text CMD.ExecuteNonQuery() CN.Close() DsSysAdoNet.Tables(quot; CLIENTEquot; ).Rows.Clear() DaCliente.Fill(DsSysAdoNet, quot; Clientequot; ) Call MostrarDatos()PROGRAMANDO EL BOTON Filtros Button9_Click 'Este boton nos conduce a otro formulario (form2) Form2.Show()PROGRAMANDO EL BOTON Examinar Button10_ClickWith OpenFileDialog1 .Filter = quot; (ARCHIVOS JPG) *.JPG |*.JPGquot; .InitialDirectory = quot; C:ocuments and “ + _ “SettingsordSerafanscritoriodoNetysCliente + _ “WindowsApplication1otosquot; .Title = quot; FOTOS DEL ALUMNOquot; If (.ShowDialog = Windows.Forms.DialogResult.OK) Then NOMBREARCHIVO = .FileName PictureBox1.Image = Image.FromFile(NOMBREARCHIVO) End IfEnd WithPROGRAMANDO EL BOTON Grabar … Guardando foto a la BD Button11_ClickDim FSFOTO As New FileStream(NOMBREARCHIVO, FileMode.Open, FileAccess.Read) Dim INFOFOTO As FileInfo = New FileInfo(NOMBREARCHIVO) Dim TEMPORAL As Long = INFOFOTO.Length Dim LONGITUD As Long = Convert.ToInt32(TEMPORAL) Dim IMAGEN(LONGITUD) As Byte FSFOTO.Read(IMAGEN, 0, LONGITUD) FSFOTO.Close() CN.Open() Dim DAFOTO As New SqlDataAdapter DAFOTO.SelectCommand = New SqlCommand With DAFOTO.SelectCommand .Connection = CN .CommandType = CommandType.StoredProcedure .CommandText = quot; Grabar_Fotoquot; .Parameters.Add(New SqlParameter(quot; @Ccliquot; , SqlDbType.Char, 7, _ ParameterDirection.Input)).Value = TextBox1.Text .Parameters.Add(New SqlParameter(quot; @Fotquot; , SqlDbType.Image, LONGITUD, _ ParameterDirection.Input)).Value = IMAGEN .ExecuteNonQuery End With CN.Close() DsSysAdoNet.Tables(quot; CLIENTEquot; ).Rows.Clear() DaCliente.Fill(DsSysAdoNet, quot; Clientequot; ) Call MostrarDatos()<br />AL EJECUTAR EL FORMULARIO, TENDRA EL SIGUIENTE ASPECTO:<br />18415-6985<br />Nota: Cuando se proceda a insertar a un nuevo cliente, procurar no grabar la foto, después de insertar el registro, proceda a buscar la foto con el botón EXAMINAR, cuando haya sido seleccionada la foto proceda a GRABAR.<br />Diseñe el siguiente formulario (Filtros) cuyo fin será el de filtrar datos.<br />3810148590<br />Este formulario permitirá filtrar a los clientes por sus apellidos y nombres completos o carácter por carácter.<br />Imports System.Data.SqlClientPublic Class Form4Dim DsEntorno As New DataSetPrivate Sub TextBox1_TextChanged Dim DaCli As SqlDataAdapter DaCli = Clases.DevolverClientesFiltrados(quot; *quot; ) DaCli.Fill(DsEntorno, quot; Filtroquot; ) If DsEntorno.Tables(quot; Filtroquot; ).Rows.Count >= 0 Then DsEntorno.Tables(quot; Filtroquot; ).Rows.Clear() DaCli = Clases.DevolverClientesFiltrados(TextBox1.Text) DaCli.Fill(DsEntorno, quot; Filtroquot; ) DataGrid1.DataSource = DsEntorno.Tables(quot; Filtroquot; ) End If<br />