none
Consultas a una base de datos RRS feed

  • Pregunta

  •  Hola nuevamente, estoy haciendo un programa de altas, bajas, cambios y consultas, en el modulo de consultas tengo el siguiente codigo:

      

    Dim comando As New OleDbCommand

    Dim adaptador As New OleDbDataAdapter

    Dim datos As New DataSet

    comando.Connection = OleDbConnection1

    OleDbConnection1.Open()

     

    comando.CommandType = CommandType.Text

    comando.CommandText = "SELECT Nombre, Ap_pat FROM Datos where Num_ctrl = '" & TextBox1.Text & "'"

    comando.ExecuteReader()

     

    OleDbConnection1.Close()

     

    Intento poner un dato en el TextBox1, con ese dato realizo una consulta a mi tabla Datos que tiene varios campos, solo me interesa la informacion de los campos "Nombre" y "Ap_pat", la cual quiero que aparesca en dos controles Label.

    en la propiedad DataBindings de las etiquetas, la propiedad Text está enlazada por un BindingSource (DatosBindingSource para ser mas precis) a la tabla y campos correspondientes.

    Inclui un OledbDataAdapter que me genero un OleDbConnection cuando lo configure, después genere un DataSet y también agrege un OleDbCommand.

    De antemano agradezco su valiosa ayuda, hasta luego.

    viernes, 13 de agosto de 2010 0:02

Respuestas

  • hola

    en lugar de usar BindingSource  porque no asignas directo los valores a los controles

    algo como esto:

    OleDbConnection1.Open()

    Dom query As String = "SELECT Nombre, Ap_pat FROM Datos where Num_ctrl = @Numctrl"
    Dim comando As New OleDbCommand(query, OleDbConnection1)
    comando.Parameters.AddWithValue("@Numctrl", TextBox1.Text)


    Dim reader As OleDbDataReader = comando.ExecuteReader()

    If reader.Read() Then
        lblNombre.Text = CStr(reader("Nombre"))
        lblAppat.Text = CStr(reader("Ap_pat"))
    End If

    OleDbConnection1.Close()

     

    [ADO.NET] Parte 5 - Ejemplos Simples Operaciones CRUD

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Propuesto como respuesta Leandro TuttiniMVP viernes, 13 de agosto de 2010 2:54
    • Marcado como respuesta Anubis II viernes, 13 de agosto de 2010 3:40
    viernes, 13 de agosto de 2010 2:54

Todas las respuestas

  • hola

    en lugar de usar BindingSource  porque no asignas directo los valores a los controles

    algo como esto:

    OleDbConnection1.Open()

    Dom query As String = "SELECT Nombre, Ap_pat FROM Datos where Num_ctrl = @Numctrl"
    Dim comando As New OleDbCommand(query, OleDbConnection1)
    comando.Parameters.AddWithValue("@Numctrl", TextBox1.Text)


    Dim reader As OleDbDataReader = comando.ExecuteReader()

    If reader.Read() Then
        lblNombre.Text = CStr(reader("Nombre"))
        lblAppat.Text = CStr(reader("Ap_pat"))
    End If

    OleDbConnection1.Close()

     

    [ADO.NET] Parte 5 - Ejemplos Simples Operaciones CRUD

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Propuesto como respuesta Leandro TuttiniMVP viernes, 13 de agosto de 2010 2:54
    • Marcado como respuesta Anubis II viernes, 13 de agosto de 2010 3:40
    viernes, 13 de agosto de 2010 2:54
  • Hola Leandro, buenas noches, agradezco tu enorme aportación, probe la rutina de tu respuesta y no tuve ningún problema en su funcionamiento, quiza no lo intente de esta forma porque desconozco algunas cosas. Es perfectamente entendible para mi la mayor parte del código, excepto en las siguientes líneas:

     (A)    Dim query As String = "SELECT Nombre, Ap_pat FROM Datos where Num_ctrl = @Numctrl"

    En esta línea no entiendo la función que tiene @Numctrl, es entendible que dos líneas posteriores le asignas el valor del textbox, mi duda es sobre el caracter "@".

     

    La otra línea donde tengo dudas es sobre los parametros del OleDbCommand (A, B)

    A (query)

    B (OleDbConnection1)

    Estos parametros me indican que se va a utilizar el query de la linea anterior utilizando la conexión del OleDbConection1?

    Te reitero mi gratitud y de una vez marco la respuesta que me diste (espero hacerlo bien, si no porfavor hasmelo saber)

     

    Hasta luego.

     

    viernes, 13 de agosto de 2010 3:40