Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Error Column does not belong (https://www.clubdelphi.com/foros/showthread.php?t=18700)

noe 20-02-2005 15:03:35

Error Column does not belong
 
Saludos a los del foro de delphi.
Tengo el siguiente problema cuando lanzo mi consulta con el siguiente codigo:

procedure TFrm_ConsultaCliente.Edt_NombreChange(Sender: TObject);
Var
total:real;
begin
total:=0;
DataModule1.FIBDS_Facturas.Close;
DataModule1.FIBDS_Facturas.SelectSQL.Clear;
DataModule1.FIBDS_Facturas.SelectSQL.Add('select *');
DataModule1.FIBDS_Facturas.SelectSQL.Add('from Facturas');
DataModule1.FIBDS_Facturas.SelectSQL.Add('Where upper(Cliente) like:Cli');
DataModule1.FIBDS_Facturas.SelectSQL.Add('and estado<>"C a n c e l a d a"');
DataModule1.FIBDS_Facturas.SelectSQL.Add('Order by Folio');
DataModule1.FIBDS_Facturas.ParamByName('Cli').asstring:='%'+uppercase(Edt_Nombre.text)+'%';
DataModule1.FIBDS_Facturas.Open;

while not DataModule1.FIBDS_Facturas.Eof do
begin
total:=DataModule1.FIBDS_FacturasTotal.Value+Total;
DataModule1.FIBDS_Facturas.Next;
end;

Edit1.Text:=Copy(FormatFloat('#,##0.00',total),0,18);

end;

Bueno esta es mi consulta y el mensaje de error que me envia es el siguiente:

DataModule1.FBDS_Facturas.SelectQuery:
Column Does not belong to referenced table.dynamic SQL error
SQL Error code=206
column unknown


Bueno ese es el error que me manda Utilizo los FIBPlus.
y si no me equivoco parece que me desconoce la columna del campo estado.

Bueno muchas gracias espero me puedan ayudar con esto que ya me trae dolores de cabeza. :confused: :confused:
Gracias :)

sercornejov 21-02-2005 21:27:51

Bueno.

Estás ORDENANDO por el campo FOLIO, yo tenia problemas ordenando los campos por su nombre, así que los ordene por su índice. Es decir, si el campo es el número 5 de la consulta (SELECT) de coloco ORDER BY 5. Esto empezando con 1,2,3,....,n

e.j.

Select c1,c2,c3,c4,c5,c6,c7
from T1
where upper(C1) like:Cli
and c2>10
Order by 4

Prueba esto. Si no funciona, envia la estructura de la tabla, tipo de datos y tal y lo que quieres hacer y miramos....

Mejor coloca todo el chorro de campos en el select y luego los ordenas como te digo

Sergio

noe 22-02-2005 02:46:19

esto es lo que tengo en mi componente FIBDataset en el UPdateSQL
UPDATE FACTURAS
SET FOLIO=:FOLIO,
FECHA=:FECHA,
CLIENTE=:CLIENTE,
CONCEPTO=:CONCEPTO,
TOTAL=:TOTAL,
RFC=:RFC,
SUBTOTAL=:SUBTOTAL,
IVA=:IVA,
DOMICILIO=:DOMICILIO,
CIUDAD=:CIUDAD,
DIA=:DIA,
MES=:MES,
ANNO=:ANNO,
ESTADO=:ESTADO,
LETRAS=:LETRAS
WHERE FOLIO=:OLD_FOLIO



y esto en mi componente edit en el evento change

procedure TFrm_ConsultaCliente.Edt_NombreChange(Sender: TObject);
Var
total:real;
begin
total:=0;
DataModule1.FIBDS_Facturas.Close;
DataModule1.FIBDS_Facturas.SelectSQL.Clear;
DataModule1.FIBDS_Facturas.SelectSQL.Add('select *');
DataModule1.FIBDS_Facturas.SelectSQL.Add('from Facturas');
DataModule1.FIBDS_Facturas.SelectSQL.Add('Where upper(Cliente) like:Cli');
DataModule1.FIBDS_Facturas.SelectSQL.Add('and estado<>"C a n c e l a d a"');
DataModule1.FIBDS_Facturas.SelectSQL.Add('Order by Folio');
DataModule1.FIBDS_Facturas.ParamByName('Cli').asstring:='%'+uppercase(Edt_Nombre.text)+'%';
DataModule1.FIBDS_Facturas.Open;

while not DataModule1.FIBDS_Facturas.Eof do
begin
total:=DataModule1.FIBDS_FacturasTotal.Value+Total;
DataModule1.FIBDS_Facturas.Next;
end;

Edit1.Text:=Copy(FormatFloat('#,##0.00',total),0,18);

end;

creo que el campo que me esta dando problemas, es el campo Estado, pero es de tipo texto. No se como es que me da problemas?
Y digo que este campo es el que da problamas porque si elimino de la consulta la opcion de:

DataModule1.FIBDS_Facturas.SelectSQL.Add('and estado<>"C a n c e l a d a"'); el programa corre correctamente.
bueno ese es el problema haber si me puedes ayudar en esto porque la verdad no logro resolver este problema.
Bueno gracias se que cuento con su ayuda. :)

jnajera 25-02-2010 19:58:53

Posible solución.
 
Hola Noe, lo que tienes que hacer es ver si esta columna existe tanto en tu query como en tu tabla, ya que a mi me paso algo similar y resulto que en query que ejecutaba, el campo al que yo hacia referencia no estaba contenido dentro de la consulta y ver tambien sino es un alias al que haces referencia y en vez de que se llame estado como lo referencias tu, se llame status o algo similar.

Saludos.

guillotmarc 26-02-2010 10:22:01

Hola.

Lanza esa misma consulta desde un gestor de Firebird, como por ejemplo la versión personal de IBExpert (que es gratuita), y allí te marcará la posición donde está el error.

http://ibexpert.net/ibe/

El error es muy claro, en la consulta estás utilizando un campo que no existe en la Tabla. Aunque a veces no es tan evidente encontrar a que campo se refiere, puesto que cualquier palabra que Firebird no entienda de la consulta, la va a considerar un campo más que quieres devolver, y por lo tanto te dará error si no lo encuentra.

Saludos.


La franja horaria es GMT +2. Ahora son las 18:48:34.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi