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 11-05-2004
servicomp servicomp is offline
Miembro
 
Registrado: oct 2003
Ubicación: Cartago
Posts: 153
Poder: 21
servicomp Va por buen camino
Unhappy Key Violation

Hola compañeros

Hace pocos dias se me ha dañado una de las tablas de la base de datos que tenia unos indices. Segui los procedimientos acostumbrados y recomendados en el foro, se reconstruyeron los indices y se reindexo de nuevo. pero al momento de almacenar algo en esta tabla nos aparace un mensaje de error de Key violation.

El proceso lo he repetido varias veces pero el problema persiste y la calidad de los datos en la tabla tambien los hemos revisado, asi como la conexión del DBE.

Agradeciendo de antemano la atención prestada
Responder Con Cita
  #2  
Antiguo 11-05-2004
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 22
andres1569 Va por buen camino
Hola:

Es necesario que indiques con que SGDB trabajas, intuyo que es Paradox. ¿Te has asegurado de que el nuevo registro no repite la clave primaria (eso da un "key violation"). Si no es así, puede que no se haya corregido bien la tabla, en ese caso esste hilo pasará al foro de Tablas Planas, donde se tratan asuntos relacionados específicamente con dichos problemas.

Saludos
__________________
Guía de Estilo
Responder Con Cita
  #3  
Antiguo 14-05-2004
servicomp servicomp is offline
Miembro
 
Registrado: oct 2003
Ubicación: Cartago
Posts: 153
Poder: 21
servicomp Va por buen camino
Efectivamente el problema estaba en la indice primario, ya que estaba usando una variable de autoincremento, lo que estaba pasando era que tenia 245 registros enumerados desde el 1..245, pero al tratar de ingresar un nuevo registro este me colocaba el 164 como el registro que continuaba. por más que he tratado de aparezca el registro 246 como un nuevo registro nno se ha podido.
Parece que la solución sera copiar la tabla en una nueva y luego renombrarla.
Responder Con Cita
  #4  
Antiguo 14-05-2004
sanxpue sanxpue is offline
Miembro
 
Registrado: jul 2003
Posts: 196
Poder: 21
sanxpue Va por buen camino
Thumbs up No...

No no no es esa la salucion.. weno si pero no.. je
Vete al DataBase DeskTop, edita la tabla y en lugar de + ponle I la salvas la vuelves a abrir y ahora al I lo cambias por +, te regenera todo
__________________
saludos desde Puebla Mexico..
asanxt@hotmail.com
"como siempre a sus ordenes y siempre con buena cara"
'lolita me excitas, perversa piel de melocotón'
Responder Con Cita
  #5  
Antiguo 14-05-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por servicomp
Parece que la solución sera copiar la tabla en una nueva y luego renombrarla.
Aquí te va otra:

1. Respalda la tabla
2. Ejecuta SetAutoInc(TableFileName, 245);

donde

Código Delphi [-]
procedure SetAutoInc(TableFileName: String; NewAutoInc: Integer);
var
  FileHandle: Integer;

begin
  FileHandle := FileOpen(TableFileName, fmOpenReadWrite);
  FileSeek(FileHandle, $49, soFromBeginning);
  FileWrite(FileHandle, NewAutoInc, 2);
  FileClose(FileHandle);
end;

La tabla debe estar cerrada.

Explicación: El archivo *.db guarda el último valor autoinc en el offset $49 (en Paradox). La rutina simplemente escribe el valor deseado (245 en tu caso) de manera que el siguiente valor será 246.

Lo acabo de probar y funciona.

// Saludos
Responder Con Cita
  #6  
Antiguo 15-05-2004
Avatar de Paoti
Paoti Paoti is offline
Miembro
 
Registrado: may 2003
Ubicación: Monterrey. N.L., México
Posts: 612
Poder: 22
Paoti Va por buen camino
Hola!!!

Roman, decime, donde encontraste ese tipo de información!!!!?


De haberlo sabido meses antes, me hubiera podido dormir algunas noches más tranquilo...)

Gracias!!!!


nos vemos
Responder Con Cita
  #7  
Antiguo 15-05-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Paoti
Roman, decime, donde encontraste ese tipo de información!!!!?
Muy fácil. El siguiente es un enlace que ningún programador de Delphi puede omitir:

Grupos de noticias de Borland

// Saludos
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 00:17:30.


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