Foro de elhacker.net

Programación => .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
  1. Private Sub btn_Buscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Buscar.Click
  2.        Dim nombre, dni As String
  3.        Dim edad As Integer
  4.  
  5.        For i = 0 To UsuTableAdapter.GetData.Rows.Count - 1
  6.            nombre = UsuTableAdapter.GetData.Rows(i).Item(0)
  7.            dni = UsuTableAdapter.GetData.Rows(i).Item(1)
  8.            edad = UsuTableAdapter.GetData.Rows(i).Item(2)
  9.            If dni <> txt_DNI_Buscar.Text Then
  10.                fila = i
  11.                MessageBox.Show("DNI encontrado: " & UsuTableAdapter.GetData.Rows(i).Item(1), "Informacion", MessageBoxButtons.OK, MessageBoxIcon.Information)
  12.                lbl_DNI_Encontrado.ForeColor = Color.Green
  13.  
  14.                lbl_Nombre.Text = nombre
  15.                lbl_DNI.Text = dni
  16.                lbl_Nombre.Text = edad
  17.                Exit Sub
  18.            Else
  19.                fila = i
  20.                MessageBox.Show("ERROR")
  21.                'Exit Sub
  22.            End If
  23.        Next
  24.    End Sub
  25.  

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
Código
  1. Private Sub btn_Buscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Buscar.Click
  2.        Dim nombre, dni As String
  3.        Dim edad As Integer
  4.  
  5.        For i = 0 To UsuTableAdapter.GetData.Rows.Count - 1
  6.            nombre = UsuTableAdapter.GetData.Rows(i).Item(0)
  7.            dni = UsuTableAdapter.GetData.Rows(i).Item(1)
  8.            edad = UsuTableAdapter.GetData.Rows(i).Item(2)
  9.            If dni <> txt_DNI_Buscar.Text Then
  10.                fila = i
  11.                MessageBox.Show("DNI encontrado: " & UsuTableAdapter.GetData.Rows(i).Item(1), "Informacion", MessageBoxButtons.OK, MessageBoxIcon.Information)
  12.                lbl_DNI_Encontrado.ForeColor = Color.Green
  13.  
  14.                lbl_Nombre.Text = nombre
  15.                lbl_DNI.Text = dni
  16.                lbl_Nombre.Text = edad
  17.                Exit Sub
  18.            Else
  19.                fila = i
  20.                MessageBox.Show("ERROR")
  21.                'Exit Sub
  22.            End If
  23.        Next
  24.    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
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