Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: TheGhost(Z) en 14 Diciembre 2005, 13:25 pm



Título: Consultas Select a una Base de Datos en Acces
Publicado por: TheGhost(Z) en 14 Diciembre 2005, 13:25 pm
Hola. Si alguien me puede ayudar con hacer una consulta SQL con variables.
 
Código:
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:

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


He intentado con Solo la variable TextoBusca y funciona:
Código:
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
Código:
Rs.Open "SELECT * FROM '" & Tabla & "'  where '" & Campo & "' = '" & Trim(TextoBusca) & "'  ", DBConex, adOpenStatic, adLockOptimistic


Saludos
Pedro Jeri


Título: Re: Consultas Select a una Base de Datos en Acces
Publicado por: programatrix en 14 Diciembre 2005, 15:38 pm
Aquí te faltan las comillas:

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


Título: Re: Consultas Select a una Base de Datos en Acces
Publicado por: el_chente23 en 15 Diciembre 2005, 03:55 am
intenta con esto
Código:
Rs.Open "SELECT * FROM " & Tabla & "  where " & Campo & " = '" & Trim(TextoBusca) & "'  ", DBConex, adOpenStatic, adLockOptimistic

Saludos


Título: Re: Consultas Select a una Base de Datos en Acces
Publicado por: TheGhost(Z) en 15 Diciembre 2005, 12:36 pm
Gracias el_chente23

Si funciono!. con el codigo queme diste:

Código:
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.

Código:
" & Tabla & " 
'" & Trim(TextoBusca) & "'


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

En fin. Si es asi:
Código:
& Tabla &

o asi:
Código:
"& 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



Título: Re: Consultas Select a una Base de Datos en Acces
Publicado por: el_chente23 en 15 Diciembre 2005, 18:49 pm
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


Título: Re: Consultas Select a una Base de Datos en Acces
Publicado por: TheGhost(Z) en 17 Diciembre 2005, 20:41 pm
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


Título: Re: Consultas Select a una Base de Datos en Acces
Publicado por: el_chente23 en 20 Diciembre 2005, 21:03 pm
Mira, cuando haces una consulta SQL, seria de esta manera
Código:
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
Código:
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
Código:
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
Código:
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


Título: Re: Consultas Select a una Base de Datos en Acces
Publicado por: TheGhost(Z) en 21 Diciembre 2005, 13:43 pm
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