Heeeeeeey, he aquí lo que yo hago. Es muy simple y me ha funcionado para multiples usuarios conectados al mismo gestor:
Cuando abres un nuevo registro, tomas el max() del campo llave y le sumas 1, dando este valor al nuevo registro que estás abriendo
Cuando guardes vuelves a verificar el valor máximo por si alguien ya utilizó el que tú tenías y entonces gusrdas tu transacción con el nuevo número, dándo aviso al usuario si así lo requiere.
Código:
QFESGO.SQL.Text:='Select max(ICVe_prod) +1 as siguiente from TProducto';
Ese es el código que uso para obtener el siguiente número valido de producto. Lo asigno a mi nuevo producto y cuando termino de introducir los datos del producto vuelvo a ejecutar la consulta y me va a devolver el valor más reciente.
Espero te haya servido de algo. Hasta pronto