 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
JesúsGandia Master


Registrado: 17 Jul 2004Mensajes: 403Ubicación: Gandia, Valencia
|
Publicado: Mie 08 Jun, 2005 3:34 am Asunto: Transacciones en Interbase |
|
|
Tengo ya casi acabada mi aplicación, pero para poder ejecutarla como cliente-servidor, necesito saber como funcionan las transacciones, es decir, cuando debo de iniciarlas y cuando debo de confirmarlas y en que lugar del codigo.
| Código: |
MDatos->IBTransaction->StartTransaction();
MDatos->IBTransaction->Commit();
|
Mi aplicación funciona perfectamente cuando la ejecuto con un solo cliente, pero falla cuando acceden dos usuarios a la base de datos, Internase 7, y por ejemplo intento abrir una nueva mesa que el otro usuario tiene ya abierta. Es un TPV para hostelería.
Creo que el problema radica en que no he tenido en cuenta el inicio y la confirmación de las transacciones. Por ello de mi pregunta.
Actualmente tengo asociado un “IBTransaction” a mi “IBDatabase” y ahí termina todo lo que sé sobre transacciones.
No se si me he explicado o necesitáis mas información. ¿Me podéis ayudar? _________________ Muchos hombres no se equivocan jamás porque no se proponen nada razonable. |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Jue 09 Jun, 2005 4:56 am Asunto: |
|
|
Usando el mismo componente, yo uso las transacciones de la siguiente manera, y no he tenido problemas al realizar programas, multi usuarios
dentro del programa, yo tengo un DataModule donde pongo dicho componente, con las opciones necesarias de conexion.
bien vayamos al grano las caracteristicas son las siguientes
Esta imagen, es dentro del DataModule
Esta otra son las propiedades, del IBTS
en la imagen anterior, te recomiendo poner las propiedades
AutoStopAction y DefaultAction, con los valores, que ves, ya que asi, dejas el trabajo al servidor.
este es el codigo cuando cargo la transaccion
cuando cargo el dataModule, por primera vez, realizo lo siguente
despues que se conecta la base de datos, en el evento AfterConnect de la Base de Datos
| Código: | void __fastcall TDMREMOTO::IBDS3AfterConnect(TObject *Sender)
{
// registrar los eventos..
this->IBES3->Events->Add("RFD");
this->IBES3->RegisterEvents();
//preparar los precedimienots
this->IBSPS3->Prepare();
this->IBSPS3->ExecProc();
// aplicamos la trasacciones pendientes
this->IBTS3->Active = true; //activo la transaccion
this->IBTS3->CommitRetaining(); // aplico, por si existen cambios *opcional
} |
Este codigo es cuando borro un dato de la tabla
| Código: | DMPROVEEDORES->IBDProveedores->Delete();
DMREMOTO->IBTS3->CommitRetaining(); // aplicamos la trasaccion |
este es cuando agrego registro o se modifica, esta en un boton de guardar
| Código: | DMPROVEEDORES->IBDProveedores->Post(); // grabamos en la tabla
DMREMOTO->IBTS3->CommitRetaining(); // aplicamos la trasaccion |
este es cuando cancelo una transaccion.
| Código: | DMPROVEEDORES->IBDProveedores->Cancel(); // cancelamos en la tabla
DMREMOTO->IBTS3->RollbackRetaining(); // aplicamos la trasaccion |
Como te habras dado cuenta, todos ellos empiezan con el prefijo del lugar donde estan y el componente que uso.
IBTS InterBaseTransSaction
DMProveedores / DataModuleProveedores
DMREMOTO / DataModuleRemote
IBDProvedores / InterBaseData para la tabla
Espero que te ayude en algo..
saludos _________________

Ultima edición por Cesar C. Salazar Gonzalez el Vie 03 Nov, 2006 7:09 am, editado 1 vez |
|
| Volver arriba |
|
 |
JesúsGandia Master


Registrado: 17 Jul 2004Mensajes: 403Ubicación: Gandia, Valencia
|
Publicado: Jue 09 Jun, 2005 4:21 pm Asunto: Gracias Cesar, pero... |
|
|
Muchísimas gracias por tu ayuda Cesar, ha sido de gran valor para mi. En la foto del inspector que me mandas hay una propiedad que tienes y yo no, he intentado buscarla en la ayuda de Builder, pero no aparece nada, esa propiedad es “AllowAutoStart” y que tu tienes a TRUE. Yo trabajo con Builder 6 Enterprise. ¿Sabes para que es esta propiedad? Otra vez gracias por todo. _________________ Muchos hombres no se equivocan jamás porque no se proponen nada razonable. |
|
| Volver arriba |
|
 |
