Consultas Select a una Base de Datos en Acces

Iniciado por TheGhost(Z), 14 Diciembre 2005, 13:25 PM

0 Miembros y 1 Visitante están viendo este tema.

TheGhost(Z)

Hola. Si alguien me puede ayudar con hacer una consulta SQL con variables.

Dim Tabla, Campo, TextoBusca As String

Tabla = "Empleados"
Campo="Nombre"
TextoBusca="Pedro"


Lo que deseo es mas o menos asi, pero no se como llevarlo a lo correcto:

Rs.Open "SELECT * FROM Tabla  where Campo = TextoBusca", DBConex, adOpenStatic, adLockOptimistic


He intentado con Solo la variable TextoBusca y funciona:
Rs.Open "SELECT * FROM  Empleados where Nombre = '" & Trim(TextoBusca) & "'  ", DBConex, adOpenStatic, adLockOptimistic


Pero lo he intentado haciendo lo mismo para todas las variables pero me arroja error Consulta Imcompleta
Rs.Open "SELECT * FROM '" & Tabla & "'  where '" & Campo & "' = '" & Trim(TextoBusca) & "'  ", DBConex, adOpenStatic, adLockOptimistic


Saludos
Pedro Jeri

programatrix

Aquí te faltan las comillas:

CitarRs.Open "SELECT * FROM Tabla  where Campo = 'TextoBusca'", DBConex, adOpenStatic, adLockOptimistic
No se si será por eso  ;)

el_chente23

intenta con esto Rs.Open "SELECT * FROM " & Tabla & "  where " & Campo & " = '" & Trim(TextoBusca) & "'  ", DBConex, adOpenStatic, adLockOptimistic

Saludos

TheGhost(Z)

Gracias el_chente23

Si funciono!. con el codigo queme diste:

Rs.Open "SELECT * FROM " & Tabla & "  where " & Campo & " = '" & Trim(TextoBusca) & "'  ", DBConex, adOpenStatic, adLockOptimistic

Pero un pregunta: ¿cual es la diferencia entre estos dos? bueno se que se diferencian por ponerles estos ( ' ). Pero porque al TextoBusca se pone las ( ' ) y  a las demas no.

" & Tabla & "
'" & Trim(TextoBusca) & "'


Lo que no entiendo es si la comilla (") que esta antes de & Tabla & cierra o abre. Es decir el formato:
Rs.Open "SELECT * FROM "

En fin. Si es asi:
& Tabla &

o asi:
"& Tabla &"

Y por otra parte porque a mi variable TextoBusca aparte de

las comillas
("textoBusca")

se le agrega un tilde mas, el que esta con rojo. No entiendo si al final: Tabla, Campo y textoBusca son variables.
('"& Tabla &"')

Saludos,
Pedro Jeri


el_chente23

la diferencia entre las 2 instruciones es que cuando armabas el string del Select le ponias comillas al nombre de la tabla y al nombre del campo, los cuales no llevan, los unicos que llevan esas comillas son las cadenas, entonces la variable textobusca las lleva proque si lo nota es una cadena, esa seria la diferencia. Sobre la otra pregunta, lo que pasa es que para hacer una consulta SQL, ya sea access o sql server, lo tienes que hacer armando una cadena con dicha consulta, entonces todo lo que es la instruccion del SQL tiene que ser entre comillas, pero si le quieres agragar valores de variables a la consulta, se la tienes que concatenar a la cadena fuera de las comillas, de lo contrario tomaria la variable tal cual y no su valor. Haber si me entiendes  :P, sino pregunta.

Saludos

TheGhost(Z)

Estimado, el_chente23 .

Veamos. he entendio que se pone ("mivariable") si es algo relacionado con la consulta, pero sepone (' "mivariable" ' ) si es una cadena?

Es decir TextoBusca=TEGGAR458122445 (cadena), verdad

Pero las variables. Tabla y Campo son variables, pero variables especiales que van dentro de la consulta SQL ?

Es asi?

la verdad no entendi.

Si fuera mucha molestia que me expliques de nuevo..

Gracias

Pedro Jeri

el_chente23

Mira, cuando haces una consulta SQL, seria de esta manera Select * From Tabla Where Campo='ABC' si notas es una consulta a una tabla y mi filtro es una cadena (En SQL las cadenas van entre comillas sencillas), entonces cuando quieres hacer una consulta de ese tipo por medio de visual, armas la estructura de la consulta en una cadena, pero respetando esa estructura, entonces para hacer esa llamada desde visual quedaria algo asi Variable="Select * From Tabla Where Campo='" & cadena & "'" eso suponiendo que cadena trae el string con el que lo filtrarias(en este caso ABC), ahora por tener un manejo de cadena esa consulta, la puedes armar a como la necesites, ya sea condicionando si es una tabla u otro la que quieres usar Variable ="Select * From "
if X=0 Then
Variable = Variable & tabla1 & " Where Campo='" & cadena & "'"
Else
Variable = Variable & tabla2 & " Where Campo='" & cadena & "'"
End If
, en este ejemplo si ves le puedes poner una tabla u otra, dependiendo de como necesites hacer tu consulta, pero si nota en la parte de la variable Tabla1 y Tabla2(Son variables Visual Basic que contienen el nombre de las tablas) no llevan comillas porque si las llevara quedaria asi Select * From 'Tabla' Where Campo='ABC' y obviamente marcaria un error por el echo de tener comillas el nombre de la tabla y eso por eso que te marcaba error al principio. Haber si no te enrede mas  :rolleyes:  ;D.

Saludos

TheGhost(Z)

Ni yo se si entendi exactamente lo que queria. Pero me diste grandes ideas con eso de x=0 para permitir segun necesite las tablas..

Gracias por tu aporte, el_chente23.

Saludos
Pedro Jeri