Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: andaluz en 30 Mayo 2019, 08:27 am



Título: problema en código buscar
Publicado por: andaluz en 30 Mayo 2019, 08:27 am
Hola a todos,

Tengo un problemilla a la hora de presentar los usuarios. Les explico, es sencillo:

A través de un ComboBox (cmb_Apell_Nomb_busc) selecciono el usuario y luego tengo un cuadro de lista (Usu_Listar) en el cual muestro todos los usuarios y un bonton de buscar (btn_Usuario_Buscar).

Lo que quiero hacer es que al seleccionar el usuario en el ComboBox en el cuadro de lista solo me muestre el usuario que he seleccionado.

Aquí les dejo el código que he implementado.

Código
  1. Private Sub btn_Usuario_Buscar_Click()
  2.  
  3.    Dim consulta As String
  4.  
  5.    If IsNull(Me.cmb_Apell_Nomb_busc) Then
  6.        MsgBox "Seleccione un usuario de la lista", vbExclamation, "Aviso"
  7.    Else
  8.        consulta = "SELECT Nombre, Apellidos FROM Usuarios WHERE Apellidos= '" & Me.cmb_Apell_Nomb_busc2 & "*'"
  9.        ' MsgBox (consulta)
  10.        Me.Usu_Listar.RowSource = consulta
  11.    End If
  12.  
  13. End Sub
  14.  

He querido ver lo que me arroja consulta pero me da error.

Un saludo y gracias de antemano,


Título: Re: problema en código buscar
Publicado por: tincopasan en 31 Mayo 2019, 04:18 am
¿ y qué error da?


Título: Re: problema en código buscar
Publicado por: andaluz en 31 Mayo 2019, 12:29 pm
no me arroja ningún error, en el msgbox me muestra la consulta.

Código
  1.  
  2. SELECT Nombre, Apellidos FROM Usuarios WHERE Apellidos= ""
  3.  
  4.  

no me arroja ningún dato de la tabla Usuarios


Título: Re: problema en código buscar
Publicado por: Eleкtro en 31 Mayo 2019, 16:06 pm
Vamos a ver, por que aparte de no dar información esencial sobre el error, tampoco te explicas muy bien...

A través de un ComboBox (cmb_Apell_Nomb_busc) selecciono el usuario

Define 'usuario'. ¿Estás seleccionando un nombre?, ¿apellidos?, ¿o el nombre completo incluyendo los apellidos?...

En el primer y último caso, el motivo por el cual la consula no te devuelve ningún resultado sería muy obvio, puesto que solamente estás comprobando la propiedad 'Apellidos'...

Citar
Código:
... WHERE Apellidos= '" & Me.cmb_Apell_Nomb_busc2 & "*'

De todas formas, ¿como te va a funcionar eso?, ¡si le estás pasando un ComboBox!, o al menos eso se intuye por el nombre, ya que no especificas lo necesario. No sabemos que estás seleccionando en el control 'cmb_Apell_Nomb_busc', ni que tipo es "cmb_Apell_Nomb_busc2", que por el nombre parece otro ComboBox distinto...

Aparte, en ese código tuyo que he citado, la posición del asterisco/wild card está mal. El asterisco debe estar encerrardo entre las comillas dobles, no entre las comillas simples. De todas formas eso no va a solucionar el problema, por que no estás utilizando el operador adecuado para buscar una cadena de texto parcial mediante asteriscos...

Prueba usando el operador CONTAINS:
  • LINQ - Quantifier Operations (https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/quantifier-operations)
  • http://dotnetpattern.com/linq-query-operators (http://LINQ Query Operators)
Código:
SELECT Nombre, Apellidos FROM Usuarios WHERE CONTAINS(Apellidos, "*apellido parcial*")

o puedes probar también con el operador LIKE...
Código:
SELECT Nombre, Apellidos FROM Usuarios WHERE Apellidos LIKE "%apellido parcial%")

Saludos.


Título: Re: problema en código buscar
Publicado por: PirSys en 29 Agosto 2019, 19:02 pm
Vamos a ver, por que aparte de no dar información esencial sobre el error, tampoco te explicas muy bien...

Define 'usuario'. ¿Estás seleccionando un nombre?, ¿apellidos?, ¿o el nombre completo incluyendo los apellidos?...

En el primer y último caso, el motivo por el cual la consula no te devuelve ningún resultado sería muy obvio, puesto que solamente estás comprobando la propiedad 'Apellidos'...

De todas formas, ¿como te va a funcionar eso?, ¡si le estás pasando un ComboBox!, o al menos eso se intuye por el nombre, ya que no especificas lo necesario. No sabemos que estás seleccionando en el control 'cmb_Apell_Nomb_busc', ni que tipo es "cmb_Apell_Nomb_busc2", que por el nombre parece otro ComboBox distinto...

Aparte, en ese código tuyo que he citado, la posición del asterisco/wild card está mal. El asterisco debe estar encerrardo entre las comillas dobles, no entre las comillas simples. De todas formas eso no va a solucionar el problema, por que no estás utilizando el operador adecuado para buscar una cadena de texto parcial mediante asteriscos...

Prueba usando el operador CONTAINS:
  • LINQ - Quantifier Operations (https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/quantifier-operations)
  • http://dotnetpattern.com/linq-query-operators (http://LINQ Query Operators)
Código:
SELECT Nombre, Apellidos FROM Usuarios WHERE CONTAINS(Apellidos, "*apellido parcial*")

o puedes probar también con el operador LIKE...
Código:
SELECT Nombre, Apellidos FROM Usuarios WHERE Apellidos LIKE "%apellido parcial%")

Saludos.



Aqui la solucion propuesta por el usuario.

o puedes probar también con el operador LIKE...
Código:
SELECT Nombre, Apellidos FROM Usuarios WHERE Apellidos LIKE "%apellido parcial%")