Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Problemas en el Post con IBTable (https://www.clubdelphi.com/foros/showthread.php?t=95016)

pockelsm3 09-01-2021 22:06:43

Problemas en el Post con IBTable
 
saludos a todos

ver si puedo encontrar alguna ayuda, estoy utilizando los componentes IBDataset e IBTable para un formulario Master Detail, sucede que al ajecutar los comando Post de cada componente, en el Dataset se guardan sin problemas, pero en el Table no.

ambos componentes les tengo activado el CaheUpdate, al momento del post les ejecuto el ApplyUdate, y al transaccion le ejecuto el comando CommitRetaining, como mencioné anterormente, el dataset guarda la data pero el Table no.

1ra vez que estoy teniendo este problema con este componente, nunca me había sucedido.


gracias mi gente de antemano, por sus aporte y ayudas a los menos diestros

Casimiro Notevi 10-01-2021 00:58:03

Sin ver el código es que casi imposible ayudar.

pockelsm3 10-01-2021 01:27:27

Cita:

Empezado por Casimiro Notevi (Mensaje 539650)
Sin ver el código es que casi imposible ayudar.

saludos casimiro, no agregue codigo porque son solo los comandos

IBTable.Post
IBTable.ApplyUdate
IBTransation.CommitRetaining;

los datos son alimentados por Edit,Combobox y demas componetes que seleccionen datos


justo al terminar el CommitRetaining, entiendo que la informacion debio guardarse, desaparecen los datos de los componentes y cuando voy a la base de datos, esta vacia la tabla

Casimiro Notevi 10-01-2021 11:36:24

¿En algún momento haces commit?

ecfisa 10-01-2021 14:58:31

Hola.

¿ Cuál componente es el maestro y cuál el detalle ?
¿ Como tenes establecida la relación master-detail ?

Saludos :)

pockelsm3 10-01-2021 16:21:07

Cita:

Empezado por ecfisa (Mensaje 539654)
Hola.

¿ Cuál componente es el maestro y cuál el detalle ?
¿ Como tenes establecida la relación master-detail ?

Saludos :)

El master es el IBDataset, el detail es el IBTable
El detail tiene configurado el master source del dataset, para que haga la relacion de lugar

ecfisa 10-01-2021 16:55:17

Hola.

Cuando usas componentes IBX en relación maestro-detalle con CachedUpdates, debes desactivar la propiedad DataSource del detalle al momento de aplicar las actualizaciones.
Eso se debe a que cuando el DataSet aplica actualizaciones, envía un mensaje al DataSource como que el cursor se ha reposicionado, haciendo que se cierre y reabra en la nueva posición. Consecuentemente, se pierde la referencia.

La solución es desactivar el DataSource al momento de aplicar actualizaciones y restaurarlo después. V.gr.:
Código Delphi [-]
   Detalle.DataSource := nil;
   try
     Maestro.ApplyUpdates;
     Detalle.ApplyUpdates;
   finally
     Detalle.DataSource := DataSourceMaster;
   end;

Otros enlaces que se ha tratado este tema:
Saludos :)

pockelsm3 12-01-2021 00:17:00

Saludos Todos

Encontre el problema lo que me estaba causando el inconveniente con el guardado de la tabla.

sucede que habia cambiado la forma de asignar el RECID o "valor unico", anteriormente lo hacia en los eventos after insert, pero ahora los estaba asignando en el before post como la tabla no tenia valor en los campos que las relacionaban, a la hora del post, se perdia la data del Detalle. :o

gracias de todas forma por sus consejo e interes en ayudar.

PERO AHORA TENGO OTRO PROBLEMA :confused:

resulta que en el mismo master detail, llamo a otro formulario en "show modal" para seleccionar datos especificos y mandarlos al master detail.

el caso es que luego de seleccionar los datos que se requieren, al precionar el botor Aceptar, desde el form showmodal ejecuto un procedimiento que esta en el form master detail, aqui es cuando me da un error en que las propiedades value de los campo de la tabla son inaccesibles.

el procedimiento que ejecuto esta declarado Publico
Código Delphi [-]
  private
    { Private declarations }
  public
    { Public declarations }
    procedure ModificarNCF(pNCF,pFact,CalcT:String;pFecha:TDateTime;DescV,DescP:Double);
    procedure AgregarLineasDevolucion(iCode,iName,iAlm,iUnd,iRef,iIGrup:String;iQty,
                   iPrice,iBruto,iDesc,iDescP,iDescVP,iItbis,iNeto:Double);
  end;

procedure TfrmSalesReturn.ModificarNCF(pNCF,pFact,CalcT:String;pFecha:TDateTime;DescV,DescP:Double);
begin
  DevTableFACTURA.Value := pFact;
  DevTableTAXCALC.Value := CalcT;
  DevTableNCF.Value := pNCF;
  DevTableFLINKFACT.Value := pFecha;
  DevTableDESCVALOR.Value := DescV;
  DevTableDESCPORC.Value := DescP;
  DevTableDESCPORCVALOR.Value := Valor_Porcentaje(DevTableSEBTOTALNETO.Value,DevTableDESCPORC.Value);
end;
ese es el procemiento que se manda a ejecutar y la forma en que esta declarado

ecfisa 12-01-2021 04:38:47

Hola.

Primero que nada me alegra que encontraras solución a tu problema.

Por otro lado, cuando pongas código en tus mensajes encierralo entre etiquetas de este modo:
[delphi]
Aquí tu codigo delphi ...
[/delphi]
ya edité tu mensaje agregándolas.

Y, cuando tengas que hacer una pregunta no relacionada con el hilo inicial, comienza esa nueva consulta en un nuevo hilo.

Saludos y gracias por tu colaboración :)

pockelsm3 12-01-2021 13:15:10

Cita:

Empezado por ecfisa (Mensaje 539665)
Por otro lado, cuando pongas código en tus mensajes encierralo entre etiquetas de este modo:

Gracias Ecfisa, no sabia como hacerlo, ahora si

Cita:

Empezado por ecfisa (Mensaje 539665)
Y, cuando tengas que hacer una pregunta no relacionada con el hilo inicial, comienza esa nueva consulta en un nuevo hilo.

con lo del nuevo tema, pense en hacerlo el nuevo hilo, pero como estaba respondiendo dando la aclaratoria de mi problema, pense que era posible seguir en mismo hilo, ahora mismo procedere a crear el nuevo hilo, con el tema

gracias a todos :)

Casimiro Notevi 12-01-2021 19:21:53

También con el icono, y te ahorras teclear:




La franja horaria es GMT +2. Ahora son las 04:58:23.

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