Autoincrementos no creo que pueda servir, ya que pueden quedar huecos y en números de factura, no se permite.
No creo que sea nada complejo.
Código Delphi
[-]
function Incrementa(nFactura:string):string;
begin
if Length(nFactura) > 3 then
Result := copy(nfactura, 1, 3) + intToStr(strToint(copy(nfactura, 3, 255))+1);
end;
El problema más grave es recuperar el número de factura más alto de un grupo, ya que al ser texto, la ordenación de un String no tiene nada que ver con integer.
La forma de salvar este obstaculo, es añadir ceros por la izquierda, así se puede pedir un listado de nFactura ordenado descendente. El primer nFactura será el que se incrementa.
Código:
st-00000001
st-00010000
Aquí 10.000 es el último al pedir una ordenación AScendente.
Sin embargo, manteniendo el orden ASCendente, aquí no se obtienen los mismos resultados:
Código:
st-13
st-10000
st-1
Saludos