• Viernes 26 de Abril de 2024, 22:48

Autor Tema:  Búsqueda de registro.  (Leído 2376 veces)

elultimoguerrero

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Búsqueda de registro.
« en: Lunes 14 de Septiembre de 2009, 03:29 »
0
Hola amigos de solocodigo, tengo esta duda, espero me puedan ayudar a resolverla: tengo un formulario de búsquedas, el cual consta de un combobox(cselecciondelcliente), una caja de texto(tnocredencial) y un botón de buscar(bbuscar), al darle clic a la flechita del combobox me muestra una lista de todos los usuarios que se encuentran registrados en una tabla llamada registrodeclientes, hasta allí el programa funciona de manera correcta.

El código que yo necesito es que cuando yo seleccione un nombre y le de clic al botón de buscar me muestre en la caja de texto su número de credencial, utilizo visual basic 2005 edición express y mysql, estos son los valores de los campos: Apellido_paterno, Apellido_materno y Nombres todos varchar(20) y No_credencial int(10) clave primaria.

Este es el código que utilizo en el formulario (como pueden ver los apellidos y el nombre del usuario los tengo concatenados):

Imports MySql.Data.MySqlClient
Imports System.Data

Public Class busquedadeclientes
    Dim con As New MySqlConnection()
    Dim da As New MySqlDataAdapter()
    Dim ds As New DataSet()
    Dim dr As DataRow

    Private Sub busquedadeclientes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim I As Integer
        con = New MySqlConnection("server=xxx;database=xxx;uid=xxx;pwd=xxx;")
        da = New MySqlDataAdapter("select concat(Apellido_paterno,' ', Apellido_materno,' ', Nombres) as na from registrodeclientes order by Apellido_paterno asc;", con)
        da.Fill(ds, "registrodeclientes")
        If ds.Tables("registrodeclientes").Rows.Count > 0 Then
            For I = 0 To ds.Tables("registrodeclientes").Rows.Count - 1
                dr = ds.Tables("registrodeclientes").Rows(I)
                cselecciondelcliente.Items.Add(dr("na"))
            Next
        End If
    End Sub

    Private Sub bbuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bbuscar.Click

    End Sub

    Private Sub bsalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bsalir.Click
        Me.Close()
    End Sub
End Class

Espero y me puedan ayudar, gracias.

dlplenin

  • Miembro activo
  • **
  • Mensajes: 44
  • Nacionalidad: ec
    • Ver Perfil
Re: Búsqueda de registro.
« Respuesta #1 en: Miércoles 16 de Septiembre de 2009, 05:52 »
0
hola, prueba asi:
- En el select puedes sacar tambien el campo No_credencial (en mi codigo es el campo id)
- asigna ValueMember y el DisplayMember al combobox
- en el boton buscar obtines el valor del  No_credencial desde el mismo combobox (Me.cselecciondelcliente.SelectedValue)


Imports MySql.Data.MySqlClient
Imports System.Data

Public Class Form2

    Dim con As New MySqlConnection()
    Dim da As New MySqlDataAdapter()
    Dim ds As New DataSet()
    Dim dr As DataRow

    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Dim I As Integer
        con = New MySqlConnection("datasource=localhost;username=root;password=root;database=prueba")
        da = New MySqlDataAdapter("select concat(apellido ,' ',nombre) as na,id from tableprueba order by apellido asc", con)
        da.Fill(ds, "tableprueba")
        ' If ds.Tables("tableprueba").Rows.Count > 0 Then
        'For I = 0 To ds.Tables("tableprueba").Rows.Count - 1
        'dr = ds.Tables("tableprueba").Rows(I)
        Me.cselecciondelcliente.DataSource = ds.Tables("tableprueba").DefaultView
        cselecciondelcliente.ValueMember = "id" ' en lugar de id pones No_credencial
        cselecciondelcliente.DisplayMember = "na"
        'cselecciondelcliente.Items.Add(dr("na"))
        'Next
        'End If
    End Sub

    Private Sub btn_value_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_value.Click
        Me.txt_value.Text = Me.cselecciondelcliente.SelectedValue
    End Sub
End Class


Saludos

elultimoguerrero

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Búsqueda de registro.
« Respuesta #2 en: Miércoles 16 de Septiembre de 2009, 06:00 »
0
Holadlplenin, te agradezco tu atención y ayuda a mi duda, lo probaré y te avisaré de los resultados, gracias y estamos colaborando en el foro, saludos.

