domingo, 15 de abril de 2012

Tercer Paso: Creación del Reporte de la Encuesta.

Ya realizado nuestros dos pasos anteriores nos encontramos en la Parte final de la realizacion de nuestro proyecto paso a paso de la encuesta.

En este tercer paso Tendremos la oportunidad de Crear el reporte de la encuesta, el cual tendrá el estilo a una ficha normal de ingreso. Para la realización de dicho reporte procederemos a agregar un nuevo elemento dentro de nuestro proyecto.

Luego seleccionamos en nuestras plantillas la opcion Reporting y escogemos la opcion informe al cual le daremos el nombre de rptEncuesta.




Una vez hecho esto tendremos ya disponible nuestro espacio de trabajo, en el pegaremos una lista el cual la encontraremos en nuestra ventana de herramientas








 la pegamos y seguido de esto nos aparecera otra ventana, en esta ventana seleccionaremos nuestro Dataset que es el dsTablas y nuestra tabla encuesta  damos aceptar y ya tendremos listo nuestra área para trabajar de una manera ordenada



En la parte inferior de nuestro diseño de reporte hay unas opciones que se llaman detalles damos click en la fecha y seleccionamos la opción propiedades del grupo cuando hagamos eso se nos aparecerá esta ventana en la cual seleccionaremos la opción agregar y la agruparemos por el idEncuesta y damos aceptar.

Cuando ya hemos terminado de hacer eso en la ventana de herramientas tenemos los objetos cuadros de texto, estos nos servirán de ayuda para ir diseñando nuestro reporte. lo seleccionamos y los vamos pegando de manera ordenada con la información correspondiente hasta lograr una vista como esta:


En los cuadros de texto para los datos personales seleccionaremos el cuadro para agregar en campo de la tabla al cual pertenece y así de esa manera aparecerá el nombre de cada uno de los registros.

Iremos haciendo cada uno de esos pasos hasta llegat a obtener un resultado como este:










Al tener los resultados de esta manera hacemos click derecho en el cuadro verde y seleccionamos la opcion propiedades del cuadro de texto en este nos iremos a la siguiente ventana y nos colocaremos en la opcion visibilidad y seleccionaremos la opcion mostrar u ocultar en funcion de una expresion, hacemos click en el boton de la expresion y hacemos la expresion deacuerso sea el metodo de ingreso de cada uno de ellos. Este mismo proceso lo realizaremos para cada una de las preguntas si la pregunta esta por medio de un combox se hara como se muestrea en la imagen     


y si es con un valor de tipo lógico se hará como se muestra en la imagen al lado derecho.

ya que hemos finalizado esta parte nos iremos nuevamente a detalles seleccionaremos propiedades del grupo y nos posicionaremos en la opción saltos de pagina y seleccionaremos lo que a continuación se muestra.


Damos aceptar y estamos listos para mostrar nuestro reporte.
Creamos un nuevo formulario al que llamaremos
formReporte y en el pegamos lo siguiente: desde la ventana de Herramientas en la sección informes pegaremos un reportviewer al formulario y lo acoplaremos a el. luego en la pestaña superior seleccionaremos nuestro reporte.



Ya Terminado este proceso lo que queda es programar en el formulario el siguiente código para que los datos del reporte puedan ser visto:


Imports Encuesta.Entorno
Public Class formReporte

    Private Sub formReporte_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        dsTablas.Merge(Datos.obdatos)
        Me.ReportViewer1.RefreshReport()
    End Sub
End Class


Terminando todo el reporte solo queda hacer el llamado desde el formulario principal, el formulario de la encuesta  y para esto hacemos doble click en el boton de reporte y decimos
fromReporte.ShowDialog() lo ejecutamos y tendremos como resultado el siguiente reporte:



Y con esto damos por finalizado nuestro reporte paso a paso.
Espero les sirva de mucha ayuda.

Segundo Paso: Creación de las diferentes gráficas

Ya que terminamos el primer paso en le proyecto de la encuesta pasaremos al Segundo Paso que es la creación de las gráficas estadísticas para cada una de las preguntas de nuestra encuesta.

Para el primer tipo de gráficas estadísticas haremos uso del objeto Data Row el cual nos permitirá agregar una fila a una tabla nueva para almacenar cada una de la lectura de las opciones que hagamos mediante un array. Usaremos el datarow porque en la encuesta tenemos preguntas de selección a través de checkbox y así de esa manera podremos hacer un array en el cual estén contenidos cada una de esas opciones , para después almacenarlas en una tabla nueva.