Invitado
|
Publicado: Jue 09 Jun, 2005 5:43 pm Asunto: |
|
|
Posiblemente, se deba a que he instalado el archivo IBXBCB608.EXE, que viene de la pagina de builder, es una actualizacion, para instalar el Interbase Admin y posiblemente este los cambie. el componente lo puedes bajar de la pagina de borland. o si no llegaras a encontrarlo, dame una direccion de correo, donde pueda enviarte 2706 kb, ya que te puedo enviar el componente.
saludos. |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Jue 09 Jun, 2005 5:45 pm Asunto: |
|
|
| Anonymous escribió: | Posiblemente, se deba a que he instalado el archivo IBXBCB608.EXE, que viene de la pagina de builder, es una actualizacion, para instalar el Interbase Admin y posiblemente este los cambie. el componente lo puedes bajar de la pagina de borland. o si no llegaras a encontrarlo, dame una direccion de correo, donde pueda enviarte 2706 kb, ya que te puedo enviar el componente.
saludos. |
si ya lo se, el login, jeje _________________
 |
|
| Volver arriba |
|
 |
JesúsGandia Master


Registrado: 17 Jul 2004Mensajes: 403Ubicación: Gandia, Valencia
|
Publicado: Jue 09 Jun, 2005 6:33 pm Asunto: Gracias Cesar |
|
|
Mi direccion Email: jesus66@telefonica.net
Saludos. _________________ Muchos hombres no se equivocan jamás porque no se proponen nada razonable. |
|
| Volver arriba |
|
 |
Crandel Lt


Registrado: 31 May 2005Mensajes: 94Ubicación: Argentina
|
|
| Volver arriba |
|
 |
Crandel Lt


Registrado: 31 May 2005Mensajes: 94Ubicación: Argentina
|
Publicado: Vie 10 Jun, 2005 8:11 pm Asunto: |
|
|
César, por lo que veo en el código que mostraste, mantenes la transacciones abiertas en todo momento no?
Esto trae alguna ventaja o desventaja? _________________ Crandel
"hay 10 tipos de personas, las que ven en binario y las que no"
Angel Zeitoune - Artículo: Generación de eventos en C++Builder |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Sab 11 Jun, 2005 2:05 pm Asunto: |
|
|
si te das cuenta, el evento que me marca JesúsGandia
“AllowAutoStart" me sirve para activar la transaccion automaticamente
asi si no haces nada, la transaccion no se activa, cuando insertas o modificas se activa automaticamente la transaccion. y al aplicarla nuevamente se cierra la transaccion. _________________
 |
|
| Volver arriba |
|
 |
Crandel Lt


Registrado: 31 May 2005Mensajes: 94Ubicación: Argentina
|
Publicado: Sab 11 Jun, 2005 8:11 pm Asunto: |
|
|
Parece muy interesante, pero creo que todavia no me queda muy en claro.
En tu primer codigo escribis:
| Código: |
this->IBTS3->Active = true;
|
No es aca donde se activa la transacción?
Cual es la diferencia?
Graicias por ayudarme a aclarar los conceptos. _________________ Crandel
"hay 10 tipos de personas, las que ven en binario y las que no"
Angel Zeitoune - Artículo: Generación de eventos en C++Builder |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Dom 12 Jun, 2005 2:19 am Asunto: |
|
|
Claro Activo el componente, para iniciar la transaccion, en la siguiente linea,
| Código: | // aplicamos la trasacciones pendientes
this->IBTS3->Active = true; //activo la transaccion
this->IBTS3->CommitRetaining(); // aplico, por si existen cambios
// en esta ultima linea, cierro la transaccion, es decir se aplican y se cierra
|
la aplico de nuevo, para cerrar las transacciones o modificaciones, que el usuario tenga pendiente, es decir, se habre un estacion, esta modifica y tiene transacciones pendientes, cuando abres tu otra estacion, las transacciones pendientes, que aun no han sido reflejadas, a travez de esta accion las reflejo, puede que sea algo opcional. pero asi me aseguro que no se quede nada pendiente, dentro de las transacciones de las otras terminales, para darte una explicacion, aqui tienes un enlace, yo trabajo con firebird, y esta es una propiedad de Interbase 7.1
http://www.clubdevelopers.com/delphi/articulos/sgbd/startfastfb/fb6.php
saludos. espero que quede aclarada tu duda _________________
 |
|
| Volver arriba |
|
 |
JesúsGandia Master


Registrado: 17 Jul 2004Mensajes: 403Ubicación: Gandia, Valencia
|
Publicado: Dom 12 Jun, 2005 4:59 pm Asunto: Sobre IBXBCB608.EXE y AllowAutoStart |
|
|
Cesar he bajado el componente que dices y ahora si que tengo la propiedad "AllowAutoStart", pero me surgen un par de preguntas:
1.- Desde la pagina de donde me lo he bajado parece ser que no es una actualización como tu dices, sino mas bien un componente que un tal "Jeff Overcash" ha echo de cosecha propia, así mismo dice que ha vuelto al codigo viejo para eliminar CachedUpdates, también cuando intento obtener ayuda de esta propiedad en el Builder no aparece por ninguna parte. Entonces mi pregunta es la siguiente: ¿Es seguro esta actualización?. ¿Por qué no hay ayuda de esta propiedad en el Builder?
Al instalar el componente tuve problemas del tipo que cuando arrancaba el Builder me salía un mensaje de que estaba buscando la librería "dclIBXtras60.bpl" y no la encontraba porque la buscaba en la ruta "C:\Program files\..." en lugar de "C:\Archivos de Programa...". Aparentemente esto no tiene importancia, pues lo he solucionado cambiando las entradas en el registro de Windows, pero claro al ver esto he supuesto que el componente no lo había hecho Borland, sino mas bien, un usuario del foro de Borland. Aquí te pongo el enlace de donde lo he bajado para que le eches un vistazo. Tu opinión es importante para mi. http://codecentral.borland.com/Item.aspx?id=20259
Por favor si puedes dime algo. Gracias. _________________ Muchos hombres no se equivocan jamás porque no se proponen nada razonable. |
|
| Volver arriba |
|
 |
Invitado
|
Publicado: Dom 12 Jun, 2005 10:41 pm Asunto: |
|
|
al parecer, el compoente, fue modificado, ya que la instalacion. que me envia a mi, aparece todo completamente, para borland y interbase 7.1, bien, no hay problema en el elance arriba mencionado, te daras cuenta, que la propiedad si se utiliza y no hay ningun problema,sobre lo que comentas, del arranque de builder, es correcto (por no decir normal), el que te pida, algunos archivos.. pero no afecta en anda, bueno al menos a mi no, he tenido fallos de seguridad..
volviendo al enlace, el codigo, es para firebird, y viene un pequeño ejemplo para ello. por si no quieres subir la pagina te lo pongo
http://www.clubdevelopers.com/delphi/articulos/sgbd/startfastfb/fb6.php
Saludos |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Dom 12 Jun, 2005 10:43 pm Asunto: |
|
|
| Anonymous escribió: | al parecer, el compoente, fue modificado, ya que la instalacion. que me envia a mi, aparece todo completamente, para borland y interbase 7.1, bien, no hay problema en el elance arriba mencionado, te daras cuenta, que la propiedad si se utiliza y no hay ningun problema,sobre lo que comentas, del arranque de builder, es correcto (por no decir normal), el que te pida, algunos archivos.. pero no afecta en anda, bueno al menos a mi no, he tenido fallos de seguridad..
volviendo al enlace, el codigo, es para firebird, y viene un pequeño ejemplo para ello. por si no quieres subir la pagina te lo pongo
http://www.clubdevelopers.com/delphi/articulos/sgbd/startfastfb/fb6.php
Saludos |
Como siempre, el login, bien el codigo es para delphi, pero como los componentes, son los mismos que en builder te funciona igual..
Saludos.. _________________
 |
|
| Volver arriba |
|
 |
Crandel Lt


Registrado: 31 May 2005Mensajes: 94Ubicación: Argentina
|
Publicado: Lun 13 Jun, 2005 6:42 am Asunto: |
|
|
Me va quedando cada ves más claro. Gracias
En el caso que no tengamos la propiedad AllowAutoStart (se que actualizando el componente la tendriamos), cual seria la forma por código de realizar los mismo? _________________ Crandel
"hay 10 tipos de personas, las que ven en binario y las que no"
Angel Zeitoune - Artículo: Generación de eventos en C++Builder |
|
| Volver arriba |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|