elultimoguerrero

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Búsqueda de registro.
« Respuesta #3 en: Miércoles 16 de Septiembre de 2009, 20:00 »
0
Compañero plenin, estuve estudiando y poniendo a prueba tu código y realmente funciona, pero solo tengo una pequeña observación, cuando inicia el formulario de las búsquedas me aparece por default en el combo el nombre de un usuario, por estética, no debería de aparecer, estuve tratando de hacer que fuera así y no pude, por lo que compilé tu código con el que un servidor tenía y lo pude lograr, te comparto a tí y a los usuarios del foro el resultado final y esto es lo que me mostro, de cualquier manera te agradezco mucho tu ayuda porque sin ella no lo ubiese logrado, ya que a partir de tu código lo pude lograr, espero que si puedes en el código que tu me mandastes puedas ayudarme a resolver la duda que tuve para así aprender ha tener otra solución diferente y con menos código, gracias y seguimos colaborando.

Imports MySql.Data.MySqlClient
Imports System.Data

Public Class busquedadeclientes
    Dim con As New MySqlConnection()
    Dim da As New MySqlDataAdapter()
    Dim ds As New DataSet()
    Dim dr As DataRow

    Private Sub busquedadeclientes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim I As Integer
        con = New MySqlConnection("server=xxx;database=xxx;uid=xxx;pwd=xxx;")
        da = New MySqlDataAdapter("select concat(Apellido_paterno,' ', Apellido_materno,' ', Nombres) as na, No_credencial from registrodeclientes order by Apellido_paterno asc;", con)
        da.Fill(ds, "registrodeclientes")
        If ds.Tables("registrodeclientes").Rows.Count > 0 Then
            For I = 0 To ds.Tables("registrodeclientes").Rows.Count - 1
                dr = ds.Tables("registrodeclientes").Rows(I)
                Me.cselecciondelcliente.Text = ""
                Me.cselecciondelcliente.DataSource = ds.Tables("registrodeclientes").DefaultView
                cselecciondelcliente.ValueMember = "No_credencial"
                cselecciondelcliente.DisplayMember = "na"
             Next
        End If
    End Sub

    Private Sub bbuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bbuscar.Click
        Me.tnocredencial.Text = Me.cselecciondelcliente.SelectedValue
    End Sub

    Private Sub bsalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bsalir.Click
        Me.Close()
    End Sub
End Class

dlplenin

  • Miembro activo
  • **
  • Mensajes: 44
  • Nacionalidad: ec
    • Ver Perfil
Re: Búsqueda de registro.
« Respuesta #4 en: Jueves 17 de Septiembre de 2009, 06:07 »
0
Hola, me alegro q te haya servido

se me ocurre lo siguiente si quieres mejor la estetica del combobox (y asi te queda una aplicación mas intuitiva):

Imports MySql.Data.MySqlClient
Imports System.Data

Public Class Form2

    Dim con As New MySqlConnection()
    Dim da As New MySqlDataAdapter()
    Dim ds As New DataSet()
    Dim dr As DataRow


    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        con = New MySqlConnection("datasource=localhost;username=root;password=root;database=prueba")
        da = New MySqlDataAdapter("select concat(apellido ,' ',nombre) as na,id from tableprueba order by apellido asc", con)
        da.Fill(ds, "tableprueba")
        ''''adicion de registro personalizado
        Dim row As DataRow
        row = ds.Tables("tableprueba").NewRow
        row("id") = "-1"
        row("na") = "<Escoja el usuario>"
        ds.Tables("tableprueba").Rows.InsertAt(row, 0)
        ''''fin adicion de registro personalizado
        Me.cselecciondelcliente.DataSource = ds.Tables("tableprueba").DefaultView
        cselecciondelcliente.ValueMember = "id"
        cselecciondelcliente.DisplayMember = "na"
    End Sub

    Private Sub btn_value_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_value.Click
        ' aqui deberias validar que el valor obtenido sea diferente de "-1", ya q este valor es el de la row personalizada
        Me.txt_value.Text = Me.cselecciondelcliente.SelectedValue
    End Sub
End Class


saludos

elultimoguerrero

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Búsqueda de registro.
« Respuesta #5 en: Viernes 18 de Septiembre de 2009, 04:06 »
0
Hola dlplenin, amigos del foro, te agradezco dlplenin por ese nuevo código que me mandastes, se ve mejor el estilo, lo probé y definitivamente lo voy a dejar así, gracias por ayudarme, seguimos en contacto compareos, saludos.

dlplenin

  • Miembro activo
  • **
  • Mensajes: 44
  • Nacionalidad: ec
    • Ver Perfil
Re: Búsqueda de registro.
« Respuesta #6 en: Viernes 18 de Septiembre de 2009, 06:37 »
0
de nada elultimoguerrero, cuando se pueda aqui estare

saludos