Club Delphi  
    Paypal   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 27-02-2005
Sick boy Sick boy is offline
Miembro
 
Registrado: may 2003
Ubicación: Cantabria
Posts: 245
Poder: 24
Sick boy Va por buen camino
Hola,

Lo que se rompio en tu tabla es el autoincremental.
Por algun motivo, volvio hacia atras, o dejo de crecer, por eso te da el error de key violation, porque se repite la clave primaria

Lo que dice marcos es correcto (alguien lo dudaba), y se soluciona porque desde una base de datos vacia el autoincremental esta correcto.

Por fin voy a poder agregar algo nuevo.
La base de datos se puede arreglar sin tener que pasar todos los registros a una nueva.

Usar el siguiente codigo, pasandole el nombre de la base de datos y el nuevo valor del autoincremental:

Código:
Procedure SetAutoInc(filename : string; Value : Longint);
var
   mystream : tfilestream;
begin
   mystream := tfilestream.create(filename,
   fmOpenWrite + fmShareExclusive);
   try
      mystream.Seek(73, soFromBeginning);
      mystream.Writebuffer(Value, SizeOf(Value));
   finally
      mystream.Free;
   end;
end;
Evidentemente, aseguraros de que el valor que pasais en Value es el mayor, u os encontrareis de nuevo con el mismo problema.

Saludos.

PD: Saludos tambien a marcos desde la tierruca, pasando un frio de cagarse.
Responder Con Cita
  #2  
Antiguo 27-02-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Pues también me ha ocurrido el caso del autoincrimento, ojo que también es un problema y gordo pues nos da error pero también nos elimina los registros.

Si el problema es de autoincremento, y creamos una tabla nueva y le pasamos los registros de la dañada, como la nueva parte de 0 al insertarle los registros el autoincremento supongamos que se pone en el número 5000, llegará un momento en que el autoincremento llegue a coincidir por el número que llevabamos en la otra tabla y entonces al agregar registros nuevos, nos eliminará uno de los antiguos y además nos enviará un error de Key violation, yo utilizo la función que se cita para poner el autoincremento de la tabla a 0 antes de añadirle los registros.

Devuelvo el saludo, pues ahora estoy de nuevo en mi tierra, pues he estado desde el jueves en Madrid por mor de una reunión.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
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


La franja horaria es GMT +2. Ahora son las 19:13:39.


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