Veo que estas haciendo esto
No necesitas el else, en el primer bloque haces lo que necesitas, lo que faltaba es un table1.Refresh después del for, para que veas los cambios de inmediato en el DBGrid.
Así quedaría
Código Delphi
[-]
procedure TForm1.BitBtn2Click(Sender: TObject);
var
sQuery:String;
I:Integer;
begin
if DBGrid1.SelectedRows.Count > 0 begin
with DBGrid1.DataSource.DataSet do begin
for i := 0 to DBGrid1.SelectedRows.Count-1 do begin
GotoBookmark(Pointer(DBGrid1.SelectedRows.Items[i]));
sQuery:= 'Update Fecha_venc Set Fecha_venc= :fecha Where Docto = :docto';
Query1.SQL.Add(sQuery);
Query1.ParamByName('docto').AsString := Query1.FieldByName('docto').AsString;
Query1.ParamByName('fecha').AsDateTime := Query1.FieldByName('Fecha_Apli').AsDateTime + StrtoInt(Edit4.Text);
Query1.ExecSQL;
end;
Table1.Refresh;
end;
end;
end;
Lo del table1 lo puse porque no se con que estas ligando el DBGrid.
Salud OS.