Como primer paso para nuestra realización de la gráfica lo que haremos es abrir nuestro dsTablas y crear un Tabla nueva a la cual llamaremos Grafico1 y le agregaremos los campos Servicio y Total, Quedándonos de la siguiente manera:



A esta tabla nueva le modificaremos las siguientes propiedades para que a la hora de almacenar los datos no tengamos ningún problema.


Tabla Grafico1
Campo
Propiedad
Valor
Servicio (Campo llave)
DataType
System.String
Name
Servicio
Total
DataType
System.Int16
Name
Total







Una vez hecho esto Agregamos un nuevo Formulario y le llamamos Servicios, una vez creado Seleccionamos de la barra de herramientas en la sección Datos el Objeto ChartControl el cual nos ayudara a mostrar nuestra gráfica. Lo pegamos en el Formulario, lo acomodamos y cambiamos las siguientes propiedades para el Formulario como para el objeto ChartControl:

Formulario
Propiedad
Valor
Text
Servicios Cable, Internet, Telefonia
StratPosition
CenterScreen
ChartControl
Name
Ograf
Palette
SeaGreen
Anchor
Top, Bottom, Left, Right



Una Vez Hecho todos estos cambios pasamos a programar nuestro gráfico. La programacion de este la aremos en el evento Load del Formulario

Código:

Imports Encuesta.Entorno
Imports System.Data.OleDb

Public Class Servicios
    'Declaramos una variable para que guarde cada uno de los valores del total
    Dim Val As Integer() = {0, 0, 0}
    Private Sub Servicios_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Llamamos nuestro dataset y limpiamos el contenido de nuestra tabla
        DsTablas.Grafico1.Clear()
        'Declaramos el array que tendra como valor los campos de las opciones que se leeran
        Dim array As String() = {"Cable", "Internet", "Telefonia"}
        'Hacemos un ciclo repetitivo para que recorra nuestro array el cual empesara desde cero contando cada una de las opciones del array
        For i As Integer = 0 To array.Count - 1
            'Creamos nuestra instruccion SQl la cual es la siguiente
            Dim CSQl As String = " Select " & array(i) & ", count(" & array(i) & ") as Total from Encuesta where " & array(i) & _
                " = true group by " & array(i)
            'Abrimos nuestra conexion
            Datos.Conectar() '
            'Declaramos la variable comand la cual ejecutara nuestra instruccion sql mediante el objeto OledbCommand enviandole junto con el la instruccion mas la conexion
            Dim comando As New OleDbCommand(CSQl, Datos.oConexion)
            'Creamos otra variable para la lectura de nuestros datos por medio de el objeto OledbDatareader enviandole junto con el la variable ejecutando la instruccion mas executereader que es el que ejecutara nuestra lectura
            Dim lec As OleDbDataReader = comando.ExecuteReader
            'Declaramos la variable fila la cual guardara la informacion y creara una nueva fila mediante el objeto Datarow, la cual se agregara en la tabla grafico1
            Dim fila As DataRow = DsTablas.Grafico1.NewRow
            'Verificacion de la lectura de los datos para esto crearemos una condicion, si el lector fue leido entonces
            If lec.Read Then
                'La fila que sea igual al servicio guardara el nombre del primer campo leido en el array
                fila("Servicio") = array(i)
                'La fila que sea igual al total sera igual al lector de los datos contados en la isntruccion
                fila("Total") = lec("Total")
                'Para el porcentaje, los valores contenidos en el ciclo seran iguales a los datos recuperados del campo total en la instruccion
                Val(i) = lec("Total")
                'Agragamos la fila a la tabla grafico1 mediante la propiedad rows de objeto datarow y el metodo add
                DsTablas.Grafico1.Rows.Add(fila)
            End If
            'una vez terminada la condicion se cierra la concexion y finaliza el ciclo
            Datos.oConexion.Close()
        Next


        ' Porcentaje
        'Hacemos nuevamente nuestro array
        Dim array2 As String() = {"Cable", "Telefonia", "Internet"}
        'Declaramos la variable sumaval con valor igual a cero ya que esta es la que ira sumando cada uno de los valores encontrados de los campos en el array
        Dim sumaval As Integer = 0

        ' Crear ciclo repetitivo para la sumatoria de los valores del contenidos en el total
        For i As Integer = 0 To Val.Count - 1
            sumaval += Val(i)
        Next
        'Ciclo para el conteo de las cantidades de los servicios
        For i As Integer = 0 To array2.Count - 1
            'Creamos una nueva fila temporal para guardar los datos
            Dim fila As DataRow
            'Buscamos el valor del array2 en el grafico1 por medio del metodo find y dividira ese valor entre el valor de la suma de los valores y los multiplicara por 100
            fila = DsTablas.Grafico1.Rows.Find(array2(i))
            If fila IsNot Nothing Then
                fila("Total") = (Int(fila("Total")) / sumaval) * 100
            End If
        Next

        ' ingreso de informacion al grafico
        'verificacion de informacion dentro de la tabla para ser mostrados
        If DsTablas.Grafico1.Count > -1 Then
            'Limpiamos las series del grafico
            ograf.Series.Clear()
            'Al igual que los titulos de el
            ograf.Titles.Clear()
            'Activamos el area 3D del grafico
            ograf.ChartAreas(0).Area3DStyle.Enable3D = True
            'Agregamos un nuevo titulo
            ograf.Titles.Add("Porcentaje de la Cantidad de personas que obtienen los diferentes servicios")
            'Establecemos por medio de la propiedad font el estilo de la letra el tamaño y la espesificacion del estilo
            ograf.Titles(0).Font = New Font("Cambria", 14, FontStyle.Underline)
            'enlace de informacion en el Grafico Pormedio del DAtabindTable
            ograf.DataBindTable(Grafico1BindingSource, "Servicio")
            'Establecemos el tipo de grafico de deseamos por medio de la propiedad Chartype y el datavisualization
            ograf.Series(0).ChartType = DataVisualization.Charting.SeriesChartType.Pie
            'Luego indicamos que el valor de punto de datos sea mostrado atraves del IsValueShownLabel
            ograf.Series(0).IsValueShownAsLabel = True
        Else
            ' y si no se encontro nada pues enviar un msj que diga que no se genero porque no hay datos contenidos para mostrarla
            MsgBox("No se ha generado la grafica, porque no se encontro informacion para crear la mismas", MsgBoxStyle.Information, "Sin Datos")
        End If
        'Finalmente le damos aceptar cambios a nuestros DataSet
        DsTablas.AcceptChanges()
    End Sub
End Class


Ya Terminado nuestra primer gráfica haremos lo mismo para la demás gráficas siguientes, en las cuales los métodos de captura de la información sean mediante un Checkbox

Para nuestro segundo tipo de gráfica haremos lo siguiente :
Tanto como en el formulario como en el objeto ChartControl se harán los mismos pasos que en el primero con excepción de la tabla nueva dentro del dataset ya que no haremos uso del Datarow, siempre lo programaremos en el evento Load del formulario lo único que cambiara en esta gráfica es su código el cual quedará de la siguiente forma:

Código:

' importamos los elementos del entorno como asi mismo los de el olbjeto Oledb
Imports Encuesta.Entorno
Imports System.Data.OleDb


Public Class Servicio

    Private Sub Servicio_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Limpiamos las series del Grafico
        ografico.Series.Clear()
        ' Limpiamos los titulos
        ografico.Titles.Clear()
        'Activamos las areas 3D de las graficas
        ografico.ChartAreas(0).Area3DStyle.Enable3D = True
        'Creamos la instruccion Sql La cual seleccionara un campo con informacion que fue ingresada desde un combobox, se hará un conteo de cada una de ellas y se almacenara en un nuevo campo ordenados por el campo seleccionado
        Dim cSql As String = " Select Servicio, count(Servicio) as Tot from Encuesta group by Servicio"
        'Abrimos nuestra conexion
        Datos.Conectar()
        'ejecutamos nuestra instruccion por medio del objeto command
        Dim comando As New OleDbCommand(cSql, Datos.oConexion)
        'Hacemos una lectura de los datros por medio del objeto DataReader
        Dim lec As OleDbDataReader = comando.ExecuteReader()
        'Enlazamos nuestro grafico por medio del databindTable la cual esta vez envez de llamar al bindigSource llamaremos a la variable del lector de los datos mas el campo del cual se obtuvieron lso datos
        ografico.DataBindTable(lec, "Servicio")
        'Agregamos un nuevo titulo para la grafica
        ografico.Titles.Add("Nùmero de las personas que poseen servicios")
        'Configuramos el tipo del letra al igual que el tamaño junto con el estilo
        ografico.Titles(0).Font = New Font("Cambria", 14, FontStyle.Underline)
        'Visualizamos la grafica de deseamos
        ografico.Series(0).ChartType = DataVisualization.Charting.SeriesChartType.Pie
        'y mostramos el valor del punto de la etiqueta.
        ografico.Series(0).IsValueShownAsLabel = True
    End Sub
