La Web del Programador: Comunidad de Programadores
 
    Pregunta:  5987 - PROBLEMAS CON INDICES DE TIPO AUTOINCREMENT
Autor:  Carlos Manuel De Portugal Rosales
Hola Amigos,

Tengo un problema y espero que me ayuden a resolverlos...

Tengo un Boton "Aceptar" y adentro de este, tengo dos proceso:

Imprimir un ticket
Guardar datos...

Lo que sucede es que cuando el usuario hace click en el boton, se muestra el ticket en pantalla que fue elaborado con el Quckreport de Delphi 4.0, imprimo, cierro y posteriormente sigue el proceso de guardado, pero en algunas ocaciones se presenta el siguiente error "Key Violation" y de ahi ya no pasa el programa, es decir, ya no guarda ningun dato...

Me puse a investigar y llegue a la conclusión que la yave principal es la que se daña, la yave es Id_Ticket y es de tipo Autoincrement...

Mi pregunta es ¿por qué es que se daña solo en algunas ocaciones?

¿Será que los procesos deben ir por separado y no en un solo boton?...

¿Necesito alguna yave compuesta?

Ayudenme por favor...

  Respuesta:  Angel Tejeda
Que tal?

Bueno. Te tengo una pregunta antes de darte la solución. Cuando hablas de guardar a que te refieres? Pues si solo estas imprimiendo no entiendo a que te refieres con guardar. Si en caso de que necesites guardar algo y lo estas trabajando sobre tabla (utilizando un ttable y no un tquery) posicionate sobre el registro :

table1.setkey;
table1.fieldbyname('id_tickect').asstring:=tickect_no; //tickect_no es la variable donde le dices que numero es el que vas a editar.
table1.gotonearest;
table1.edit;
//Haces los cambios sin tocar el id_tickect
table1.post;

Si es por un query me avisas y te explico.

Bye