| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
kekal Ens


Registrado: 21 Jun 2005Mensajes: 37Ubicación: España
|
Publicado: Lun 26 Sep, 2005 9:29 am Asunto: ayuda con transacciones |
|
|
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 |
|
 |
Buildero Master


Registrado: 23 Dic 2003Mensajes: 523Ubicación: Puebla, México
|
Publicado: Lun 26 Sep, 2005 3:21 pm Asunto: |
|
|
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 |
|
 |
kekal Ens


Registrado: 21 Jun 2005Mensajes: 37Ubicación: España
|
Publicado: Lun 26 Sep, 2005 3:45 pm Asunto: |
|
|
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 |
|
 |
Invitado
|
Publicado: Lun 26 Sep, 2005 3:57 pm Asunto: |
|
|
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 |
|
 |
Buildero Master


Registrado: 23 Dic 2003Mensajes: 523Ubicación: Puebla, México
|
Publicado: Lun 26 Sep, 2005 3:59 pm Asunto: |
|
|
El del mensaje anterior fui yo.  _________________ Quien hace una pregunta teme parecer un ignorante durante cinco minutos, quien no pregunta se mantiene ignorante toda la vida. |
|
| Volver arriba |
|
 |
kekal Ens


Registrado: 21 Jun 2005Mensajes: 37Ubicación: España
|
Publicado: Lun 26 Sep, 2005 4:08 pm Asunto: |
|
|
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 |
|
 |
kekal Ens


Registrado: 21 Jun 2005Mensajes: 37Ubicación: España
|
Publicado: Lun 26 Sep, 2005 4:28 pm Asunto: |
|
|
LO LOGRE!!!!!!
ahora me actualiza los dos grids apenas borro, modifico o añado
GRACIAS BUILDERO!!! |
|
| Volver arriba |
|
 |
Buildero Master


Registrado: 23 Dic 2003Mensajes: 523Ubicación: Puebla, México
|
Publicado: Lun 26 Sep, 2005 4:29 pm Asunto: |
|
|
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 |
|
 |
|