Test Foro de elhacker.net SMF 2.1

Programación => Programación General => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: andaluz en 24 Febrero 2012, 18:09 PM

Título: Buscar dentro de una base de datos
Publicado por: andaluz en 24 Febrero 2012, 18:09 PM
hola tengo un pequeño problemilla el cual al recorren una base de datos que ya tengo creada solo me accede al primer registro.

les pongo el codigo haber si encuentran algo mal y me pueden ayudar.

Código (vbnet) [Seleccionar]

Private Sub btn_Buscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Buscar.Click
        Dim nombre, dni As String
        Dim edad As Integer

        For i = 0 To UsuTableAdapter.GetData.Rows.Count - 1
            nombre = UsuTableAdapter.GetData.Rows(i).Item(0)
            dni = UsuTableAdapter.GetData.Rows(i).Item(1)
            edad = UsuTableAdapter.GetData.Rows(i).Item(2)
            If dni <> txt_DNI_Buscar.Text Then
                fila = i
                MessageBox.Show("DNI encontrado: " & UsuTableAdapter.GetData.Rows(i).Item(1), "Informacion", MessageBoxButtons.OK, MessageBoxIcon.Information)
                lbl_DNI_Encontrado.ForeColor = Color.Green

                lbl_Nombre.Text = nombre
                lbl_DNI.Text = dni
                lbl_Nombre.Text = edad
                Exit Sub
            Else
                fila = i
                MessageBox.Show("ERROR")
                'Exit Sub
            End If
        Next
    End Sub


saludos
Título: Re: Buscar dentro de una base de datos
Publicado por: andaluz en 24 Febrero 2012, 19:17 PM
tiene algun fallo el código???
Título: Re: Buscar dentro de una base de datos
Publicado por: andaluz en 24 Febrero 2012, 19:58 PM
me gustaria saber porque si le introduzco un dni correcto me devuelve la misma información que si le introduzco un dni incorrecto???

espero que me puedan ayudar!!!!

saludos
Título: Re: Buscar dentro de una base de datos
Publicado por: Novlucker en 24 Febrero 2012, 23:07 PM
Cita de: andaluz en 24 Febrero 2012, 18:09 PM
Código (vbnet,9) [Seleccionar]
Private Sub btn_Buscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Buscar.Click
        Dim nombre, dni As String
        Dim edad As Integer

        For i = 0 To UsuTableAdapter.GetData.Rows.Count - 1
            nombre = UsuTableAdapter.GetData.Rows(i).Item(0)
            dni = UsuTableAdapter.GetData.Rows(i).Item(1)
            edad = UsuTableAdapter.GetData.Rows(i).Item(2)
            If dni <> txt_DNI_Buscar.Text Then
                fila = i
                MessageBox.Show("DNI encontrado: " & UsuTableAdapter.GetData.Rows(i).Item(1), "Informacion", MessageBoxButtons.OK, MessageBoxIcon.Information)
                lbl_DNI_Encontrado.ForeColor = Color.Green

                lbl_Nombre.Text = nombre
                lbl_DNI.Text = dni
                lbl_Nombre.Text = edad
                Exit Sub
            Else
                fila = i
                MessageBox.Show("ERROR")
                'Exit Sub
            End If
        Next
    End Sub

Saludos
Título: Re: Buscar dentro de una base de datos
Publicado por: andaluz en 25 Febrero 2012, 10:40 AM
este codigo es el mismo que he publicado yo en primer lugar o tiene algun cambio??
Título: Re: Buscar dentro de una base de datos
Publicado por: Novlucker en 25 Febrero 2012, 19:08 PM
Te he marcado la línea incorrecta, aunque todo el else tampoco es necesario

Saludos
Título: Re: Buscar dentro de una base de datos
Publicado por: andaluz en 25 Febrero 2012, 20:14 PM
porque esta incorrecta esa linea???
Título: Re: Buscar dentro de una base de datos
Publicado por: Novlucker en 25 Febrero 2012, 20:55 PM
Si estas buscando el DNI, por que la comparación es "distinto" (<>)?

Saludos
Título: Re: Buscar dentro de una base de datos
Publicado por: andaluz en 25 Febrero 2012, 20:59 PM
eso me he dado cuenta, pero esque si le pongo igual = me salga al else y si le pongo dintinto <> me lo hace bien, es algo que no comprendo.

a que puede ser devido eso???

aunque ya he solucionado esa duda haciendo la busqueda de otra forma.

Saludos
Título: Re: Buscar dentro de una base de datos
Publicado por: Novlucker en 25 Febrero 2012, 21:02 PM
Te salta el ELSE porque tiene que ir recorriendo las filas hasta llegar a la correcta, cuando la encuentre ya no saltará. De cualquier modo, TODO el ELSE es incorrecto, no debería de ir.

Saludos
Título: Re: Buscar dentro de una base de datos
Publicado por: andaluz en 25 Febrero 2012, 21:13 PM
pero si le pongo = me salta directamente al else poniendole el dni correcto en el textbox
Título: Re: Buscar dentro de una base de datos
Publicado por: Novlucker en 25 Febrero 2012, 21:16 PM
Debuggealo

Saludos
Título: Re: Buscar dentro de una base de datos
Publicado por: andaluz en 25 Febrero 2012, 21:22 PM
lo he echo mostrandome por pantalla lo que van teniendo las variables, al ponerle el exit for o exit sub solo consigo que me almacene el valor de las celdas de la base de datos de la 1º iteracion y si le quito el exit for o exit sub me los muestra todos y me los almacena donde yo quiero.

el inconveniente lo tengo cuando yo quiero mostrar por ejemplo el valor de la iteracion 3.
Título: Re: Buscar dentro de una base de datos
Publicado por: Novlucker en 25 Febrero 2012, 22:03 PM
Con el distinto casi siempre va a caer en la primera iteración, con lo cual siempre obtiene el primero y corta.

Saludos
Título: Re: Buscar dentro de una base de datos
Publicado por: seba123neo en 26 Febrero 2012, 03:40 AM
porque no usas un datareader?
Título: Re: Buscar dentro de una base de datos
Publicado por: Novlucker en 26 Febrero 2012, 04:45 AM
Cita de: seba123neo en 26 Febrero 2012, 03:40 AM
porque no usas un datareader?

Además de que suponiendo que quiera seguir con el método actual, el método GetData del TableAdapter retorna un DataTable, y este último tiene un método Select, el cual permite incluir un filtro sin tener que recurrir al For :P

Saludos
Título: Re: Buscar dentro de una base de datos
Publicado por: andaluz en 26 Febrero 2012, 12:25 PM
como te comente en un mensaje anterior, ya lo he solucionado realizzndo una consulta, introduciendole la cadena de conexión con su correspondiente DataAdapter y su DataSet, solo que queria saber por que motivo no me funcionaba esta otra forma.

Saludos