Ver Mensaje Individual
  #1  
Antiguo 06-03-2008
Pedro-Juan Pedro-Juan is offline
Miembro
 
Registrado: ago 2006
Ubicación: Barcelona - España
Posts: 315
Reputación: 18
Pedro-Juan Va por buen camino
Question Tipo desconocido en SQL

Hola a tod@s, un saludo.
Tengo una consulta que me da el error de: Project Biblio.exe raised exception class EDatabaseError
with message 'cAut' is of an unknown type, Process
stopped. Use step or run to continue.
Me da el mismo mensage de error con todos los parámetros, excepto con el primero (cPalabra).
Todos los tipos de variable están bien, tanto en la declaración como en las asignaciones previas a la llamada
al procedure.
Lo más curioso: tengo otras consultas idénticas a esta (pero para otros ámbitos dentro de la misma
aplicación) y me funcionan bien, sin problemas.
¿Cómo pueden ser de un tipo desconocido? y ¿porqué funcionan procedures similares en otros ámbitos?
Muchas gracias de antemano a tod@s por vuestra ayuda.

Código Delphi [-]
 
procedure BusarPorCalificacionSQL(cCalificacion,cAutor,cTema,cClasificacion: String);
var cPalabra,cAut,cTem,cClasif: String;
    nParam: Integer;
begin
nParam    := 0;
cPalabra  := Trim(cCalificacion);
cAut      := Trim(cAutor);
cTem      := Trim(cTema);
cClasif   := Trim(cClasificacion);
DataModule.QueryLib.Close;
DataModule.QueryLib.SQL.Clear;
DataModule.QueryLib.SQL.Add('Select * From TITULOS');
DataModule.QueryLib.SQL.Add('Where ((NomCalifCas = :cPalabra) or (NomCalifCat = :cPalabra) or 
                                                                           (NomCalifIng = :cPalabra) or (NomCalifFra = :cPalabra) or 
                                                                           (NomCalifAle = :cPalabra) or (NomCalifIta = :cPalabra) or 
                                                                           (NomCalifPor = :cPalabra))');
DataModule.QueryLib.Params[nParam].AsString := cPalabra;
if ((nNumItemIndexA = 1) and (cAut <> '')) then begin
     DataModule.QueryLib.SQL.Add('And NOMAUTOR1 = :cAut or NOMAUTOR2 = :cAut or 
                                                                          NOMAUTOR3 = :cAut or NOMAUTOR4 = :cAut or 
                                                                          NOMAUTOR5 = :cAut or NOMAUTOR6 = :cAut');
     Inc(nParam);
     DataModule.QueryLib.Params[nParam].AsString := cAut;
     Inc(nParam);
     DataModule.QueryLib.Params[nParam].AsString := cAut;
     Inc(nParam);
     DataModule.QueryLib.Params[nParam].AsString := cAut;
     Inc(nParam);
     DataModule.QueryLib.Params[nParam].AsString := cAut;
     Inc(nParam);
     DataModule.QueryLib.Params[nParam].AsString := cAut;
     Inc(nParam);
     DataModule.QueryLib.Params[nParam].AsString := cAut;
end;
if ((nNumItemIndexB = 1) and (cTem <> '')) then begin
     Inc(nParam);
     DataModule.QueryLib.SQL.Add('AND (Tema = :cTem)');
     DataModule.QueryLib.Params[nParam].AsString := cTem;
end;
if ((nNumItemIndexC = 1) and (cClasif <> '')) then begin
     Inc(nParam);
     DataModule.QueryLib.SQL.Add('AND (Clasificacion = :cClasif)');
     DataModule.QueryLib.Params[nParam].AsString := cClasif;
end;
DataModule.QueryLib.SQL.Add('AND (IsConte = ''No'')');
if(F_Main.sRadioGGrid.ItemIndex = 0) then  DataModule.QueryLib.SQL.Add('Order By TITULO');
if(F_Main.sRadioGGrid.ItemIndex = 1) then  DataModule.QueryLib.SQL.Add('Order By NUMERO');
DataModule.QueryLib.Open;
end;
__________________
Este mundo es el camino para el otro, que es morada sin cesar. Mas cumple tener buen tino para andar esta jornada sin errar. (J. Manrique)
Responder Con Cita