End Class


Una vez finalizado podemos crear las gráficas que hacen falta con las cuales en ellas se contenga información agregada a través de un combobox.



Para el llamado de las gráficas desde el primer formulario habíamos creado Splitbutton al cual iremos a agregar información la cual al finalizar nos quedará de esta manera:




Una vez ingresada la información a cada una de las gráficas realizada solo nos queda hacer los llamados a las gráficas a través del método ShowDialog(). Hacemos doble click en cada una de ellas y escribimos unas pequeñas lineas de código asl cuales son:
el nombre del formulario mas el método ShowDialog()

Servicio.ShowDialog()

Ya realizado cada uno de los pasos obtendremos los diferentes resultados como estos:




Código del Formulario de Encuesta

Una vez ya realizada el diseño del formulario pasamos a la programación de el y como paso importante tenemos la validación de la información a la hora de ingresar un dato. 
Para realizar esta validación ingresaremos el objeto ErrorProvider, este lo pegaremos al lado de uno de los cuadros de texto cambiándole las siguientes propiedades:

ErrorProvider
Name
Err


 
Quedando de la siguiente manera en nuestro Formulario:

Una vez hecho este paso pasamos a la programación de la validacion para esto nos vamos al código haciendo click derecho ver código o oprimiendo la tecla F7.

Antes de ir a validar nuestra informacion iremos a colocar unas lineas de codigo al inicio de de la pagina de codigo el cual sera:

Imports Encuesta.Entorno
Imports System.Data.OleDb
__________________________________________________________________________________
Public Class Form1

Una vez hecho esto podemos ya pasara a validar la información. Estas lineas de código que escribimos al inicio es para Importar todos los elementos especificados dentro de cada uno de ellos. Con el Imports System.Data.OleDb lo que hacemos es importar todo los objetos del OleDb que necesitemos como un lector de datos , un comando o una conexión.

Código:

Private Function validar() As Boolean
        'Creamos la funcion validar la cual sera de tipo lógico
        'Y creamos la condicion para un cuadro de texto el cual dira lo siguiente ,"Si el codigo ingresado en el cuadro de texto es igual a nada este llamará al objeto err y a su prosedimiento SetError
        'el cual este nos permite establecer la cadena de descripcion del error, enviandole un msj que debe ingresar lo indicado en esa casilla
        'y cuando esto suceda que este retorne en falso
        If CodigoTextBox.Text = " "  Then
            err.SetError(CodigoTextBox, "Ingrese un Codigo")
            Return False
        End If
        'De igual manera para la demas información personal
        If NombreTextBox.Text = " " Then
            err.SetError(NombreTextBox, " Ingrese un Nombre")
            Return False
        End If
        If DireccionTextBox.Text = " " Then
            err.SetError(DireccionTextBox, " Ingrese una direccion")
            Return False
        End If
        If E_mailTextBox.Text = " " Then
            err.SetError(E_mailTextBox, "Ingrese una direccion de E-Mail")
            Return False
        End If
        If TelefonoTextBox.Text = " " Then
            err.SetError(TelefonoTextBox, "Ingrese un número de Telefono")
            Return False
        End If
        'Tambien se validara la informacion de los combobox el cual al igual que en los cuadros de texto dira: " si la selecciion del combox especificado es igual -1 este llamara al objeto err y asu procedimiento SetError
        'Eviandole un msj que le diga que debe ingresar una opcion, La diferencia de este con los cuadros de texto esque en este en vez de usar la propiedad text se usara la propiedad SelectedIndex -1 , el cual hace referencia a un campo vacio
        ' y de igual manera que retorne en falso
        If ServicioComboBox.SelectedIndex = -1 Then
            err.SetError(ServicioComboBox, "Ingrese una opcion")
            Return False
        End If
        'Este mismo procedimiento se usara para los demas combobox
        If SatisfaccionComboBox.SelectedIndex = -1 Then
            err.SetError(SatisfaccionComboBox, "Ingrese una opcion")
            Return False
        End If
        If ProveedorComboBox.SelectedIndex = -1 Then
            err.SetError(ProveedorComboBox, "Ingrese una opcion")
            Return False
        End If
        If SeguridadComboBox.SelectedIndex = -1 Then
            err.SetError(SeguridadComboBox, "Ingrese una opcion")
            Return False
        End If
        If VelocidadComboBox.SelectedIndex = -1 Then
            err.SetError(VelocidadComboBox, "Ingrese una opcion")
            Return False
        End If
        If ColoniaComboBox.SelectedIndex = -1 Then
            err.SetError(ColoniaComboBox, "Ingrese una opcion")
            Return False
        End If
        If Cable_InternetComboBox.SelectedIndex = -1 Then
            err.SetError(Cable_InternetComboBox, "Ingrese una opcion")
            Return False
        End If
        ' una vez validado la informacion de los combox volveremos a llamar al objeto error y su procedimiento junto a cada uno de los objetos que se utilizaron enviandole con este una respuesta vacía
        err.SetError(CodigoTextBox, " ")
        err.SetError(NombreTextBox, " ")
        err.SetError(TelefonoTextBox, " ")
        err.SetError(DireccionTextBox, " ")
        err.SetError(E_mailTextBox, " ")
        err.SetError(ServicioComboBox, " ")
        err.SetError(SatisfaccionComboBox, " ")
        err.SetError(ProveedorComboBox, " ")
        err.SetError(SeguridadComboBox, " ")
        err.SetError(VelocidadComboBox, " ")
        err.SetError(ColoniaComboBox, " ")
        err.SetError(Cable_InternetComboBox, " ")
        'Este al final retornara verdadero para que la marca del error se quite.
        Return True
    End Function

