• Viernes 8 de Noviembre de 2024, 16:08

Autor Tema:  Saber Si Select Encuentra Lo Q Busca  (Leído 2617 veces)

Sete

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Saber Si Select Encuentra Lo Q Busca
« en: Jueves 16 de Junio de 2005, 08:27 »
0
Saludos señores, les cuento, hice una consulta a una BD en access desde VB.NET, no me genera ningun error y por lo tanto deberia estar bien, pero el problema es q no se como hacer para saber si la consulta devuelve algun resultado, aqui les coloco el codigo:
Código: Text
  1.  
  2. ' VARIABLES
  3.  
  4. Private Conn As OleDbConnection
  5. Private DA As OleDbDataAdapter
  6. Private selectCMD As OleDbCommand
  7. Private DS As DataSet
  8.  
  9. 'En el Form
  10.  
  11. Conn = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\pruebasdeVB.NET\Almagro.mdb")
  12.  
  13. selectCMD = New OleDbCommand("SELECT Login, Pass FROM Usuario where (Login=@Login and Pass=@Pass)", Conn)
  14.  
  15. DA = New OleDbDataAdapter()
  16.  
  17. DA.SelectCommand = selectCMD
  18.  
  19. selectCMD.Parameters.Add("@Login", OleDbType.VarChar, 15).Value = txtLogin.Text
  20. selectCMD.Parameters.Add("@Pass", OleDbType.VarChar, 15).Value = txtPass.Text
  21.  
  22. MessageBox.Show("HAsta los Parametros.....Todo OK")
  23.  
  24. 'En el Boton
  25.  
  26. Dim custDS As DataSet = New DataSet()
  27. DA.Fill(custDS, "Customers")
  28. MessageBox.Show("Conuslta Realizada OK")
  29.  
  30.  

Como dato, todo esto ya lo habia echo, pero con el asistente, y como generaba tanto codigo q no entendia me decidi a hacerlo por mi cuenta, pero el problema es solo que no se q codigo colocar para ver si la consulta encuentra o no lo q anda buscando, para posteriormente dejar ingresar  o no a la aplicacion.

eso seria...gracias muchachos...y muchos saludos.

Güorker

  • Miembro MUY activo
  • ***
  • Mensajes: 383
    • Ver Perfil
Re: Saber Si Select Encuentra Lo Q Busca
« Respuesta #1 en: Jueves 16 de Junio de 2005, 08:42 »
0
Hola,

Si estas utilizado el visual studio para programar, te sugiero que pongas un punto de interrupcion justo antes del metodo Fill del DataAdpter.

Cuando ejecutes tu programite y se pare en ese punto, vas ejecutando instruccion por instruccion hasta que se ejecute el metodo fill. Despues agregas el DataSet a la ventana de inspeccion y miras en sus propiedades para ver cuantas filas tiene la 1ª tabla del Dataset y los valores que tiene.

Supongo que así puedes saber lo que te devuelve la consulta.

Suerte
[size=109]Ondo ibili, gutxi gastau eta bueltak amari[/size]
[size=109]Pasalo bien, gasta poco y las vueltas a tu madre[/size]

Knapp

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Re: Saber Si Select Encuentra Lo Q Busca
« Respuesta #2 en: Jueves 16 de Junio de 2005, 14:33 »
0
para saber si tu dataset tiene datos o no puedes hacer la siguiente comprovación:

dataset.table(0).rows.count > 0 <- devuelve datos

por otra parte si lo único que quieres es comprobar si la select te devuelve datos y punto... en lugar de utilizar un dataadapter y cargar los datos en el dataset.. lo que haría es un select count y lo ejecutaria con el sqlcommand.executeScalar

Salut  :kicking:

senzao18

  • Miembro HIPER activo
  • ****
  • Mensajes: 553
    • Ver Perfil
Re: Saber Si Select Encuentra Lo Q Busca
« Respuesta #3 en: Jueves 16 de Junio de 2005, 16:21 »
0
Estoy de acuerdo con Knapp.

Tambien puedes utilizar un DataReader si la consulta solo te regresa un registro cuando tiene datos y usarias la propiedad hasrow.


Para un login yo usaria sqlcommand.executeScalar
---------------------------------------
Erick Aragon Zepeda
Dessarrollo de Aplicaciones .NET
http]
Blog de Articulos
Mi Blog
NoSolocodigo -->

Sete

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Saber Si Select Encuentra Lo Q Busca
« Respuesta #4 en: Jueves 16 de Junio de 2005, 17:55 »
0
Cita de: ""senzao18""
Para un login yo usaria sqlcommand.executeScalar

