Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-03-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por jafera Ver Mensaje
Gracis Eliseo, tu siempre al rescate de los naufragos, ...
Hola Josep.

Es todo un honor que me confundas con el maestro egostar, pero como hoy no anda por aquí, tendrás que conformarte con este aprendiz.

Ahora volviendo al tema:
Cita:
Empezado por jafera Ver Mensaje
La tabla detalle la tengo en autoedit:=True, probaré si poneiendola a False no ocurre.
No pareciera que la propiedad AutoEdit esté provocando la situación, me refería a que la tabla detalle permaneciera cerrada durante la escritura en la tabla maestro, por si algún evento "desapercibido" estuviera escribiéndola y así poder detectarlo.

De otro modo no concibo la situación, por que al guardar datos en la tabla maestra usando Append, no se modifica de forma automática ningún valor en la tabla detalle ya que la tabla maestro todavía no tiene ningún detalle asociado hasta el momento. Y más raro aún, que este modificando un registro que no esta ajustado a la relación maestro/detalle si esta fué correctamente establecida...

Aunque no es exáctamente el mismo caso, si estas trabajando con componentes IBX y estas usando CachedUpdates revisa este hilo: Problemas inserción de registros en IBDataset maestro-detalle y Foreign Key.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 07-03-2013 a las 18:29:39. Razón: ortografía
Responder Con Cita
  #2  
Antiguo 07-03-2013
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 585
Poder: 20
jafera Va por buen camino
Upps., me confundí...

Bueno al lio que es lo que vale, las pruebas realizadas hasta el momento son:

Puntos de interrupcion en todas las lineas que hacen referencia al campo F_ModulDades.RebutAuxCAMPIONAT.Value

Un addwatch con el campo como referencia y la sorpresa es que en el proceso de alta este valor vale "S" pero referenciado al registro anterior, que es lo que no logro entender

No veo en que momento me pasa de "S" a "N".

Sigo investigando

Saludos
Responder Con Cita
  #3  
Antiguo 07-03-2013
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 585
Poder: 20
jafera Va por buen camino
Gracias cloayza.

El post lo realizo mas tarde cuando acabo de insertar todos los datos en la cabecera, esto solo llena el id_rebut y la fecha de forma automatica, luego empiezo a poner datos de codigo de barras, ciudades, etc.

No se probaré si con un post y edit a continuacion no pasa.

Pruebo y comento

Saludos
Responder Con Cita
  #4  
Antiguo 07-03-2013
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 948
Poder: 25
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Si es así como estas trabajando estaría bien como aparece mal principio...

Solo es que al ver el código pense que eso era todos los campos que estabas agregando...

Sería bueno que colocaras todo el código que usas para agregar el registro, talvez en alguna parte estes saltando de registro o realizando alguna cosilla que no has visto...

Saludos
Responder Con Cita
  #5  
Antiguo 07-03-2013
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 585
Poder: 20
jafera Va por buen camino
He probado con un post despues del ID y la fecha y zascas falla igual.

No hay problema en poner el codigo seran unas cuantas lineas de codigo pero lo haré.

Gracias
Responder Con Cita
  #6  
Antiguo 07-03-2013
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 585
Poder: 20
jafera Va por buen camino
Aqui va todo lo relacionado con el proceso de alta, en ningun momento hago referencia a la tabla auxiliar ya que hasta que la principal no se graba, el ID no tiene valor con lo cual no puedo relacionarlo

Código Delphi [-]
 
procedure TF_Rebut.ToolButton1Click(Sender: TObject);
var id: integer;
begin
        ToolBar1.Visible := False;
        ToolBar2.Visible := True;
        Max_Id.Close;
        Max_Id.Open;
        if Max_IdMAX.Text = '' then
        begin
                id:=1;
        end
        else
        begin
                id := StrToInt(Max_IdMAX.Text)+1;
        end;
        F_ModulDades.Rebut.Append;
        F_ModulDades.RebutID_REBUT.Value := id;         //aqui con el addwacth el valor es "S" pero no tiene que ser ya que no hay relacion
        F_ModulDades.RebutDATA.Value := Date;
        F_ModulDades.RebutDATA.FocusControl;
end;
                                                            //aqui con el addwacth el valor es "N" pero no tiene que ser ya que no hay relacion, aun no he dado ninguna alta

procedure TF_ModulDades.RebutAfterDelete(DataSet: TDataSet);
begin
        IBTRebuts.CommitRetaining;
end;
procedure TF_ModulDades.RebutAfterPost(DataSet: TDataSet);
begin
        IBTRebuts.CommitRetaining;
end;
procedure TF_ModulDades.RebutBeforePost(DataSet: TDataSet);
begin
        if RebutCODI_CLUB.Value = 0 then
        begin
                ShowMessage('Has de possar un club abans de gravar');
                F_Rebut.DBEdit21.SetFocus;
                Abort;
        end;
