PROBLEMA AL ESCRIBIR UNA CONSULTA

sigrit
19 de Julio del 2004
Tengo un problema con una consulta, es la siguiente:
SELECT p.Nombre FROM Planta p WHERE p.PlantaID IN(
SELECT pu.PlantaID FROM [Planta-Usuarios] pu WHERE pu.DNI=(
SELECT u.DNI
FROM USUARIOS u
WHERE u.NombreUsuario="estela" and u.Contraseña="lorente"))

La he comprobado en SQL y funciona, pero cuando la paso a VB me da error de sintaxis y ya me estoy volviendo loca xq no se dnd esta el fallo. La escribo asi:
SQL = "SELECT p.Nombre " & _
"FROM Planta p " & _
"WHERE p.PlantaID IN ( " & _
"SELECT pu.PlantaID " & _
"FROM [Planta-Usuarios] pu " & _
"WHERE pu.DNI= ( " & _
"SELECT u.DNI " & _
"FROM USUARIOS u " & _
"WHERE u.NombreUsuario= " & nombre & _
"AND u.Contraseña = " & contraseña

No he cerrado los parentesis xq tb me da fallo y no se donde ponerlos...
Gracias de antemano!!!

queen
19 de Julio del 2004
Hola!

Eso de los espacios entre Planta p esta bien pq lo que haces es darle un alias al nombre de la bd para referenciarla.
En mi humilde opinion el problema es el q me ha pasado a mi a veces. Es que pones:

"WHERE u.NombreUsuario= " & nombre & _
"AND u.Contraseña = " & contraseña

y entre el AND y el nombre que viene antes no has dejado espacio, de modo que se te solapa el nombre con el and. Queda pepeAND. Ya veras, muestra por pantalla la sentencia sql cuando la ejecutes o ejecuta el código paso a paso y haz agrega una isnpección y mira como está relleno, ya veras que te pone eso.
Igualmente puede ser que este no sea el único problema pero yo pondría la mano en el fuego a que si que lo es.
Suerte y ya dirás

silvina
19 de Julio del 2004
hola, me parece que tu problema podria estar en el dni, que tipo de datos es dni? si es texto, deberias escribir ".... dni = '" & .... & "' .....
es decir por ej dni ='12452125'

sigrit
19 de Julio del 2004
He probado hacer lo que me dijisteis pero me sigue dando los mismos fallos, podria hacer la consulta de otra manera para que no me den los errores?

krizall
19 de Julio del 2004
hola, creo que tu problema esta en "Plante p"
debe ir entre corchetes,
todos los campos que tengan espacion en blanco deben ir entre corchetes

cierra los parentesis y espero que se resuelva tu problema