Como obviamente soy nueo en esto, y si ustedes dicen q es mejor ejecutar un executeScalar, entonces mejor lo intentare hacer asi, oigan no tendran un ejemplito de este tipode consultas por ahí??   ;)
 :rolleyes:


Saludos.    

 :hola:

Sete

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Saber Si Select Encuentra Lo Q Busca
« Respuesta #5 en: Viernes 17 de Junio de 2005, 01:09 »
0
Ya definitivamente les hice casi y me meti con el ExcecuteScalar, la cosa es q me quedo de la siguiente forma:

Código: Text
  1.  
  2. ' Variables
  3. Private Conn As OleDbConnection
  4.     Private scalarCMD As OleDbCommand
  5.  
  6. Conn = New OleDb.OleDbConnection(&#34;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:&#092;pruebasdeVB.NET&#092;-==Ultimo==-&#092;Login.0.1.1&#092;bin&#092;Almagro.mdb&#34;)
  7.         scalarCMD = New OleDbCommand(&#34;SELECT Login, Pass FROM Usuario where (Login=@Login and Pass=@Pass)&#34;, Conn)
  8.  
  9. Dim respuesta As String
  10.  
  11.         Conn = New OleDb.OleDbConnection(&#34;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:&#092;pruebasdeVB.NET&#092;-==Ultimo==-&#092;Login.0.1.1&#092;bin&#092;Almagro.mdb&#34;)
  12.         scalarCMD = New OleDbCommand(&#34;SELECT Login, Pass FROM Usuario where (Login=@Login and Pass=@Pass)&#34;, Conn)
  13.  
  14.         scalarCMD.Parameters.Add(&#34;@Login&#34;, OleDbType.VarChar, 15).Value = txtLogin.Text
  15.         scalarCMD.Parameters.Add(&#34;@Pass&#34;, OleDbType.VarChar, 15).Value = txtPass.Text
  16.  
  17.         MessageBox.Show(&#34;Hasta los Parametros.....Todo OK&#34;)
  18.         Conn.Open()
  19.         respuesta = scalarCMD.ExecuteScalar()
  20.         Conn.Close()
  21.  
  22.         MessageBox.Show(respuesta)
  23.  

El problema es q al final solo me entrega el Login y no se como hacerlo para q me entregue la Pass y una vez echo esto q hacer para dejar Ingresar a la aplicacion ..Bueno eso seria.

Sete

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Saber Si Select Encuentra Lo Q Busca
« Respuesta #6 en: Viernes 17 de Junio de 2005, 02:04 »
0
EUREKA!!

ya señores encontre como asignar los resultados a una variable...lo hice así:

Código: Text
  1. scalarCMD.Parameters.Add(&#34;@Login&#34;, OleDbType.VarChar, 15).Value = txtLogin.Text
  2.         scalarCMD.Parameters.Add(&#34;@Pass&#34;, OleDbType.VarChar, 15).Value = txtPass.Text
  3.  
  4.         MessageBox.Show(&#34;Hasta los Parametros.....Todo OK&#34;)
  5.         Conn.Open()
  6.         scalarCMD.ExecuteScalar()
  7.  
  8.         respLogin = scalarCMD.Parameters(&#34;@Login&#34;).Value()
  9.         respPass = scalarCMD.Parameters(&#34;@Pass&#34;).Value()
  10.         Conn.Close()
  11.  
  12.         MessageBox.Show(respLogin)
  13.         MessageBox.Show(respPass)
  14.  

Ahora haria un if preguntando si las respLogin y respPass, son igua les txtLogin.text y txtPass.text, para abriri la aplicacion o cerrarla, pero sera la forma mas indicada?? o abra alguna mas eficiente??

Saludos señores y gracias por la ayuda.
=)

senzao18

  • Miembro HIPER activo
  • ****
  • Mensajes: 553
    • Ver Perfil
Re: Saber Si Select Encuentra Lo Q Busca
« Respuesta #7 en: Viernes 17 de Junio de 2005, 17:01 »
0
Yo lo que haria es regresar un valor true si la consulta encuentra registros con el procedimiento almacenado y tomar la variable.

Código: Text
  1.  
  2. If (select count(*) from usuarios donde usuario y contraseña igual a algo)&#62;0
  3.             set @bandera =True
  4. else
  5.       set @bandera =False
  6.  
  7.  
  8. select @bandera from tabla
  9.  
  10.  

O declarar un parametro de tipo output como tu le haces, pero que no sea el usuario y  contrasña.
---------------------------------------
Erick Aragon Zepeda
Dessarrollo de Aplicaciones .NET
http]
Blog de Articulos
Mi Blog
NoSolocodigo -->