end;
procedure TF_ModulDades.RebutNewRecord(DataSet: TDataSet);
begin
        RebutI1.Value := 'N';
        RebutI2.Value := 'N';
        RebutI3.Value := 'N';
        RebutI4.Value := 'N';
        RebutI5.Value := 'N';
        RebutTI1.Value := 0;
        RebutTI2.Value := 0;
        RebutTI3.Value := 0;
        RebutTI4.Value := 0;
        RebutTI5.Value := 0;
        RebutARBITRES.Value := 0;
        RebutIMPORT.Value := 0;
        RebutMATERIAL.Value := 0;
        RebutTOTAL_REBUT.Value := 0;
        RebutSUSPENSIO.Value := 'N';
        RebutASPIRANT.Value := 'N';
        RebutPREU_FIX.Value := 'N';
        RebutZONA.Value := 0;
        RebutTRANSP.Value :='N';
        RebutGRAVAT.Value :='N';
        RebutACUMULAT.Value :='N';
        RebutPREU_FIX.Value :='N';
        RebutCAMPIONAT.Value := IncrementsCAMPIONAT.Value;
        RebutFEINER.Value := IncrementsFEINER.Value;
        RebutDOS_SECTORS.Value := IncrementsDOS_SECTORS.Value;
        RebutI10.Value := IncrementsI10.Value;
        RebutID_USUARI.Value := F_Inici.Usuari;
        RebutCREA_REBUT.Value := ConfiguracioTIPUS_REBUT.Value;
end;
procedure TF_Rebut.ToolButton6Click(Sender: TObject);
begin
        If F_ModulDades.Rebut.State in [dsEdit,dsInsert] then
        begin
              If F_ModulDades.RebutSUSPENSIO.Value = 'N' then
              begin
                      F_ModulDades.RebutTI4.Value := 0;
                      F_ModulDades.RebutTI5.Value := 0;
                      If F_ModulDades.RebutIMPORT_2.Value <> 0 then
                      begin
                              F_ModulDades.RebutTOTAL_REBUT.Value:= F_ModulDades.RebutIMPORT_2.Value;
                      end
                      else
                      F_ModulDades.RebutTOTAL_REBUT.Value := StrToInt(DBEdit4.text) + F_ModulDades.RebutTI1.Value +     F_ModulDades.RebutTI2.Value +         F_ModulDades.RebutTI3.Value;
              end
              else
              If F_ModulDades.RebutSUSPENSIO.Value = 'S' then
              begin
                      If F_ModulDades.RebutI4.Value = 'S' then
                      begin
                              F_ModulDades.RebutTI4.Value := F_ModulDades.RebutIMPORT.Value / 2;
                              F_ModulDades.RebutTI5.Value := 0;
                              F_ModulDades.RebutTOTAL_REBUT.Value := F_ModulDades.RebutTI2.Value + F_ModulDades.RebutTI3.Value +          F_Moduldades.RebutTI4.Value;
                      end
                      else
                      If F_ModulDades.RebutI4.Value = 'N' then
                      begin
                              F_ModulDades.RebutTI4.Value := 0;
                              F_ModulDades.RebutTI5.Value := F_Moduldades.RebutARBITRES.Value * F_Moduldades.RebutI10.Value;
                              F_ModulDades.RebutTOTAL_REBUT.Value := F_ModulDades.RebutTI2.Value + F_ModulDades.RebutTI3.Value +          
F_Moduldades.RebutTI5.Value + F_ModulDades.RebutKM_TOTALS.Value * F_ModulDades.IncrementsPREU_KM.Value;
                      end;
              end;
              F_ModulDades.Rebut.Post;
        end;
        ToolBar2.Visible := False;
        ToolBar1.Visible := True;
        DBEdit1.Enabled := True;
end;

Saludos

Última edición por Casimiro Noteví fecha: 07-03-2013 a las 22:49:36.
Responder Con Cita
  #7  
Antiguo 08-03-2013
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 585
Poder: 20
jafera Va por buen camino
Solucionado.

El problemna estaba en este pedazo de código:

Código Delphi [-]
 
procedure TF_ModulDades.RebutI1Change(Sender: TField);
begin
        if RebutI1.Value = 'S' then
        begin
                RebutTI1.Value := RebutCAMPIONAT.Value;
        end;
        if RebutI1.Value = 'N' then
        begin
                if  F_Rebut.DBEdit1.Text <>'' then
                begin
                        F_Rebut.Posa_N.Close;
                        F_Rebut.Posa_N.UnPrepare;
                        F_Rebut.Posa_N.SQL.Text:= 'UPDATE RE0007 SET CAMPIONAT = ''N'' WHERE ID_REBUT =:ID_REBUT';
                        F_Rebut.Posa_N.ParamByName('ID_REBUT').AsInteger := RebutID_REBUT.Value; // aqui yo tenia StrToInt(DBEdit1.Text) y evidentemente DBEdit1.Text tenia como valor el registro anterior
                        F_Rebut.Posa_N.Prepare;
                        F_Rebut.Posa_N.Open;
                        RebutAux.Close;
                        RebutAux.Open;
                end;
        end;
end;

Gracias a todos por vuestro interés.

Josep
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Como obtener el registro anterior al ultimo MRang14 SQL 11 07-05-2008 23:48:33
Como envio un correo cuando se da de alta un nuevo registro solnaciente Internet 2 08-09-2006 15:06:03
Alta en registro de la fecha altual perillan Conexión con bases de datos 8 19-11-2005 19:24:04
Error al dar de alta un registro perla22 Tablas planas 1 17-05-2004 16:49:38
No me inserta un registro nuevo, me modifica el anterior vhirginia Conexión con bases de datos 10 11-05-2004 13:04:38


La franja horaria es GMT +2. Ahora son las 03:47:57.


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