Seguidamente pasamos a escribir unas lineas de código en el evento Load del Formulario.
Se Programara en este para que a la iniciación del formulario este se ejecute

Código:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Se llama al dsTablas mas el metodo merge y que este llame a la funcion obtener datos y el cual le traiga un valor falso
        DsTablas.Merge(Datos.obdatos, False)
        'tambien llamaremos al cuadro de texto del codigo mas la propiedad enabled la cual sera igual a falso, con esto lo que hacemos es que al iniciars el formulario este cuadro de texto salga inavilitado para que los datos personales no pueda ser modificados
        'De igual manera para los demas cuadros de los datos personales
        CodigoTextBox.Enabled = False
        NombreTextBox.Enabled = False
        DireccionTextBox.Enabled = False
        E_mailTextBox.Enabled = False
        TelefonoTextBox.Enabled = False
    End Sub

Terminado esto Programamos el botón agregar nuevo:

Código:



Private Sub BindingNavigatorAddNewItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BindingNavigatorAddNewItem.Click

        'Aplicamos los diferentes cambios o finalizamos la edición mediante el endEdit()
        EncuestaBindingSource.EndEdit()
        'Mediante el EncuestaBindingSouce hacemos un enlace a la método AddNew Para agregar un registro nuevo a nuestra tabla
        EncuestaBindingSource.AddNew()
        'Enviamos un enfoque por medio de la método focus al cuadro de texto del código para que sea el primer cuadro donde se empiese a escribir
        CodigoTextBox.Focus()
        'luego Habilitamos los cuadros de texto de los datos personales con la propiedad enbled igual a verdadero
        CodigoTextBox.Enabled = True
        NombreTextBox.Enabled = True
        TelefonoTextBox.Enabled = True
        DireccionTextBox.Enabled = True
        E_mailTextBox.Enabled = True
        'Luedo que se deshabiliten mediante la método clear() que es la que nos permite limpiar, Que limpie los cuadros de texto de los datos personales
        NombreTextBox.Clear()
        DireccionTextBox.Clear()
        TelefonoTextBox.Clear()
        E_mailTextBox.Clear()
        'De igual manera que la informacion contenida en lo combobox pero en vez de usar la funcion clear usaremos la propiedad SelectedIndex de cada uno de ellos, la cual sera igua a -1 traendo una respuesta vacia para cada una de ellas
        ServicioComboBox.SelectedIndex = -1
        SatisfaccionComboBox.SelectedIndex = -1
        ProveedorComboBox.SelectedIndex = -1
        VelocidadComboBox.SelectedIndex = -1
        SeguridadComboBox.SelectedIndex = -1
        Cable_InternetComboBox.SelectedIndex = -1
        ColoniaComboBox.SelectedIndex = -1

    End Sub


Una vez hecho esto Pasamos a programar el botón guardar de nuestro BindignNavigator damos doble click en el y programamos los siguiente:

