Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

ayuda con transacciones

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: ayuda con transacciones Responder citando

Hola, estoy haciendo una aplicacion, esta tiene una sola pantalla en la cual actualizo una tabla, son dos puestos, cuando en uno borro un registro, el DBgrid lo actualiza pero el otro puesto no lo actualiza hasta que cierro y vuelvo a abrir la aplicacion.
la cosa esta asi...
Uso una base de interbase
es una forma principal, con un menu
por medio de este menu llamo a otra forma (la que tiene el grid) que tiene un menu contextual con la opcion borrar
al pulsar sobre borrar, hace
Código:

    losdatos->Trans->StartTransaction();
    losdatos->IBemple->Delete();
    losdatos->Trans->CommitRetaining();
    losdatos->Trans->Active=false;
    losdatos->SPevento->ExecProc();

donde SPevento es un evento almacenado que viene que se ejecuta y al recibirlo el builder hace lo siguiente
Código:

    if (EventName == "EVempleados")
        {
        //losdatos->IBemple->Refresh();
       losdatos->IBemple->ApplyUpdates();
        }

la cosa es que no se como hacer que refresque, actualize el segundo puesto.

si alguien tiene alguna idea o ayuda

Gracias!
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Saludos...

No sé con que componentes estes trabajando, pero, te sugiero lo siguiente:

Marcar el registro seleccionado, cerrar, abrir el dataset y moverse el registro que se tenia seleccionado.

Código:

       if (EventName == "EVempleados")
        {
                AnsiString Marca;
                Marca = losdatos->IBemple->Bookmark;

                try {
                           losdatos->IBemple->Close();
                           losdatos->IBemple->Open();
                }
                __finally {
                           losdatos->IBemple->Bookmark = Marca;
                }

        }


Es una forma de hacerlo, la otra puede ser enviar un mensaje al usuario diciendo que se ha modificado la información y que mediante algún botón el pueda referscar los datos.
_________________
Quien hace una pregunta teme parecer un ignorante durante cinco minutos, quien no pregunta se mantiene ignorante toda la vida.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Gracias, buildero!

Hola, si estoy usando....
componente (nombre)
------------------------------
TForm(empleados)
DataModule(losdatos)
IBDatabase (basededatos)
IBTable(IBemple)
IBEvent(IBEvento)
IBStockProcedure(SPevento)
IBTransaction(Trans)

y pense en algo parecido a lo que tu pusiste...

Código:

if (EventName == "EVempleados")
    {
    //Application->MessageBoxA("REFRESCO!","ATENCION",MB_OK);
    losdatos->IBemple->Refresh();
    losdatos->IBemple->ApplyUpdates();
    empleados->DBGrid1->Refresh();
    TBookmark registro;
    registro=losdatos->IBemple->GetBookmark();
    losdatos->IBemple->Close();
    losdatos->IBemple->Open();
    losdatos->IBemple->GotoBookmark(registro);
    losdatos->IBemple->FreeBookmark(registro);
    }

pero sigue igual
-abro la misma pantalla(la del Grid) en dos ordenadores(PC1 y PC2) a la vez viendo los mismos registros
-en PC1 borro un registro, se ejecuta el evento, borra y actualiza el grid, mientras que en PC2 esta todo como si no hubiera pasado nada (es más, cierro la forma, la vuelvo a abrir y todo igual)
-ahora, cierro la aplicacion en PC1 y automaticamente salta el evento en PC2 y acutaliza el Grid.

supongo que debe ser algo sencillo que se me debe estar escapando...
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Saludos...

Pues mira, yo trabajo con los siguientes paramteros para las transacciones, no sé tengas configuarada tu transacción.


    write
    read_committed
    rec_version
    nowait


Yo trabajo de esta forma y hasta el momento funciona todo bien.
Volver arriba
Mensaje    Asunto: Responder citando

El del mensaje anterior fui yo. Cool
_________________
Quien hace una pregunta teme parecer un ignorante durante cinco minutos, quien no pregunta se mantiene ignorante toda la vida.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

hola
si mira a las transacciones solo le puedo poner tres opciones de las cuatro que has posteado

Como le pongo las cuatro¿?¿?

cuando hago dobleclick sobre las transacciones cual radio marcas¿?

gracias!
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

LO LOGRE!!!!!!

ahora me actualiza los dos grids apenas borro, modifico o añado


GRACIAS BUILDERO!!!
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Selecciono Read_commited, pero le agrego arbitrariamente el parametro write.
_________________
Quien hace una pregunta teme parecer un ignorante durante cinco minutos, quien no pregunta se mantiene ignorante toda la vida.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.