PDA

Ver la Versión Completa : Consulta por campos tquery


zuzito76
24-03-2011, 12:07:35
Hola Amigos ,
Tengo un problemilla muy básico.Quiero hacer una consulta a un tquery seleccionando solo un campo de la tabla , pero el c++ builder no me deja , me obliga a seleccionar todos los campos en la consulta. Me explico:
Tengo una tabla llamada Clientes.db con estos 3 campos: Dni , Nombre Apellidos. Quiero seleccionar el dni de todos los clientes , así que hago lo siguiente:

Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("SELECT Clientes.Dni FROM Clientes.db");
Query1->Open();

Y el error que obtengo es " Field 'Nombre' Not Found"
Si cambio la consulta por esta otra: "SELECT Clientes.Dni , Clientes.Nombre FROM Clientes.db" el error que obtengo es: "Field 'Apellidos' Not Found")
Y al hacer esta consulta: "SELECT Clientes.Dni , Clientes.Nombre , Clientes.Apellidos FROM Clientes.db" no obtengo ningún error y todo va ok. Obviamente tampoco obtengo ningún error al hacer "SELECT * FROM Clientes.db" que es lo mismo que la anterior consulta.

Se ve que no es un error de sintaxis , pero no entiendo por qué solo me funciona cuando selecciono todos los campos , y tal vez sea tonto el problema y una tontería la solución , pero llevo mucho tiempo liado con esto y no logro resolverlo . Si me pudiérais ayudar os lo agradecería un montón.
Gracias y un saludo a todos.

zuzito76
24-03-2011, 13:40:37
Si queréis saber más sobre mi problema deciros que creé la tabla "Clientes.db" a través de "database desktop" y posteriormente , con c++ builder (en el menú database->Form Wizard) creé un simple form usando un objeto tquery al que le asigné dicha tabla (dentro del directorio asignado por el alias GENERAL).Creé el formulario y el "DataModule". En este DataModule , a parte del query y el Datasource correspondiente que me ha creado el "form wizard" he añadido un TDatabase y un Tsession , todo correctamente configurado y conectado (DatabaseName=GENERAL , sessionname...) DataSource->DataSet=Query1... y tal , pero no sé donde está el error...
Gracias de nuevo por anticipado.

ecfisa
03-04-2011, 02:14:18
Hola zuzito76.

El error se produce al agregar la extensión de la tabla en la sentencia SQL (CLIENTES.DB).
Aunque no genere error, tampoco es necesario calificar los campos (CLIENTES.DNI) ya que la clausula FROM determina su origen.


De esta forma, ninguna combinación de campos en selección te dará problemas:

Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("SELECT DNI, NOMBRE,APELLIDOS FROM CLIENTES");
Query1->Open();



Un saludo.

Caral
03-04-2011, 03:20:32
Hola
Cuando se genera el sql directamente sobre el query y se da doble click al query y se colocan los campos en la pantalla, cuando se ejecuta la consulta estara esperando los campos que esten incluidos en la pantalla.
Solucion: Quitar todos de la pantalla.
Saludos