Principales respuestas
Busqueda avanzada

Pregunta
-
Buenas tardes : bueno quiero realizar una busqueda avanzada de articulos por ejemplo y tengo una idea que creo que funcionara, paso a explicar a continuacion:
*en el sql server este es mi procedimiento almacenado:
-create proc BusquedaAvanzada
@nombre varchar(60)
as
select * from productos where nombreProducto like'%'+@nombre+'%'
como resultado me arrojara todo producto que contengan las letras de @nombre , si tengo estos productos
1.- televisor-lg, 2.- televisor-panasonic 3.- televisor-noc 4.- televisor-sony
si yo escribo en el textbox=" televisor" -como resultado me saldra los 4 productos q tengo
si yo escribo en el textbox= tv lg - como resultado no me arrojara ningun producto.
lo que quiero hacer es lo siguiente; que cada ves q escriba en el textbox una letra por programacion le agrege un comodin . ejemplo
si escribo en el textbox= tv lg --este enviara a mi procedimiento de la siguiente manera=
%t%v%l%g%, con esto si me arrojara como resultado de la busqueda lo siguiente:
1.- televisor-lg
agradeceria que me ayudaran con esto por favor , estare pendiente de sus respuestas.
Respuestas
-
pero en: cadena = string.Join("%", cadena.ToCharArray()); me indica que tiene algunos argumentos no validos
seguramente es porque espera una lista de string y no de char
solo para probar intenta
string cadena = "tv lg"; List<string> items = new List<string>(); foreach (char item in cadena) { items.Add(item.ToString()); } cadena = string.Join("%", items.ToArray());
o sea cada char habria que ponerlo como string para poder usar el join
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Marcado como respuesta Robin Ramirez jueves, 19 de julio de 2012 15:49
Todas las respuestas
-
la verdad no el veo mucho el sentido a lo que planteas, pero bueno podrias usar
string cadena = "tv lg";
string cadena = string.Join("%", cadena.ToCharArray())
Leandro Tuttini
Blog
Buenos Aires
Argentina- Editado Leandro TuttiniMVP miércoles, 18 de julio de 2012 23:18
-
hola leandro: gracias por la respuesta , inicialmente esto es mi codigo de busqueda en c#
public void BuscarProductos() {
objBusnomprod_BE.PNom_prod = textBox1.Text; // tv lg
DataSet ds = new DataSet();
ds = objBusProducto_BL.consultarproducto(objBusnomprod_BE);
dataGridView1.DataSource = ds.Tables[0];
}de acuerdo a tu respuesta me indicas que lo trabaje de esta manera:
public void BuscarProductos() {
string cadena=textBox1.Text;
cadena = string.Join("%", cadena.ToCharArray()); // asumo q me aparece : "%t%v%l%g"
objBusnomprod_BE.PNom_prod = cadena;
DataSet ds = new DataSet();
ds = objBusProducto_BL.consultarproducto(objBusnomprod_BE);
dataGridView1.DataSource = ds.Tables[0];
}pero en: cadena = string.Join("%", cadena.ToCharArray()); me indica que tiene algunos argumentos no validos
- Editado Robin Ramirez jueves, 19 de julio de 2012 14:37
-
Hola Lenin,
Te recomendaría que si estás utilizando SQL Server, le des un vistazo a FullTextSearch. Creo que te podría servir de ayuda.
Saludos
Javier Torrecilla
Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
Si la respuesta te ha sido util Votala.
Mi Blog: Jtorrecilla
Enlace a Faq de Winforms en Ingles Muy bueno
TabControl con Mejoras -
la verdad no el veo mucho el sentido a lo que planteas, pero bueno podrias usar
string cadena = "tv lg";
string cadena = string.Join("%", cadena.ToCharArray())
----------------------------------------------------------------------
Lo que pasa leandro es lo siguiente tengo productos con nombre muy largos ejm:
1.- PISO-FSB-SOLUBLE SALT-W6S122-HUESO-60X60 1ERA
y lo que propongo es que el vendedor como no sabe todo el nombre completo con solo escribir parte de ello como "122 hue 60x60" le arroge como resultado el producto ya entes mencionado, por ahora creo que lo que propuse es lo mas adecuado para eso ya que el el sql server si corre, y creo q yo debo enviar cada letra acompañado de un comodin para q realice la busqueda. tal ves halla otra opcion.pero en mente solo veo eso por ahora. espero me entiendas lo que trato decir ...
- Editado Robin Ramirez jueves, 19 de julio de 2012 14:47
-
pero en: cadena = string.Join("%", cadena.ToCharArray()); me indica que tiene algunos argumentos no validos
seguramente es porque espera una lista de string y no de char
solo para probar intenta
string cadena = "tv lg"; List<string> items = new List<string>(); foreach (char item in cadena) { items.Add(item.ToString()); } cadena = string.Join("%", items.ToArray());
o sea cada char habria que ponerlo como string para poder usar el join
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Marcado como respuesta Robin Ramirez jueves, 19 de julio de 2012 15:49
-
Como han mencionado anteriormente me parece que es una sobre carga estar lanzando este tipo de querys al servidor, pero si igual quieres hacerlo debes implementar algo como lo siguiente:
StringBuilder sb = new StringBuilder(); sb.Append("%"); for (int i = 0; i < cadena.Length; i++) { if (cadena[i] != ' ') sb.Append(cadena[i]); sb.Append("%"); }
Nuevamente, no es la mejor práctica, pero creo que es lo que estás pidiendo.
EDICIÓN: finalmente utilizas sb.ToString() como la cadena de búsqueda.
Saludos
Eliel Aguilera Microsoft Student Partner - Venezuela
- Editado Eliel Aguilera jueves, 19 de julio de 2012 15:14 Olvidé colocar la última línea del código
-
Un pequeño inciso, yo he estado añadiendo mejoras en la web de administracion de mi empresa. Tambien necesitaba un buscador para buscar parciales de nombres (apellidos incluido) de personas.. no es lo mismo Jose Maria, que Jose M. etc... Implemente algo parecido a lo que propone Lenin, pero la unica diferencia es que yo no lanzaba la query hasta que el usuario pulsaba buscar.
Puede ser bastante desesperante para un usuario que cada tecla que pulse en un Textbox tenga que esperar 1-2 segundos... (esperemos que haya algo de ajax o jquery.. sino la cosa es mortal..)
saludos
-
-
Lenin que tipo de Base de Datos estás utilizando?
Javier Torrecilla
Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
Si la respuesta te ha sido util Votala.
Mi Blog: Jtorrecilla
Enlace a Faq de Winforms en Ingles Muy bueno
TabControl con Mejoras -