none
Agenda de contactos RRS feed

  • Debate general

  • Hola, llevo tiempo intentando crear una agenda de contactos en visual basic 2010, pero no consigo finalizarla, ya que me da error al intentar guardar contactos o actualizar la tabla. Este es el codigo

    Public Class Form1

        Dim validaciones As Comprobar = New Comprobar
        Private miDataSet As DataSet
        Private miDataAdapter As OleDb.OleDbDataAdapter
        Private PosicionFila As Integer
        Private Conexion As OleDb.OleDbConnection

     


        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

            TextNombre.Focus()
            Try
                ' crearemos el objeto de la conexion
                ' declaramos la variable conexion nuevaConexion
                Conexion = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=|DataDirectory|\Agenda.mdb")

                ' una vez creada la conexion crearemos la cadena de conexion que conecta con la Base Datos
                'crear el adaptador  de datos

                miDataAdapter = New OleDb.OleDbDataAdapter
                Conexion.Open()

                'crearemos la sentencia para seleccionar los datos de la tabla Contactos de la base de datos
                'Dim miconsulta As New OleDb.OleDbCommand("SELECT Nombre,Apellidos,Telefono,Movil,Direccion,CP,Ciudad,CorreoElectronico,Notas FROM Contactos", Conexion)
                Dim miconsulta As New OleDb.OleDbCommand("SELECT * FROM Contactos", Conexion)
                'llenaremos el adaptador de datos con la consulta
                miconsulta.ExecuteNonQuery()
                'PORQUE HACE FALTA
                ' CREAMOS UN COMMANDBUILDER PASANDOLE COMO PARAMETRO EL DATAADAPTER,
                ' CON EL OBJETO DE CONSTRUIR LOS COMAMDOS
                'INSERTAR,CONSULTAR...ETC Y ASIGNARSELOS

                ' AL DATAADAPTER
                'RECORDAR: UN DATAADAPTER CONTIENE UNA SERIE DE OBJETOS COMMAND PARA LAS OPERACIONES DE CONSULTA,INSERCION,MODIFICACION...
                Dim oCommbuild As OleDb.OleDbCommandBuilder = New OleDb.OleDbCommandBuilder(miDataAdapter)

                miDataAdapter.SelectCommand = miconsulta
                'creamos el conjunto de datos


                Me.mostrardatos()


            Catch ex As Exception

                ' intentaremos capturar un error en la conexion en el caso de que no conecte
                MessageBox.Show("Error al conectar con datos" & ControlChars.CrLf & ex.Message & ControlChars.CrLf & ex.Source())

            End Try
        End Sub

        Public Sub mostrardatos()
            'vaciamos el dataset
            miDataSet = New DataSet


            miDataSet.Clear()

            miDataAdapter.Fill(miDataSet, "Contactos")
            ' CARGAR DATOS EN EL DATAVIEW

            DataGridView1.DataSource = miDataSet
            DataGridView1.DataMember = "Contactos" ' tabla contactos

            PosicionFila = 0

            Dim oDataRow2 As DataRow
            oDataRow2 = Me.miDataSet.Tables("Contactos").Rows(PosicionFila)
            'AQUI DEBO CONTROLAR SI LA BASE DE DATOS O TABLA NO HAY NADA

            If (PosicionFila = 0) Then
                ' SOLAMENTE CARGAMOS EL TEXBOX CON EL DATO DE LA FILA ELEGIDA .

                Me.TextNombre.Text = oDataRow2("Nombre")
                Me.TextApellido.Text = oDataRow2("Apellidos")
                Me.TextTelefono.Text = oDataRow2("Telefono")
                Me.TextMovil.Text = oDataRow2("Movil")
                Me.TextDireccion.Text = oDataRow2("Direccion")
                Me.TextCP.Text = oDataRow2("CP")
                Me.TextCiudad.Text = oDataRow2("Ciudad")
                Me.TextCorreo.Text = oDataRow2("Correo Electronico")
                Me.TextNotas.Text = oDataRow2("Notas")

            Else
                MessageBox.Show("No hay datos en la base de datos")
            End If
        End Sub

     
        Private Sub BtnGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnGuardar.Click

         

            Dim comprobaciones As Boolean = True
            ComprobarCampo()




            ' ------------------------------------------------------------------
            ' comprobamos de igual forma que el campo no este vacio

            If Me.TextNombre.Text <> " " And comprobaciones = False Then
                MessageBox.Show("Introduce los campos correctamente Porfavor")

            Else
                'obtener un nuevo objeto fila de la tabla del dataset
                Dim oDataRow As DataRow
                oDataRow = Me.miDataSet.Tables("Contactos").NewRow()

                oDataRow("Nombre") = Me.TextNombre.Text
                oDataRow("Apellidos") = Me.TextApellido.Text
                oDataRow("Telefono") = Me.TextTelefono.Text
                oDataRow("Movil") = Me.TextMovil.Text
                oDataRow("Direccion") = Me.TextDireccion.Text
                oDataRow("CP") = Me.TextCP.Text
                oDataRow("Ciudad") = Me.TextCiudad.Text
                oDataRow("Correo Electronico") = Me.TextCorreo.Text
                oDataRow("Notas") = Me.TextNotas.Text

                'añadir el objeto fila a la coleccion de filas
                'de la tabla del dataset

                Me.miDataSet.Tables("Contactos").Rows.Add(oDataRow)
                MessageBox.Show("Registro almacenado", "", MessageBoxButtons.OK, MessageBoxIcon.Information)


                Me.miDataAdapter.Update(Me.miDataSet, "Contactos")

               
            End If
        End Sub

        Private Sub BtnSiguiente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSiguiente.Click
            If Me.PosicionFila = (Me.miDataSet.Tables("Contactos").Rows.Count - 1) Then
                MessageBox.Show("Ultimo registro", "FIN", _
               MessageBoxButtons.OK, MessageBoxIcon.Information)
            Else
                'incrementar el marcador de registro
                'actulizar los controles con los
                'datos del registro actual
                Me.PosicionFila = PosicionFila + 1
                Dim oDataRow2 As DataRow
                oDataRow2 = Me.miDataSet.Tables("Contactos").Rows(PosicionFila)

                ' SOLAMENTE CARGAMOS EL TEXBOX CON EL DATO DE LA FILA ELEGIDA .

                Me.TextNombre.Text = oDataRow2("Nombre")
                Me.TextApellido.Text = oDataRow2("Apellidos")
                Me.TextTelefono.Text = oDataRow2("Telefono")
                Me.TextMovil.Text = oDataRow2("Movil")
                Me.TextDireccion.Text = oDataRow2("Direccion")
                Me.TextCP.Text = oDataRow2("CP")
                Me.TextCorreo.Text = oDataRow2("Correo Electronico")
                Me.TextCiudad.Text = oDataRow2("Ciudad")
                Me.TextNotas.Text = oDataRow2("Notas")
            End If
        End Sub


        Private Sub BtnAnterior_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAnterior.Click
            'nos encargaremos de retroceder por los registros y mostrarlos
            If Me.PosicionFila = 0 Then
                MessageBox.Show("Primer  registro", "INICIO", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Else
                'disminuir el marcador de registro
                'actulizar los controles con los
                'datos del registro actual
                Me.PosicionFila = PosicionFila - 1
                Dim oDataRow2 As DataRow
                oDataRow2 = Me.miDataSet.Tables("Contactos").Rows(PosicionFila)

                ' SOLAMENTE CARGAMOS EL TEXBOX CON EL DATO DE LA FILA ELEGIDA .

                Me.TextNombre.Text = oDataRow2("Nombre")
                Me.TextApellido.Text = oDataRow2("Apellidos")
                Me.TextTelefono.Text = oDataRow2("Telefono")
                Me.TextMovil.Text = oDataRow2("Movil")
                Me.TextDireccion.Text = oDataRow2("Direccion")
                Me.TextCP.Text = oDataRow2("CP")
                Me.TextCorreo.Text = oDataRow2("Correo Electronico")
                Me.TextCiudad.Text = oDataRow2("Ciudad")
                Me.TextNotas.Text = oDataRow2("Notas")
            End If
        End Sub

        Private Sub BtnSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSalir.Click
            Close()
        End Sub

        Private Sub BtnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnNuevo.Click
            '  BORRAMOS LOS CAMPOS PARA REALIZAR MAS OPERACIONES
            TextNombre.Focus()

            Me.TextNombre.Text = ""
            Me.TextApellido.Text = ""
            Me.TextTelefono.Text = ""
            Me.TextMovil.Text = ""
            Me.TextDireccion.Text = ""
            Me.TextCP.Text = ""
            Me.TextCorreo.Text = ""
            Me.TextCiudad.Text = ""
            Me.TextNotas.Text = ""
            Me.PosicionFila = PosicionFila - 1
            If Me.TextNombre.Text <> " " Then
                Me.PosicionFila = PosicionFila - 1
            Else
                MessageBox.Show("Introduce campos, porfavor", "CAMPOS", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If
        End Sub

        Private Sub BtnEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnEliminar.Click
            Dim oDataRow As DataRow
            'obtener el objeto de la  fila de la tabla del dataset
            ' en el que estamos posicionados
            oDataRow = Me.miDataSet.Tables("Contactos").Rows(Me.PosicionFila)
            oDataRow.Delete() ' CON ESTE METODO BORRAMOS LA FILA

            'mediante el metodo GetChange(), obtenemos  una tabla
            'con las filas borradas

            Dim mitablaborrada As DataTable
            mitablaborrada = Me.miDataSet.Tables("Contactos").GetChanges(DataRowState.Deleted)

            'actualizar en el almacen de datos las filas borradas

            Me.miDataAdapter.Update(mitablaborrada)

            'confirmar los cambios realizados
            Me.miDataSet.Tables("Contactos").AcceptChanges()



            'CARGAR EL PRIMER REGISTRO Y PONER EN BLANCO TENEMOS QUE HACERLO
            'reposicionar en la primera fila
            Me.TextNombre.Text = ""
            Me.TextApellido.Text = ""
            Me.TextTelefono.Text = ""
            Me.TextMovil.Text = ""
            Me.TextDireccion.Text = ""
            Me.TextCP.Text = ""
            Me.TextCorreo.Text = ""
            Me.TextCiudad.Text = ""
            Me.TextNotas.Text = ""
            Me.miDataAdapter.Update(Me.miDataSet, "Contactos")
            BtnAnterior.PerformClick()
        End Sub

        Private Sub BtnModificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnModificar.Click

            Dim comprobaciones As Boolean = True
            ComprobarCampo()

            If (Me.TextNombre.Text = " ") Or (comprobaciones = False) Then


                MessageBox.Show("Introduce los campos correctamente Porfavor")
            Else


                Dim oDataRow As DataRow
                'obtener un nuevo objeto fila de la tabla del dataset
                ' en el que estamos posicionados
                oDataRow = Me.miDataSet.Tables("Contactos").Rows(Me.PosicionFila)

                'modificar las columnas de la fila excepto la correspondiente al
                ' identificador amigo

                oDataRow("Nombre") = Me.TextNombre.Text
                oDataRow("Apellidos") = Me.TextApellido.Text
                oDataRow("Telefono") = Me.TextTelefono.Text
                oDataRow("Movil") = Me.TextMovil.Text
                oDataRow("Direccion") = Me.TextDireccion.Text
                oDataRow("CP") = Me.TextCP.Text
                oDataRow("Correo Electronico") = Me.TextCorreo.Text
                oDataRow("Ciudad") = Me.TextCiudad.Text
                oDataRow("Notas") = Me.TextNotas.Text


                miDataAdapter.Update(miDataSet.Tables("Contactos"))

            End If

        End Sub

        Private Sub BtnBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnBuscar.Click
            Dim NvDataView As New DataView
            NvDataView.Table = miDataSet.Tables("amigo")

            ' TENGO QUE CONSEGUIR BUSCAR POR EL COMBOBOX
            '   NvDataView.RowFilter = "Nombre LIKE  '%" & txtBuscar.Text & "%'"
            Dim a As String
            ' Dim tel As Int32
            a = ComboBoxBuscar.SelectedItem
            'MessageBox.Show(a)
            If a = "Nombre" Then
                NvDataView.RowFilter = "nombre LIKE  '%" & TextDato.Text & "%'"

            ElseIf a = "Apellidos" Then
                NvDataView.RowFilter = "apellidos LIKE  '%" & TextDato.Text & "%'"

            End If
        End Sub

        Private Sub TextNotas_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextNotas.TextChanged

        End Sub

        Sub ComprobarCampo()
            'vamos a comprobar los campos del formulario antes de insertar
            '-------------------------------------------------------------
            '--------------------------------------------------------------

            Dim comprobaciones As Boolean = True

            If validaciones.validarNombre(TextNombre.Text.Trim) = False Then
                MessageBox.Show(validaciones.mensaje, "Informacion")
                TextNombre.Focus()
                comprobaciones = False
            End If
            If validaciones.validarApellidos(TextApellido.Text.Trim) = False Then
                MessageBox.Show(validaciones.mensaje, "Informacion")
                TextNombre.Focus()
                comprobaciones = False
            End If

            ' If comprobaciones = True Then
            If validaciones.validarTelefono(TextTelefono.Text.Trim) = False Then
                MessageBox.Show(validaciones.mensaje, "Informacion")
                TextTelefono.Focus()
                comprobaciones = False
                'End If
            End If
            If validaciones.validarMovil(TextMovil.Text.Trim) = False Then
                MessageBox.Show(validaciones.mensaje, "Informacion")
                TextMovil.Focus()
                comprobaciones = False
            End If
            If validaciones.validarDireccion(TextDireccion.Text.Trim) = False Then
                MessageBox.Show(validaciones.mensaje, "Informacion")
                TextDireccion.Focus()
                comprobaciones = False
            End If
            If validaciones.validarCP(TextCP.Text.Trim) = False Then
                MessageBox.Show(validaciones.mensaje, "Informacion")
                TextCP.Focus()
                comprobaciones = False
            End If
            If validaciones.validarCiudad(TextCiudad.Text.Trim) = False Then
                MessageBox.Show(validaciones.mensaje, "Informacion")
                TextCiudad.Focus()
                comprobaciones = False
            End If
            If validaciones.validarCorreo(TextCorreo.Text.Trim) = False Then
                MessageBox.Show(validaciones.mensaje, "Informacion")
                TextCorreo.Focus()
                comprobaciones = False
            End If

        End Sub
    End Class

    Gracias

    miércoles, 7 de agosto de 2013 15:30

Todas las respuestas