Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-05-2008
Alsaca Alsaca is offline
Miembro
 
Registrado: dic 2007
Posts: 31
Poder: 0
Alsaca Va por buen camino
Angry Key Violation

Buenas tardes a todos/as, os cuento mi problema...

Al pulsar el botón de editar, donde sólo edito la tabla y acontinuación pulso el botón de grabar, me da un key violation, que me está dando dolores de cabeza... alguién que me pueda ayudar.



Salu2.
Responder Con Cita
  #2  
Antiguo 15-05-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola Alsaca,
¿Podrías ser más detallado/a?
Ese error puede ser porque ya existe esa clave, o porque no se añadió la clave... o porque Saturno está en fase con la Tierra.

Pueden ser muchas las causas. Sin mayores detalles por tu parte no te sabríamos decir como ayudarte.
Espero que comprendas que es necesario que nos indiques tu base de datos, componentes que empleas, y un poco del código que utilizas. A ciegas, lo único que podemos hacer es estar adivinando.
Lo malento si te molesta, pero es que mi bola de cristal me está fallando.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #3  
Antiguo 15-05-2008
Avatar de jcarteagaf
[jcarteagaf] jcarteagaf is offline
Miembro Premium
 
Registrado: abr 2006
Ubicación: La Paz, Bolivia
Posts: 651
Poder: 19
jcarteagaf Va por buen camino
Evidentemente el error Key Violation te indica que se esta intentando duplicar la llave primaria de tu archivo (tabla) como te dice el amigo Delphius deberias dar mas datos:

Que tipo de base de datos usas (sql, interbase, oracle,etc)
Que tipo de dataset usas (TQuery, TTable, TAdotable, etc)
algun ejemplo de tu codigo

Con esa información adicional veras que pronto saltaran las respuestas que te ayudaran a resolver tu problema.

Saludos

P.D.

Cita:
A ciegas, lo único que podemos hacer es estar adivinando.
Lo malento si te molesta, pero es que mi bola de cristal me está fallando.
Pues como dice mi jefe cuando no puede adivinar algo

Yo tengo 2 pero no son de cristal....
Responder Con Cita
  #4  
Antiguo 15-05-2008
Alsaca Alsaca is offline
Miembro
 
Registrado: dic 2007
Posts: 31
Poder: 0
Alsaca Va por buen camino
Perdonad, por explicarlo tan básicamente....

Tabla Paradox. Clave principal Cod_cli

Botón Editar

tclient.edit;
altacli.Enabled:=false;
bitbtn13.Enabled:=false;
bitbtn14.enabled:=false;
dbedit2.Enabled:=true;
dbedit3.Enabled:=true;
dbedit4.Enabled:=true;
dbedit5.Enabled:=true;
dbedit6.Enabled:=true;
dbedit7.Enabled:=true;
dbedit8.Enabled:=true;
dbedit9.Enabled:=true;
dbedit10.Enabled:=true;
dbedit15.Enabled:=true;
dbedit18.Enabled:=true;
dbedit13.Enabled:=true;
Date1.enabled:=true;
Date2.enabled:=true;
Date3.enabled:=true;
Date4.enabled:=true;
dbedit16.enabled:=true;
dbedit17.Enabled:=true;
bitbtn4.Enabled:=true;
bitbtn5.Enabled:=false;
bitbtn6.Enabled:=false;
dbedit14.Enabled:=true;
date5.Enabled:=true;
date6.enabled:=true;
dbedit19.Visible:=false;
dbedit20.Visible:=false;
dbedit21.Visible:=false;
dbedit22.Visible:=false;
dbedit23.Visible:=false;
dbedit24.Visible:=false;
bitbtn4.Enabled:=true;

Botón grabar

tclient.FieldByName('F_exp').asdatetime:=date1.Date;
tclient.FieldByName('F_cad').asdatetime:=date2.Date;
tclient.FieldByName('F_segexp').asdatetime:=date3.Date;
tclient.FieldByName('F_segcad').asdatetime:=date4.Date;
tclient.FieldByName('F_expe').AsDateTime:=date5.Date;
tclient.FieldByName('F_cade').asdatetime:=date6.date;
tclient.FieldByName('F_alta').AsDateTime:=date7.Date;
tclient.Post;
altacli.Enabled:=true;
date7.enabled:=false;
bitbtn4.enabled:=false;
date1.Enabled:=false;
date2.Enabled:=false;
date3.Enabled:=false;
date4.Enabled:=false;
dbedit1.Enabled:=false;
dbedit2.Enabled:=false;
dbedit3.Enabled:=false;
dbedit4.Enabled:=false;
dbedit5.Enabled:=false;
dbedit6.Enabled:=false;
dbedit7.Enabled:=false;
dbedit8.Enabled:=false;
dbedit9.Enabled:=false;
dbedit10.Enabled:=false;
dbedit13.Enabled:=false;
dbedit16.Enabled:=false;
dbedit17.Enabled:=false;
bitbtn5.enabled:=true;
bitbtn6.enabled:=true;
dbedit14.Enabled:=false;
date5.Enabled:=false;
date6.Enabled:=false;
dbedit15.Enabled:=false;
dbedit18.enabled:=false;
tclient.Close;

Botón Consulta

