Visual Basic - Variables en Instrucción SQL

Life is soft - evento anual de software empresarial
 
Vista:

Variables en Instrucción SQL

Publicado por Angel (49 intervenciones) el 12/05/2003 02:59:20
Estoy trabajando en un programa en VB con BD en Access. Quiero poner un fitro en el programa, para que el usuario pueda poner:

SELECT * FROM dinero WHERE (tablaqueseleccionen) (operadorlogico que ellos escojan) (valor que ellos quieran buscar)

En cifras quedaría

SELECT * FROM dinero WHERE dinero = 10
SELECT * FROM dinero WHERE monedero > 10
(tabla escogida) (operacional escogido) (cifra que busca)

Como puedo poner estas tres partes en variables ?

Pense que quedaría algo así:

SELECT * FROM cartera WHERE "&Combo1.Text& " '&Combo2.Text&' "& txtBuscar.Text &"

Donde combo1.txt = Tabla seleccionada
Combo2.txt = Operación seleccionado
txtBuscar = Valor a encontrar

Peor no funciono para nada =(
Si alguien me pudiera ayudar, se lo agradecería mucho,
Gracias,
Miguel !
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:Variables en Instrucción SQL

Publicado por Adolfo Vanegas (105 intervenciones) el 12/05/2003 06:28:19
Ok voy a utilizar tu mismo ejemplo para ilustrarte el problema que tienes:

Vamos a suponer que la tabla escojida en el combo1 es "Dinero", y el operador escojio en el Combo2 es "=", y que en el combo3 escojio la cantidad de 200.

Antes de empezar tienes que crear una variable de tipo string, la misma es para ver mas claro la consula, si lo deseas pudes usar los mismos ccombos yo por lo regular usos variables.

Dim Cadena$

luego a esta cadena vas concatenando los valores escojidos para la clausula Where, asi:

Cadena= "dinero " & combo1.text & combo2.text, quedando internamente asi:

Cadena= "dinero=200", luego la cadena de consulta completa quedaria asi:

Data1.Recordsource= "Select * From " & combo1.text & " Where "& cadena
Data1.Refresh

Quedando la cadena intermamente asi:
Data1.Recordsource= "Select * From Dineros Where dinero=200"
Data1.Refresh

espero te sirva este ejemplo y que hayas detectado en donde fue tu error


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:Variables en Instrucción SQL

Publicado por Adolfo Vanegas (105 intervenciones) el 12/05/2003 06:31:46
Solo es para corregir la siguiente line

escribi:
Cadena= "dinero " & combo1.text & combo2.text


correcion:
Cadena= "dinero " & combo2.text & combo3.text


Disculpa... suerte
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

El problema continúa :(

Publicado por Miguel ! (49 intervenciones) el 12/05/2003 18:38:03
Empiezo a comprender, pero tengo todavía dudas:

hice algo así:

Dim Cadena As Variant

Cadena = Combo1.Text + Combo2.Text + txtBuscar.Text
'Abro Búsqueda SQL
Set rsFiltro = New Recordset
With rsFiltro
.Source = "SELECT * from empresas WHERE " & Cadena & " "
.ActiveConnection = cnDB
.CursorType = adOpenDynamic
.CursorLocation = adUseClient
.LockType = adLockReadOnly
End With

'Apertura de búsqueda
rsFiltro.Open

Pero me marca un error pocos parametros pero veo por medio del debugger que cadena vale:

Cadena = ' ID=351 '

entonces me imaginó que debería de trabajar =(, me puedes ayudar nuevamente, gracias,
Miguel !
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:El problema continúa :(

Publicado por kikecg (352 intervenciones) el 12/05/2003 23:09:38
Hola.
Mira, si has explicado bien el problema en el primer post, ¿lo que tiene Combo1 son tablas para que el usuario elija?. Entonces dificil veo que te funcione.
Si se trata del campo por el que van a buscar, ya es otra cosa. En el ejemplo que pones, asegurate de que el campo por el que buscas es de tipo numerico. Si no es así, tendrás que poner comillas simples antes y despues de txtBuscar.Text.
Por otra parte, y aunque seguramente no tenga nada que ver (a menos que hablemos de campos numericos), yo suelo utilizar el operador & para concatenar cadenas. Pero vamos, ya te digo que esto no cambia nada.
Otra cosa que se me ocurre es que en la instruccion rsFiltro.Open indiques los parametros, en vez de hacerlo antes en el With. Pero seguramente esto tampoco tendría que cambiar nada.
Por cierto, las comillas simples que pones en lo que contiene Cadena, ¿las pones tu aqui, verdad?. Es decir, que no aparecen en el debugger como contenido de la variable, ¿no?. Por que si fuera así ese sería el problema.
En fin, a ver si tienes suerte.
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