Código:

Private Sub EncuestaBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EncuestaBindingNavigatorSaveItem.Click

        'Primero creamos una condicion  , Si la validacion es verdadera entonces
        If validar() = True Then
            'Finalizamos la edicion del registro actual mediante el EndEdit()
            EncuestaBindingSource.EndEdit()
            'Llamamos al metodo salvarencuesta y que la informacion guardada la almacene en el nuestro daaset que seria el dsTablas
            Datos.salvEncues(DsTablas)
            'Llamamos a nuestro dsTablas y le decimos que guarde los ultimos cambios realizados mediante del AcceptChanges()
            DsTablas.AcceptChanges()
            'finalmente que nos envie una retroalimentacion mediante un msg que diga que los datos se han almacenado
            MsgBox(" Los Datos se han almacenado", MsgBoxStyle.Information, "Salvar")
        End If
        'Al finalizar la condicion y los datos ya guardados que se vuelvan a inabilitar los cuadros de texto de los datos personaless mediante la propiedad enabled igual a falso
        CodigoTextBox.Enabled = False
        NombreTextBox.Enabled = False
        TelefonoTextBox.Enabled = False
        DireccionTextBox.Enabled = False
        E_mailTextBox.Enabled = False


    End Sub



Seguido Programamos el botón Eliminar:

Código:

Private Sub BindingNavigatorDeleteItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BindingNavigatorDeleteItem.Click

        'Primeramente enviamos un msg al usuario para Preguntarle si quiere o no eliminar este registro mediante el msgboxStyle.question mas el msgboxstyle.yesno y si la respuesta de este es igual a si sucedera lo siguiente
        If MsgBox(" Desea eliminar este Registro ", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Eliminar") = MsgBoxResult.Yes Then
            'Se aplicaran los cambios o finalizamos la edicion del registro actual
            EncuestaBindingSource.EndEdit()
            'Mediante el bindingSouce llamamos a la metodo RemovCurrent() el cual nos permitira quitar o en otras palabras eliminar el registro seleccionado de la tabla
            EncuestaBindingSource.RemoveCurrent()
            'llamamos a nuestra variable datos mas la funcion salvarencuesta para que se aplique la eliminacion en el
            Datos.salvEncues(DsTablas)
            'Se aceptan los cabios en nuestro Dataset
            DsTablas.AcceptChanges()
            ' Y enviamos una retralimentacion para decirle al usuario que la aliminacion fue exitosa
            MsgBox(" El registro se ha eliminado ", MsgBoxStyle.Information, "Confirmado")
            'Finalmente enviamos el enfoque al cuadro de texto del codigo.
            CodigoTextBox.Focus()
        End If
    End Sub


Una vez terminado esto hemos finalizado con la programación de nuestras operaciones básicas dentro de nuestro formulario. Con esto ya nos guarda, nos elimina y nos agrega un registro nuevo.
Ahora lo que nos falta es hacer una búsqueda sencilla de los registros por medio del código. 
Esto lo realizamos de la siguiente manera: Damos doble click en el botón buscar de nuestro formulario y programamos lo siguiente:

Código:


Private Sub cmdBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdBuscar.Click
        'Declaramos la variable codigo la cual almacenara en el codigo escrito o contenido en el cuadro de texto codigo
        Dim codigo As String = txtCodigoBuscado.Text
        'Declaramos la variable fila la cual tendra como valor -1
        Dim Fila As Integer = -1
        'La variable fila nos realizara una busqueda de el valor del codigo en el bindgSource mediante el metodo find
        Fila = EncuestaBindingSource.Find("Codigo", codigo)
        'Realizaremos una condicion la cual sera, Si la fila es igual a -1 enviara un msg al Usuario diciendo que no se ha econtrado el codigo ingresado y que lo verifique
        If Fila = -1 Then
            MsgBox("No se ha encontrado el codigo del cliente, verifique el codigo ingresado", MsgBoxStyle.Information, "No se encuentra el codigo")
            'Y si no se encontro que termine su procedimiento en ese momento
            Exit Sub
        Else
            'Si no es asi que traiga el numero de registro o la posicion del registro mediante el bindingSource y que ese valor sea almacenado temporalmente en la variable fila
            EncuestaBindingSource.Position = Fila

        End If
    End Sub

Una vez finalizado toda la programación de cada uno de los botones nuestro Formulario esta listo para ser utilizado.