Buenas estoy generando un numero de orden lo hago consultando el ultimo registro de una tabla y le sumo uno, pero el problema es que a veces me repite el numero mas que todo cuando se hace una orden desde otra estación el sistema funciona en 10 maquinas. aca el codigo que uso para calcular el numero.
Código:
procedure Todespacho.BitBtn1Click(Sender: TObject);
var
AccExclusivo:Boolean;
proximonumero:Integer;
numero:Integer;
tord:Real;
tpart:Real;
begin
Buenas estoy generando un numero de orden lo hago consultando el ultimo registro de una tabla y le sumo uno, pero el problema es que a veces me repite el numero mas que todo cuando se hace una orden desde otra estación el sistema funciona en 10 maquinas. aca el codigo que uso para calcular el numero.
Código:
procedure Todespacho.BitBtn1Click(Sender: TObject);
var
AccExclusivo:Boolean;
proximonumero:Integer;
numero:Integer;
tord:Real;
tpart:Real;
begin
De todas formas tienes que evitar que la inserción te de error. Una de las soluciones es usar una tabla adicional para almacenar los contadores. Es decir, en vez de usar la consulta SQL para obtener el último IDORDEN con un MAX, tal vez te sea mejor usar una tabla adicional llamada "contador" donde guardarás el nombre de la tabla en un campo y el contador actual en otro, por lo tanto cuando insertes un nuevo registro, justo antes de hacer el post (validación), utilizas una función que obtenga el contador de esa tabla y lo incremente. Normalmente así no suele producir errores de claves duplicadas.
En este enlace tienes una función para obtener el contador de una tabla adicional:
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A