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;