Hola...
Este código:
Código Delphi
[-]
abre(query3);
while not query3.eof do
begin
valor:=query3.fieldbyname('det_valor').AsInteger;
sgEvaluacion.cells[valor + 1,x]:=IntToStr(valor);
query3.next;
end;
Cambialo por este:
Código Delphi
[-]
Abre(Query3);
Valor := Query3.FieldByName('det_valor').AsInteger;
sgEvaluacion.Cells[Valor + 1, X] := IntToStr(Valor);
Query3.Close;
El cambio es por que
Query3 me imagino que solo debe devolver un registro, así que no tiene caso hacer el ciclo
while..do...
Saludos...