Posiblemente puedas evitarlo también preguntando si el campo al que estás intentando acceder está o no asignado:
Código Delphi
[-]
if Assigned(dbgrid2.Fields[1]) then begin
claveservicio:=dbgrid2.Fields[1].asstring;
end
else begin
claveservicio:='';
end;