Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-11-2010
Avatar de edgwin
edgwin edgwin is offline
Miembro
 
Registrado: abr 2006
Ubicación: Guadalajara Jal. Mex
Posts: 163
Poder: 21
edgwin Va por buen camino
Record/Key deleted

Buen dia amigos del club!

Tengo un problema con una aplicacion en delphi. Al intentan "Postear" un nuevo registro en una tabla me genera el siguiente error:

Record/Key deleted.

Utilizo Delphi 2010 con informix. Cabe mensionar que la tabla donde quiero hacer el post no contienen llaves primarias y contiene un campo autoincrementable (creo que va por ahi el problema).

Código Delphi [-]
with DM.tblMKard do
begin
  if not Active then
    Active := true;
    DM.dsMKard.DataSet := nil;
    Close;
    Open;
    Insert;
    FieldByName('PEDI').AsInteger := StrToInt(cbxIsot.Items[cbxIsot.ItemIndex].Text[2]);
    FieldByName('ISOT').asInteger  := StrToInt(cbxIsot.Items.Items[cbxIsot.ItemIndex].Text[4]);
    vActi := StrToFloat(dbeActi.Text);
    if cbxUM.Text = 'mCi' then
      FieldByName('ACTI').AsFloat := DM.fncmCi2uCi(vActi)
    else
      FieldByName('ACTI').AsFloat := vActi;
    FieldByName('VOLU').AsFloat    := StrToFloat(dbeVolu.Text);
    FieldByName('TECN').AsInteger  := DM.gTenc;
    FieldByName('FECH').AsDateTime := now;
    if _actual then
      FieldByName('TIPOMOVI').AsString := 'D'
    else
      FieldByName('TIPOMOVI').AsString := 'E';
    FieldByName('DESCMOVI').AsString := '1';
    FieldByName('DOCU').AsString := vDocu;
    FieldByName('LOTE').AsString := cbxIsot.Items.Items[cbxIsot.ItemIndex].Text[1];
    FieldByName('UNIDMEDI').AsString := cbxUM.Text;
    if _actual then
      FieldByName('TipoReng').AsString := 'S'
    else
      FieldByName('TipoReng').AsString := 'P';
  Post; {******* AQUI MARCA EL ERROR **********}
   ...
end;

Lo gracioso (bueno no tanto para mi) es que sucede solo en ocaciones. Alguien sabe a que se pueda deber este error.Saludos!
Responder Con Cita
  #2  
Antiguo 12-11-2010
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
Yo creo que toda tabla debe de tener una clave primaria, que es la que suelen utilizar los motores para resposicionarse cuando hay cambios; inserciones, borrados, etc...

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 12-11-2010
Avatar de edgwin
edgwin edgwin is offline
Miembro
 
Registrado: abr 2006
Ubicación: Guadalajara Jal. Mex
Posts: 163
Poder: 21
edgwin Va por buen camino
Gracias por responder.

Si en efecto, desafortunadamente yo no tengo permisos en la base de datos de modificar la estructura de la BD. Pero bueno, me tendre que echar un round con la persona encargada para que me le agregue llaves a las BDD.

Saludos!
Responder Con Cita
  #4  
Antiguo 12-11-2010
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Poder: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
En las primeras líneas creo que abres y cierras la tabla varias veces

Código Delphi [-]
with DM.tblMKard do
begin
  if not Active then
    Active := true; {Aqui la abres}
    DM.dsMKard.DataSet := nil;
    Close; {Aqui la cierras}
    Open; {Aqui la abres}
[...]

Quizás eso moleste un poco a la tabla y no se entere bien de cual es el contador que le toca.

Tambien parece que quitas la propiedad DataSet a un DataSource.
Si lo que quieres es que los componentes visuales no se enteren, deberías hacerlo con un Disable/EnableControls

Código Delphi [-]
with DM.tblMKard do
begin
  DisableContros
  if not Active then
    Active := true;
  Insert;
  [...]
  Post;
  EnableControls;
end;
[...]

Y finalmente puede ser que la tabla no esté en estado dsBrowse al momento de insertar, aunque creo que daría algún otro error


Código Delphi [-]
with DM.tblMKard do
begin
  DisableContros
  if not Active then
    Active := true;
  if (state = dsBrowse) then
  begin
     Insert;
     [...]
     Post;
  end else
     {La tabla estaba en un modo que no debía. Qizás dsInsert, dsEdit, etc.}
  EnableControls;
end;
[...]

Última edición por duilioisola fecha: 12-11-2010 a las 21:02:23.
Responder Con Cita
  #5  
Antiguo 12-11-2010
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Poder: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
En esta página hablan sobre el tema:

Cita:
Simple Inserts/Updates
-----------------------------------------------------------------
{...}
Informix Tables

Although Informix Serial fields are updateable, if their
autoincrement feature is to be used, then the Required property
of field components based on them should be set to False. Do
this in the same manner described for Paradox Tables.
Aparentemente debes poner la propiedad Required del campo autoincremental a False.
Responder Con Cita
  #6  
Antiguo 18-11-2010
Avatar de edgwin
edgwin edgwin is offline
Miembro
 
Registrado: abr 2006
Ubicación: Guadalajara Jal. Mex
Posts: 163
Poder: 21
edgwin Va por buen camino
Gracias a todos por responder.

* marcoszorrilla: Ya le agregue la llave primaria a la tabla, y sigue marcando el error.
* duilioisola: Ya quite las lineas .. if not active then Active := true;
Agregue en el codigo: Enabled/DisabledControls
No se establecer la propiedad "Required" a falso (utilizo ServerStudio)

Sigo sin exito. Lo peor de todo es el codigo lo tengo en un bloque try..except..end. Si existe error, que deshaga la operacion, pero se la pasa por el arco del triunfo ya que si postea la informacion.

Alguna idea .... ??
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
Error index unexpectedly deleted DamianG Firebird e Interbase 7 23-09-2010 21:09:19
Record Key/Deleted Ricardo Alfredo Varios 4 13-03-2008 11:08:35
REcord/key deleted Luis Castillo Varios 1 02-11-2005 00:22:37
error: Record/Key Deleted al importar datos a Access Capo Conexión con bases de datos 0 08-03-2005 22:59:21
Error Record/key deleted tbolzan Conexión con bases de datos 1 22-10-2004 15:44:07


La franja horaria es GMT +2. Ahora son las 22:55:21.


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