none
Problemas con comman type RRS feed

  • Pregunta

  • Hola buenas tardes amigos estoy realizando un programa con base de datos de access para registrar personas estoy siguiendo un tutorial  pero a la hora de ejecutarlo me marca un error de commanda.type espero que me puedan ayudar por favor.

    Adjunto el codigo fuente más el modulo que se explica en el video 

    gracias

    Public Class Datos
    
        Private Sub btnCerrar_Click(sender As Object, e As EventArgs) Handles btnCerrar.Click
            Me.Close()
        End Sub
    
        Private Sub btnInsertar_Click(sender As Object, e As EventArgs) Handles btnInsertar.Click
            If (Me.txtNumeroControl.Text = "") Then
                MsgBox("El numero de control no puede estar vacio", MsgBoxStyle.Exclamation, "Registro")
                Me.txtNumeroControl.Select()
            Else
                Dim NumeroDeControl As String
                Dim Nombre As String = ""
                Dim Apellido As String = ""
                Dim Carrera As String = ""
                Dim Semestre As String = ""
                Dim NSS As String = ""
                Dim Curp As String = ""
                Dim Sangre As String = ""
    
                NumeroDeControl = Me.txtNumeroControl.Text
                Nombre = Me.txtNombre.Text
                Apellido = Me.txtApellido.Text
                Carrera = Me.txtCarrera.Text
                Semestre = Me.txtSemestre.Text
                NSS = Me.txtNSS.Text
                Curp = Me.txtCurp.Text
                Sangre = Me.txtTipoSangre.Text
    
    
                cmd.CommandType = CommandType.Text <======================Aqui me dice error "referencia no establecida"
                cmd.Connection = conn
    
    
    
    
                sql = "INSERT INTO BASEDEDATOS(NUMERODECONTROL, NOMBRE, APELLIDO, CARRERA, SEMESTRE, NSS, CURP, TIPODESANGRE)"
    
                sql += "VALUES (" & NumeroDeControl & ",'" & Nombre & "','" & Apellido & "','" & Carrera & "','" & Semestre & "','" & NSS & "','" & Curp & "','" & Sangre & "')"
    
                MsgBox(sql)
    
            End If
        End Sub
    
        
    
    End Class

    Module FuncionesDB
    
        Public conn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=BaseDeDatos.mdb;Persist Security Info=False")
        Public cmd As OleDb.OleDbCommand
        Public dr As OleDb.OleDbDataReader
        Public sql As String = ""
    
    
    
    
    
        Public Sub conectarse()
    
            Try
                conn.Open()
                MsgBox("Conexión exitosa")
            Catch ex As Exception
    
                MsgBox(ex.ToString)
    
            End Try
    
        End Sub
    
    
        Public Sub consultar(ByRef identificacion As String)
    
            cmd.Connection = conn
            cmd.CommandType = CommandType.Text
    
            If identificacion <> "" Then
                cmd.CommandText = "INSERT NOMBRE, APELLIDO, CARRERA, SEMESTRE, NSS, CURP, TIPODESANGRE FROM BASEDEDATOS WHERE NUMERODECONTROL=" + identificacion
    
            Else
                cmd.CommandText = "INSERT NOMBRE, APELLIDO, CARRERA, SEMESTRE, NSS, CURP, TIPODESANGRE FROM BASEDEDATOS"
    
            End If
    
            Try
                dr = cmd.ExecuteReader()
                dr.Read()
            Catch ex As Exception
    
            End Try
    
        End Sub
    
    
    
    
    End Module
    


    lunes, 7 de octubre de 2019 22:54