tclient.Close;
dbedit2.Text:='';
dbedit3.Text:='';
dbedit4.Text:='';
dbedit5.Text:='';
dbedit6.Text:='';
dbedit7.Text:='';
dbedit8.Text:='';
dbedit9.Text:='';
dbedit10.Text:='';
dbedit11.Text:='';
dbedit13.Text:='';
dbedit15.Text:='';
dbedit16.Text:='';
dbedit17.Text:='';
dbedit18.Text:='';
dbedit19.Text:='';
dbedit20.Text:='';
dbedit21.Text:='';
dbedit22.Text:='';
dbedit23.Text:='';
dbedit24.Text:='';
fbuscli:=tfbuscli.create(self);
fbuscli.tclient.active:=true;
fbuscli.showmodal;
tclient.Open;
tclient.edit;
tclient.FieldByName('Cod_cli').Asstring:=fbuscli.tclient.fieldbyname('Cod_cli').asstring;
tclient.FieldByName('f_alta').Asdatetime:=fbuscli.Tclient.fieldbyname('f_alta').Asdatetime;
tclient.FieldByName('nomb').AsString:=fbuscli.Tclient.fieldbyname('nomb').AsString;
tclient.FieldByName('apelli').AsString:=fbuscli.Tclient.fieldbyname('apelli').AsString;
tclient.FieldByName('direc').AsString:=fbuscli.Tclient.fieldbyname('direc').AsString;
tclient.FieldByName('local').AsString:=fbuscli.Tclient.fieldbyname('local').AsString;
tclient.FieldByName('provi').AsString:=fbuscli.Tclient.fieldbyname('provi').AsString;
tclient.FieldByName('cpostal').AsString:=fbuscli.Tclient.fieldbyname('cpostal').AsString;
tclient.FieldByName('dni').AsString:=fbuscli.Tclient.fieldbyname('dni').AsString;
tclient.FieldByName('telf').AsString:=fbuscli.Tclient.fieldbyname('telf').AsString;
tclient.FieldByName('movil').AsString:=fbuscli.Tclient.fieldbyname('movil').AsString;
tclient.FieldByName('n_permi').AsString:=fbuscli.Tclient.fieldbyname('n_permi').AsString;
tclient.FieldByName('f_exp').Asdatetime:=fbuscli.Tclient.fieldbyname('f_exp').Asdatetime;
tclient.FieldByName('f_cad').Asdatetime:=fbuscli.Tclient.fieldbyname('f_cad').Asdatetime;
tclient.FieldByName('tipo').AsString:=fbuscli.Tclient.fieldbyname('tipo').AsString;
tclient.FieldByName('nomb_seg').AsString:=fbuscli.Tclient.fieldbyname('nomb_seg').AsString;
tclient.FieldByName('n_segur').AsString:=fbuscli.Tclient.fieldbyname('n_segur').AsString;
tclient.FieldByName('f_segexp').Asdatetime:=fbuscli.Tclient.fieldbyname('f_segexp').Asdatetime;
tclient.FieldByName('f_segcad').Asdatetime:=fbuscli.Tclient.fieldbyname('f_segcad').Asdatetime;
tclient.FieldByName('n_pere').AsString:=fbuscli.Tclient.fieldbyname('n_pere').AsString;
tclient.FieldByName('f_expe').Asdatetime:=fbuscli.Tclient.fieldbyname('f_expe').Asdatetime;
tclient.FieldByName('f_cade').Asdatetime:=fbuscli.Tclient.fieldbyname('f_cade').Asdatetime;
tclient.FieldByName('tipo1').AsString:=fbuscli.Tclient.fieldbyname('tipo1').AsString;
altacli.Enabled:=false;
dbedit15.visible:=true;
dbedit18.Visible:=true;
date7.Visible:=false;
dbedit11.Enabled:=false;
dbedit11.visible:=true;
bitbtn1.Enabled:=true;
bitbtn3.Enabled:=true;
dbedit18.enabled:=false;
dbedit19.Visible:=true;
dbedit20.Visible:=true;
dbedit21.Visible:=true;
dbedit22.visible:=true;
dbedit23.Visible:=true;
dbedit24.Visible:=true;
dbedit19.enabled:=false;
dbedit20.enabled:=false;
dbedit21.enabled:=false;
dbedit22.enabled:=false;
dbedit23.enabled:=false;
dbedit24.enabled:=false;
borrar.Enabled:=true;
bitbtn13.enabled:=false;
bitbtn14.Enabled:=false;
fbuscli.Free;

Primero hago una busqueda, pulsando el botón de consulta y lo añado al form principal, luego paso a editar y por último accedo a grabar y.... KEY VIOLATION.


Gracias por el interés y un saludo.
Responder Con Cita
  #5  
Antiguo 15-05-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
el fbuscli usa el locate o el lookup? el locate reposiciona el cursor en la tabla...
Responder Con Cita
  #6  
Antiguo 15-05-2008
Alsaca Alsaca is offline
Miembro
 
Registrado: dic 2007
Posts: 31
Poder: 0
Alsaca Va por buen camino
la busqueda la hago utilizando Setkey y Gotonearest.


Gracias.
Responder Con Cita
  #7  
Antiguo 15-05-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
el gotonearest tb reposiciona el cursor. Prueba de conseguir los datos antes del tclient.edit, a ver q pasa (primero los cargas en unas variables, luego tclient.edit, y los pones y post)

PD : tclient.FieldValues['...'] := en vez de tclient.FieldByName('...').As . Creo q estas copiando el objeto en si mismo, no el valor q contiene.

Última edición por coso fecha: 15-05-2008 a las 23:23:31.
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
Violation key maravert Conexión con bases de datos 3 17-05-2006 12:00:50
Key violation jmedina Conexión con bases de datos 3 18-06-2004 22:08:40
Key Violation servicomp Tablas planas 6 15-05-2004 06:23:44
key violation miguelb Varios 0 31-10-2003 18:29:54
Key Violation Tonio Conexión con bases de datos 3 28-07-2003 18:57:26


La franja horaria es GMT +2. Ahora son las 06:24:36.


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