Una pregunta...
Que pasaría si:
1) Elimino la columna 0 del grid maestro.
2) Muevo la columna 0 a otra posición.
El código seguiría funcionando?.
Yo en estos casos prefiero utilizar los nombre del campo en forma literal.
Código Delphi
[-]
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
q_GridMovTrabajo.Close;
q_GridMovTrabajo.Params[0].AsInteger:=dbgrid1.Dataset.FieldByName('ID_TRABAJO').AsInteger;
q_GridMovTrabajo.open
end;
Es un cambio sutil pero creo que me protege de algunas situaciones.
Saludos cordiales.