Respuestas

  • Hola:
    Prueba esto

    Private Sub btnInsertar_Click(sender As Object, e As EventArgs) Handles btnInsertar.Click
            If (Me.txtNumeroControl.Text = "") Then
                MsgBox("El numero de control no puede estar vacio", MsgBoxStyle.Exclamation, "Registro")
                Me.txtNumeroControl.Select()
                Return
            End If   
            Dim msCadenaACCESS As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\TU_BASE_DE_DATOS.accdb"
            Try
                Using loConexion As New OleDbConnection(msCadenaACCESS)
                    Dim lsQuery As String = "Insert into TU_TABLA (NUMERODECONTROL, NOMBRE, APELLIDO, CARRERA, SEMESTRE, NSS, CURP, TIPODESANGRE) Values (@NControl, @Nombre, @Apellido, @Carrera, @Semestre, @Nss, @Curp, @TSangre)"
                    ' crear comando
                    Using loComando As New OleDbCommand(lsQuery, loConexion)
                        'añadir parametros al comando
                        loComando.Parameters.Add(New OleDbParameter("@NControl", txtNumeroControl.Text))
                        loComando.Parameters.Add(New OleDbParameter("@Nombre", txtNombre.Text))
                        loComando.Parameters.Add(New OleDbParameter("@Apellido", txtApellido.Text))
                        loComando.Parameters.Add(New OleDbParameter("@Carrera", txtCarrera.Text))
                        loComando.Parameters.Add(New OleDbParameter("@Semestre", txtSemestre.Text))
                        loComando.Parameters.Add(New OleDbParameter("@Nss", txtNSS.Text))
                        loComando.Parameters.Add(New OleDbParameter("@Curp", txtCurp.Text))
                        loComando.Parameters.Add(New OleDbParameter("@TSangre", txtTipoSangre.Text))
                        loConexion.Open()   ' abrir conexión
                        loComando.ExecuteNonQuery()
                    End Using
                End Using
            Catch Exp As Exception
                MessageBox.Show(Exp.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
    End Sub

    Un saludo desde Bilbo
    Carlos
    • Propuesto como respuesta Pablo Rubio jueves, 10 de octubre de 2019 16:04
    • Marcado como respuesta Martin2102 martes, 15 de octubre de 2019 18:33
    martes, 8 de octubre de 2019 5:14

Todas las respuestas

  • Asi pueden buscar el video 

    1. Visual Basic .NET - Parte 26 - DataReader (Curso VB.NET 2010 & 2012)

    No puedo colocar el link porque no me lo permite espero que me puedan ayudar 

    gracias



    • Editado Martin2102 lunes, 7 de octubre de 2019 22:56
    • Propuesto como respuesta Pablo Rubio jueves, 10 de octubre de 2019 16:04
    lunes, 7 de octubre de 2019 22:56
  • Hola:
    Prueba esto

    Private Sub btnInsertar_Click(sender As Object, e As EventArgs) Handles btnInsertar.Click
            If (Me.txtNumeroControl.Text = "") Then
                MsgBox("El numero de control no puede estar vacio", MsgBoxStyle.Exclamation, "Registro")
                Me.txtNumeroControl.Select()
                Return
            End If   
            Dim msCadenaACCESS As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\TU_BASE_DE_DATOS.accdb"
            Try
                Using loConexion As New OleDbConnection(msCadenaACCESS)
                    Dim lsQuery As String = "Insert into TU_TABLA (NUMERODECONTROL, NOMBRE, APELLIDO, CARRERA, SEMESTRE, NSS, CURP, TIPODESANGRE) Values (@NControl, @Nombre, @Apellido, @Carrera, @Semestre, @Nss, @Curp, @TSangre)"
                    ' crear comando
                    Using loComando As New OleDbCommand(lsQuery, loConexion)
                        'añadir parametros al comando
                        loComando.Parameters.Add(New OleDbParameter("@NControl", txtNumeroControl.Text))
                        loComando.Parameters.Add(New OleDbParameter("@Nombre", txtNombre.Text))
                        loComando.Parameters.Add(New OleDbParameter("@Apellido", txtApellido.Text))
                        loComando.Parameters.Add(New OleDbParameter("@Carrera", txtCarrera.Text))
                        loComando.Parameters.Add(New OleDbParameter("@Semestre", txtSemestre.Text))
                        loComando.Parameters.Add(New OleDbParameter("@Nss", txtNSS.Text))
                        loComando.Parameters.Add(New OleDbParameter("@Curp", txtCurp.Text))
                        loComando.Parameters.Add(New OleDbParameter("@TSangre", txtTipoSangre.Text))
                        loConexion.Open()   ' abrir conexión
                        loComando.ExecuteNonQuery()
                    End Using
                End Using
            Catch Exp As Exception
                MessageBox.Show(Exp.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
    End Sub

    Un saludo desde Bilbo
    Carlos
    • Propuesto como respuesta Pablo Rubio jueves, 10 de octubre de 2019 16:04
    • Marcado como respuesta Martin2102 martes, 15 de octubre de 2019 18:33
    martes, 8 de octubre de 2019 5:14
  • Muchas gracias amigo
    martes, 15 de octubre de 2019 18:35