Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-09-2008
javequipos javequipos is offline
Registrado
 
Registrado: jun 2008
Posts: 1
Poder: 0
javequipos Va por buen camino
se me pisan los registros

Estan funcionando 3 cajas a la vez emitiendo entradas, pero en algun momento dos cojen el numero de ticket 171 por que algun terminal no lo alcanza a grabar y se me pierde uno.

Parte de la rutina es la siguiente :

Código Delphi [-]
               Movtos.Last;
               Numero:=Movtos.FieldByName('Ticket').Value+1;
               Movtos.Append;
               Movtos.FieldByNAme('Ticket').AsFloat:=Numero;
               Movtos.Post;
               dbiSaveChanges(Movtos.Handle);
               Application.ProcessMessages;
               Movtos.SetKey;
               Movtos.FieldByName('Ticket').Value:=Numero;
               Movtos.GotoKey;
               Movtos.Edit;
               Movtos.FieldByName('TPV').AsString:=GetEnvironmentVariable('NOMPC');
               Movtos.FieldByName('Usuario').AsString:=Inicio.NomUser;
               Movtos.FieldByName('Cantidad').AsString:='1';

y el resto hasta el post.

Alguna solucion mejor para asegurarme que siempre tome el ultimo registro y lo tome para si ?....
no se si se entiende, pero en la operatoria sucede que si el ultimo registro guardado tiene como numero de ticket 170, y dos terminales venden simultaneamente 5 entradas por ejemplo, pero sucede que por alguna razon dos terminales toman el 170 y le suman 1 pero solo uno despues queda grabado...el otro se pierde.

La verdad esto me quedo cuadrado, no se que hacer ya.
Uso delphi 6 enterprise.

Gracias por la ayuda.

Última edición por dec fecha: 01-09-2008 a las 10:50:38.
Responder Con Cita
  #2  
Antiguo 01-09-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Deberias hacer, antes del last, un Table.refresh, para cargar realmente los ultimos cambios en la base de datos: asi si alguien acaba de insertar un nuevo ticket, se reflejara en tu dataset.
Responder Con Cita
  #3  
Antiguo 01-09-2008
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 22
Crandel Va por buen camino
Es comprensible lo que sucede, al tener un indice por el numero de Ticket. No puedes dos ticket con el mismo número y por ello los siguientes con el mismo número no se graban.

Todo depende de que motor de base de datos usas. Pero una buena solución es grabar los registros mediante un procedimiento almacenado, le pasa los paramtros del nuevo registro y te devuelve el nuevo indice.

De esta forma, es el servidor el que asigna cada numero y no el cliente.
__________________
[Crandel]
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Arreglo de Registros, con arreglos de Registros(Dinamico) PiornoCKA&G Varios 4 05-01-2007 08:53:30
por que duplicidad de registros con clientdataset sin ingresar registros ...mysql Arturo MySQL 3 05-09-2006 18:39:37
Borrar registros dmagui MySQL 2 11-07-2005 20:14:25
20,000 registros ABDIGAR SQL 8 27-06-2005 19:19:58
registros que no se ven en ado joanajj Conexión con bases de datos 5 08-04-2005 22:02:54


La franja horaria es GMT +2. Ahora son las 16:08:28.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi