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 

Transacciones en Interbase
Ir a página 1, 2  Siguiente
 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Transacciones en Interbase Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor
Mensaje    Asunto: Responder citando

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
_________________
Cool


Ultima edición por Cesar C. Salazar Gonzalez el Vie 03 Nov, 2006 7:09 am, editado 1 vez
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Gracias Cesar, pero... Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor
Mensaje    Asunto: Responder citando

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
Mensaje    Asunto: Responder citando

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
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Gracias Cesar Responder citando

Mi direccion Email: jesus66@telefonica.net

Smile Saludos.
_________________
Muchos hombres no se equivocan jamás porque no se proponen nada razonable.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor
Mensaje    Asunto: Responder citando

por si les interesa el service pack 4 de c++builder 6, les doy el link directo Wink

ftp://ftpd.borland.com/devsupport/cbuilder/cb6/bcb6_eng_pro_upd4.exe
ftp://ftpd.borland.com/devsupport/cbuilder/cb6/bcb6_eng_ent_upd4.exe
_________________
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
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

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.
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

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
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Sobre IBXBCB608.EXE y AllowAutoStart Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor
Mensaje    Asunto: Responder citando

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
Mensaje    Asunto: Responder citando

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..
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Me va quedando cada ves más claro. Gracias Very Happy

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
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor 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.