Visual Basic.NET - Problema con filter del dataset

 
Vista:

Problema con filter del dataset

Publicado por lesus (4 intervenciones) el 18/10/2007 10:19:05
Hola buenas,
Tengo un problema con las consultas de los dataset de un proyecto que estoy realizando, a ver si alguien me puede ayudar.
Tengo un formulario con varios dropdowlist y textbox para realizar una búsqueda, pero el problema aparece con los primeros. El usuario seleccionará un dato que quiera por cada uno de los drop, puede no seleccionar en ninguno o seleccionar en todos. Siempre un dato por cada drop. Y cuando ya tenga todas las opciones que quiera seleccionar hace la búsqueda. Ahora entramos en el dataset... y en el problema.
La consulta sql recibe los parámetros que le pasamos del formulario anterior. Cuando recibe los datos de los textbox no hay problema, el filter será un.. " Like '%' + @textbox + '%' ", pero cuando quiero pasar el dato que recibo de uno de los drop es un... " Like @datodrop ", sin el "%", porque el dato que obtengo es exactamente el que quiero utilizar para la búsqueda. Bueno, pues si ese parámetro recibe un dato no hay problema, lo recoge bien, pero si el usuario, en uno de esos drops no ha seleccionado nada, la consulta no recibe nada para ese dato, y por lo tanto me saca vacía la tabla con el resultado. Es decir, que mientras el usuario seleccione un dato en cada dropdownlist la consulta se realiza perfectamente, pero si se queda uno solo sin seleccionar entonces no habrá tabla final porque sale vacía.
Espero haberme explicado un poco... qué hago? no puedo poner " Like @datodrop + '%' " porque me sacaría todos los datos que empezaran como "datodrop", y yo quiero exclusivamente "datodrop".
Alguna sugerencia? Gracias..
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema con filter del dataset

Publicado por OliBeer (391 intervenciones) el 18/10/2007 15:42:02
Hola!!

Hazlo agregando algo más o menos asi:

WHERE ... AND (Dato = @DatoDrop OR 0=@DatoDrop)

Agrega uno de esos por cada Drop que utilices.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con filter del dataset

Publicado por lesus (4 intervenciones) el 18/10/2007 16:05:25
Hola de nuevo..
No entiendo qué es ese "Dato". "@DatoDrop" es el dato seleccionado del dropdownlist pero ese "Dato" no sé de dónde sale.. Estoy utilizando C# (sí, me he equivocado de foro.. mil perdones), podría tener eso algo que ver? yo sólo puedo jugar con datos de entrada o de salida. A qué te refieres con él?
Gracias..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con filter del dataset

Publicado por OliBeer (391 intervenciones) el 18/10/2007 21:05:05
Hola!!!

Cuando tú llenas el DropDownList, supongo que queda algo como esto:

Text = "Seleccionar" Value = 0
Text = "Opcion 1" Value = 1
Text = "Opcion 2" Value = 2
Text = "Opcion 3" Value = 3
Text = "Opcion 4" Value = 4
.
.
.

Entonces cuando el usuario deja seleccionado "Seleccionar" en el Query hace el filtro de la siguiente manera:

WHERE Tabla.Campo = " & Me.ddlSeleccionar.SelectValue & "

y eso se traduce a:

WHERE Tabla.Campo = 0

y como en "Tabla.Campo" no hay ningún registro con "0" por eso no te devuelve nada.

Pero lo que le vas a agregar, para cuando deje seleccionado "Seleccionar" es:

WHERE (Tabla.Campo = " & Me.ddlSeleccionar.SelectValue & " AND 0 = " & Me.ddlSeleccionar.SelectValue & ")

Para que cuando deje seleccionado "Seleccionar" cuyo valor es "0" por cuestion de "Or" ignore el Tabla.Campo = " & Me.ddlSeleccionar.SelectValue & " y te devuelva todo si importar el filtro.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con filter del dataset

Publicado por lesus (4 intervenciones) el 22/10/2007 10:24:24
Hola de nuevo,
El problema no viene porque haya datos que no se envíen porque en el dropdownlist no se seleccione nada, pongo un ejemplo:
Tengo un dropdownlist con datos que relleno a través de un dataset. Estos datos son, por ejemplo: Datovacío, Dato I, Dato II, Dato III, Dato IV, DATO V.... Selecciono el primero, Dato I, y hago la búsqueda. Y ahora, en lugar de sacarme un listado utilizando como referencia sólo el parámetro que le he seleccionado, me saca un listado con todo lo que se refiere a "Dato I + cualquier cosa". Es decir, saca Dato I, Dato II, Dato III y Dato IV, porque comienzan todos igual, por "Dato I". Esto por qué lo hace? pues porque en el LIKE le pongo.. " LIKE @ID_DATO + '%' ". Y eso es lo que no quiero, así que entonces pienso.. cuál es la solución? pues digo yo que quitarle el " + '%' " ( que es ' + cualquier cosa ' ) y así sólo me cogerá ID_DATO. Entonces lo quito y... qué sucede? tabla vacía. Es como si no supiera sacar la consulta con un dato exacto y tuviera que ponerle por narices el ' + %' detrás. Pero así la consulta no sale como tiene que salir, porque puede sacar más datos de los que se requieren.
Así que mi pregunta es.. cómo se hace?? cómo hago para que recoja ese dato exacto y saque la consulta bien? Porque yo ya no sé cómo hacerlo..
Gracias por la ayuda, Olibeer! Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con filter del dataset

Publicado por lesus (4 intervenciones) el 24/10/2007 12:11:27
Bueno, finalmente creo que me ha servido lo que decía OliBeer, no lo tengo muy probado pero parece que va tirando. Sólo he modificado el 0 en los casos en los que el valor a pasar es un nvarchar y he puesto " =dato OR @datodrop = '' (comillas simples) ". No sé si tendrá que ver o no, pero antes me había saltado un error y lo he cambiado, como me tiene un poco harta pues no le hago mucho caso ya. Con más ganas probaré a ver si el 0 me sirve para todos los casos otra vez.
Gracias OliBeer! Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar