consulta por campos c++ builder tquery

jesus roca fernandez
24 de Marzo del 2011
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.


Sergio Yomismo
18 de Mayo del 2011
Hola Jesus,

Como bien dices, el error no es sintactico. Sin embargo, es muy posible que tengas algún componente en el formulario, sea un DBCOMBOBOX, un DBEDIT o un DBLABEL, etc. que está conectado con el objeto Query1 y cuya lectura está asociada a estos campos ("Nombre" y "Apellidos").

Comprueba todos los componentes del formulario, y si aún así no lo encuentras, prueba a ir eliminando los componenetes uno a uno, hasta que te permita realizar la consulta, así sabrás cual es exactamente el que te está fallando.

Otra opción más elegante es la de recorrer todos los componentes de tu formulario, comprobando si tienes el parámetro ListField disponible y comprobar así cual es el valor que tiene asociado.

Saludos.