A ver... esto lo pueden hacer tan fácil como esto:
Código Delphi
[-]
function GetAlbaranNextNo: Integer;
begin
with TADOQuery.Create(nil) do
try
SQL.Text := 'select max(Num_Albaran) from Albaranes';
try
Open;
Result := Fields[0].AsInteger + 1;
Close
except
ShowMessage('Ocurrió un error obteniendo número de Albarán')
end
finally
Free
free
end;
procedure DataModule1.TablaAlbaranNewRecord(ADataSet: TDataSet);
begin
TablaAlbaran.FieldByName('Num_Albaran').AsInteger := GetAlbaranNextNo
end;
Esto es, al usar el evento
OnNewRecord de la tabla albaranes, le asignas el número que le corresponde. Al hacer esto, si llegas a cancelar el albarán no pasa nada...
Saludos...