Usuario
Filtro para SELECT

Pregunta
-
Buenas, como lo dice el titulo, estoy queriendo hacer un filtro para una consutla SQL, basicamente necesito lo siguiente:
Tengo un boton en el cual ejecuto un Select con determinada busqueda, lo que estoy intendando hacer es que, si escribo algo por ejemplo en el textbox id o nombre, me filtre la query dependiendo del dato que escribí.
Me recomendaron lo siguiente, pero no estoy pudiendo hacerlo funcionar:
Dim sql As String
Dim da As New Odbc.OdbcDataAdapter
Dim ds As New DataSet
Dim nomadi, idadi As New Odbc.OdbcParameter
nomadi.DbType = DbType.String
nomadi.Value = txtnombreadicional.Text
comando.Parameters.Add(nomadi)
idadi.DbType = DbType.String
idadi.Value = txtidadicional.Text
comando.Parameters.Add(idadi)
If nomadi.Value <> Nothing Then
Filter = "Where adi_nombre = ?"
End If
Try
sql = "SELECT id_adicional ID, adi_nombre Nombre, adi_costodiario Diario$, adi_activo Activo FROM ADICIONAL" if((filter<>nothing), filter & "AND", "WHERE")El filter que esta en negrita me da el siguiente error: "overload resolution failed because no accessible 'Filter' accepts this number of arguments"
Y esto "if((filter<>nothing), filter & "AND", "WHERE")" me dice "End of statemend expected"
Espero puedan ayudarme, de ante mano, Muchas gracias!
- Cambiado Enrique M. Montejo sábado, 30 de septiembre de 2017 16:08 Pregunta relacionada con el acceso a datos mediante ODBC.
Todas las respuestas
-
Podrias hacer un procedimiento almacenado
CREATE PROCEDURE sp_Filtrar ( @TEXTO1 VARCHAR(200) @TEXTO2 VARCHAR(200) ) AS SET NOCOUNT; BEGIN DECLARE @SENTENCIA = '', DECLARE @CONSULTA VARCHAR(1000) = 'SELECT * FROM TABLA' IF @TEXTO1 <> '' AND @TEXTO2 <> '' BEGIN SET @SENTENCIA += ' (NOMBRE LIKE ''%' + @TEXTO1 + '% OR NOMBRE LIKE ''%' + @TEXTO2 + '%)''' END ELSE IF @TEXTO1 <> '' BEGIN SET SENTENCIA += ' NOMBRE LIKE ''%' + @TEXTO1 + '%''' END ELSE IF @TEXTO2 <> '' BEGIN SET SENTENCIA += ' NOMBRE LIKE ''%' + @TEXTO2 + '%''' END IF @SENTENCIA <> '' BEGIN SET @CONSULTA += ' WHERE ' + @SENTENCIA END EXEC (@CONSULTA) END
Mandar los parametros y te devuelva lo que necesitas.
Aqui ya se topo algo parecido:
¿Cómo sería una condición Where para mostrar datos entre dos letras? por ejemplo...
Vladimir Miranda Desarrollador Jr.
- Propuesto como respuesta Juan Mondragón jueves, 28 de septiembre de 2017 18:17
-
Buenas, como lo dice el titulo, estoy queriendo hacer un filtro para una consutla SQL, basicamente necesito lo siguiente:
Tengo un boton en el cual ejecuto un Select con determinada busqueda, lo que estoy intendando hacer es que, si escribo algo por ejemplo en el textbox id o nombre, me filtre la query dependiendo del dato que escribí.
Me recomendaron lo siguiente, pero no estoy pudiendo hacerlo funcionar:
Dim sql As String
Dim da As New Odbc.OdbcDataAdapter
Dim ds As New DataSet
Dim nomadi, idadi As New Odbc.OdbcParameter
nomadi.DbType = DbType.String
nomadi.Value = txtnombreadicional.Text
comando.Parameters.Add(nomadi)
idadi.DbType = DbType.String
idadi.Value = txtidadicional.Text
comando.Parameters.Add(idadi)
If nomadi.Value <> Nothing Then
Filter = "Where adi_nombre = ?"
End If
Try
sql = "SELECT id_adicional ID, adi_nombre Nombre, adi_costodiario Diario$, adi_activo Activo FROM ADICIONAL" if((filter<>nothing), filter & "AND", "WHERE")El filter que esta en negrita me da el siguiente error: "overload resolution failed because no accessible 'Filter' accepts this number of arguments"
Y esto "if((filter<>nothing), filter & "AND", "WHERE")" me dice "End of statemend expected"
Espero puedan ayudarme, de ante mano, Muchas gracias!
Y por que no filtras localmente? en tu cliente ya que usar constantemente LIKE en le servidor dismuye su rendimiento. Que necesitas filtrar? de cuantos registros aprox filtras?
soy un vendido pero algo vendo &amp;lt;br/&amp;gt; Si soy divertido pero esto es serio &amp;lt;br/&amp;gt; Vivo riendo pero eso no quiere decir que nada me importa &amp;lt;br/&amp;gt; Ya pase las malas, me tocan las buenas, por eso empece a disfrutar ♪♫
- Editado D A M N 1 S e l f jueves, 28 de septiembre de 2017 15:15
- Propuesto como respuesta Juan Mondragón jueves, 28 de septiembre de 2017 18:17
-