Yo no me quiero dar por vencido
El query lo creas dinamicamente, en tiempo de ejecucion? Cual es el codigo? o en tiempo de diseño: que propiedades cambiaste? No te habra quedado alguna sentencia SQL o parametro por alli?
Usas el mismo componente query para otras consultas?
Que pasa si en lugar de asignar a los parametros el valor de los edit le asignas numeros literales, por ejemplo estos
SELECT * FROM CTRLONT
WHERE `BOARD_ONT`= 3
AND `FRAME_ID`= 0
AND `SLOT_ID`= 3
AND `PORT_ID`= 1
AND `ONT_ID`= 3
Por que usas "join" a secas? No deberias usar "inner join"?
Que valores tienen los edit?
Que valor tiene esta variable:
Si la cantidad de parametros es distinta a la que esperas podes imprimirlos para ver cual te creo:
uses
SysUtils, ADODB, StdCtrls, TypInfo, DB;
var
Memo1: TMemo;
qry: TADOQuery;
P: TParameter;
I: Integer;
begin
Memo1.Clear;
Memo1.Lines.Add('Hay ' + IntToStr(qry.Parameters.Count) + ' parametros');
for I := 0 to qry.Parameters.Count - 1 do
begin
p := qry.Parameters[I];
Memo1.Lines.Add('Parametro nro ' + IntToStr(I + 1));
Memo1.Lines.Add('Nombre: ' + P.Name);
Memo1.Lines.Add('Tipo ' + GetEnumName(TypeInfo(TFieldType), Ord(P.DataType)));
Memo1.Lines.Add('Valor ' + P.Value);
end;
Estas dos tambien pueden incidir, pero son las menos que menos..
Estoy seguro que los componentes trabajan bien...el codigo ya no le veo nada raro, pero seguro que la falla esta de nuestro lado
huffff !! a ver son varias preguntas ... a ver si un moderador no te llama la atención 
El query lo creas dinamicamente, en tiempo de ejecucion? Cual es el codigo?
EL Query lo creo en tiempo de ejecución, rn tiempo de diseño dentro del prametro SQL del Componente ADOQuery solo tengo la busqueda básica "select * from CTRLONT" en mi caso, esto necesario para que el Componente se pueda activar en runtime.
que propiedades cambiaste? No te habra quedado alguna sentencia SQL o parametro por alli?
Usas el mismo componente query para otras consultas?
Hasta ahora no he cambiado ninguna propiedad, la sentencia es la que mencione la basica que la hago en tiempo de diseño, esto necesario par que el Componente ADOQuery se pueda activar. Estoy usando un DataModule, alli tengo un ADOquery similar para la misma tabla, pero no lo trabaje desde alli ya que primero quise trabajarlo desde el formulario, quel igual tiene en tiempo de diseño la misma sentecia SQL que ya mencioné.
Que pasa si en lugar de asignar a los parametros el valor de los edit le asignas numeros literales, por ejemplo estos
SELECT * FROM CTRLONT
WHERE `BOARD_ONT`= 3
AND `FRAME_ID`= 0
AND `SLOT_ID`= 3
AND `PORT_ID`= 1
AND `ONT_ID`= 3
Me da el mismo resultado a como lo tengo ahora con el ejemplo ya mencionado, por ahora me esta funcionando bien asignando los valores a variables y despues estas variables usarlos en los Query.
Por que usas "join" a secas? No deberias usar "inner join"?
Que valores tienen los edit?
No lo había notado o quizá se me paso , pero haré la prueba a ver que resultado me da, aunque sospecho que será lo mismo.
Los valores de los Edit son los mismo que puse en el ejemplo que etsas mencionando, todos numericos enteros.
Que valor tiene esta variable:
qry.Parameters.Count
El parámetro COUNT no aparece antes del "Parameters". osea Que valor tiene esta variable:
ADOQueryCtrlONT.Parameters.Count no lo acepta el (Count)
Si la cantidad de parametros es distinta a la que esperas podes imprimirlos para ver cual te creo:
uses
SysUtils, ADODB, StdCtrls, TypInfo, DB;
var
Memo1: TMemo;
qry: TADOQuery;
P: TParameter;
I: Integer;
begin
Memo1.Clear;
Memo1.Lines.Add('Hay ' + IntToStr(qry.Parameters.Count) + ' parametros');
for I := 0 to qry.Parameters.Count - 1 do
begin
p := qry.Parameters[I];
Memo1.Lines.Add('Parametro nro ' + IntToStr(I + 1));
Memo1.Lines.Add('Nombre: ' + P.Name);
Memo1.Lines.Add('Tipo ' + GetEnumName(TypeInfo(TFieldType), Ord(P.DataType)));
Memo1.Lines.Add('Valor ' + P.Value);
end;
Me marca ACCESS VIOLATION..
Saludos !!