Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Insert con ClientDataSet (https://www.clubdelphi.com/foros/showthread.php?t=57459)

Rockin 15-07-2008 16:16:18

Es que en el cliente no está declarado el FIBDataBase,está en el servidor de capa intermedia por lo que no puedo realizar el Commit en la base de datos.

En la respuesta de Al González anterior, explica que el DataSetProvider es el encargado de activar las transacciones asociadas al DataSet en cuestión.

Seguire mirando. Gracias.

Al González 15-07-2008 16:36:31

Cita:

Empezado por Rockin (Mensaje 300575)
...En la respuesta de Al González anterior, explica que el DataSetProvider es el encargado de activar las transacciones asociadas al DataSet en cuestión...

¡'pérate, 'pérate! Repito lo que dije:
Cita:

Empezado por Al González (Mensaje 294048)
En efecto, eso hace el componente TDataSetProvider cuando la conexión no tiene una transacción activa en ese momento. Es decir, si el programa no ha empezado una transacción explícitamente, el componente proveedor la establece y cierra cuando aplica las actualizaciones...

Todo parece indicar que ya hay una transacción abierta. Lo primero que habría que investigar es cómo se está abriendo esa transacción para optar por una de dos soluciones:

1. Evitar que haga ese "start transacción".

2. Hacer que tu módulo de datos de la capa intermedia exporte un método que te permita llamar al método "Commit" (o como se llame) de tu componente Database.

Es usual que la capa intermedia exporte algunos métodos (procedimientos) para facilitar que los programas cliente hagan ciertas operaciones contra la base de datos.

Saludos.

Al.

enecumene 15-07-2008 16:55:02

Al lo ha explicado mejor que yo, no creo que exista algo más claro que eso :)

Saludos.

Rockin 15-07-2008 16:55:21

Si lo explica de puta madre, pero no lo veo.

Yo tengo un FIBTransaction declarado, lo pongo active := False, para que el DataSetProvider la active? o que hago?

En breves habrá un forero menos porque me voy a suicidar.

enecumene 15-07-2008 16:58:15

Cita:

Empezado por Rockin (Mensaje 300592)
...
En breves habrá un forero menos porque me voy a suicidar.

Hombre, no seas tan drástico :p, eso es lo menos que queremos, venga pasate a la taberna y bebamos unas chelas ;).

Saludos.

Rockin 15-07-2008 17:38:47

Lo conseguí como bien decia el ilustrisimo señor Al González, he tenido que realizar lo siguiente:

Código Delphi [-]
procedure TPruebaFirebird.FIBDataSetProviderTurnosAfterApplyUpdates(
  Sender: TObject; var OwnerData: OleVariant);
begin
    
         if FIBTransactionTurnos.InTransaction then
         begin
                FIBTransactionTurnos.Commit;
         end;
end;

Gracias a vosotros y el magnifico libro la cara oculta de delphi 6 lo conseguí.

Repito ¡GRACIA!


La franja horaria es GMT +2. Ahora son las 22:06:39.

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