Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-06-2018
lavtaro lavtaro is offline
Miembro
 
Registrado: jun 2003
Ubicación: Chile
Posts: 88
Poder: 21
lavtaro Va por buen camino
Problema transacciones IBX + Delphi Berlin

Hola estimados, vengo a pedir su ayuda con un problema que tengo con IBX + Delphi Berlin, después de trabajar con Delphi 2007 con IBX sin problemas, usando la misma configuración en Delphi Berlin tengo el problema que para que se vean los datos modificados en otros equipos de la red tengo que cerrar la aplicación (cosa que tampoco me pasaba con MDO). Como dato tampoco IBExpert puede ver las modificaciones pero mi aplicación si ve las modificaciones de IBExpert.

Esta es la configuración de los componentes:

TIBDatabase:
Connected = True
DatabaseName = 'Server/3050:C:\firebird\Base.FDB'
Params.Strings = (
'user_name=SYSDBA'
'password=masterkey'
'lc_ctype=ISO8859_1')
LoginPrompt = False
DefaultTransaction = Transaction
ServerType = 'IBServer'

TIBTransaction:
Active = True
Params.Strings = (
'read_committed'
'rec_version'
'nowait')
AutoStopAction = saCommit

Este es un ejemplo de código usando un procedimiento almacenado (simplificado para mejorar lectura):

Código:
  StoreProcedure.ParamByName('Parametro1').AsInteger := 1;
  StoreProcedure.ExecProc;
  nId := StoreProcedure.ParamByName('LASTID').AsInteger;
  DM.Transaction.CommitRetaining;
Procedimiento almacenado (simplificado para mejorar lectura):

Código:
create or alter procedure GRABA_ENCAB (
    Parametro1 integer

returns (
    LASTID integer)
as
begin
  INSERT INTO TABLA
          (
           campo1
          )
  VALUES
          (
           :Parametro1 
          )
  returning IDTABLA
        INTO :lastid;
end^
Otra prueba:
Código:
  DM.Transaction.Active := False;
  DM.Transaction.StartTransaction;
  StoreProcedure.ParamByName('Parametro1').AsInteger := 1;
  StoreProcedure.ExecProc;
  nId := StoreProcedure.ParamByName('LASTID').AsInteger;
  DM.Transaction.Commit;
Versiones de Software que ocupo:
- Embarcadero® Delphi 10.1 Berlin Version 24.0.25048.9432
- InterbaseExpress 19,19
- Firebird-2.5.2.26540_0_x64 en su instalación por defecto.

SO estaciones de trabajo donde se hacen pruebas:
- Windows 7
- Windows 8
- Windows XP

SO usado para servidores probados:
- Windows server 2012 R2
- Windows 7

De antemano muchas gracias.
Responder Con Cita
  #2  
Antiguo 02-06-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Se supone que tienes un componente IBDatabase y otro IBTransaction enlazados?
Responder Con Cita
  #3  
Antiguo 02-06-2018
lavtaro lavtaro is offline
Miembro
 
Registrado: jun 2003
Ubicación: Chile
Posts: 88
Poder: 21
lavtaro Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Se supone que tienes un componente IBDatabase y otro IBTransaction enlazados?
Hola Casimiro, exactamente, el TIBDatabase está enlazado con el TIBTransaction, también probé dejando vacía la propiedad DefaultDatabase del TIBTransaction o enlazado con el TIBDatabase y tampoco da resultado, saludos.
Responder Con Cita
  #4  
Antiguo 03-06-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Si tienes esos componentes "TStoredProc" enlazados con el componente TIBTransaction, entonces no necesitas iniciar otra transacción.
Sería más o menos, así:
Código Delphi [-]
try
  DM.SP.Close;
  DM.SP.ParamByName('CODIGOCUENTA').AsString  := DS1.DataSet.FieldByName('CODIGOCUENTA').AsString;
  DM.SP.ExecProc;
finally
  DM.SP.Transaction.CommitRetaining;
end;
Responder Con Cita
  #5  
Antiguo 03-06-2018
lavtaro lavtaro is offline
Miembro
 
Registrado: jun 2003
Ubicación: Chile
Posts: 88
Poder: 21
lavtaro Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Si tienes esos componentes "TStoredProc" enlazados con el componente TIBTransaction, entonces no necesitas iniciar otra transacción.
Sería más o menos, así:
Código Delphi [-]
try
  DM.SP.Close;
  DM.SP.ParamByName('CODIGOCUENTA').AsString  := DS1.DataSet.FieldByName('CODIGOCUENTA').AsString;
  DM.SP.ExecProc;
finally
  DM.SP.Transaction.CommitRetaining;
end;
De esa manera lo vengo usando hace años estimado Casimiro (voy a copiar esa estructura con control de excepciones ), no me gustaría cambiar de componentes, saludos.
Responder Con Cita
  #6  
Antiguo 03-06-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por lavtaro Ver Mensaje
De esa manera lo vengo usando hace años estimado Casimiro (voy a copiar esa estructura con control de excepciones ), no me gustaría cambiar de componentes, saludos.
Pues no es lo que has puesto arriba.
Responder Con Cita
  #7  
Antiguo 03-06-2018
lavtaro lavtaro is offline
Miembro
 
Registrado: jun 2003
Ubicación: Chile
Posts: 88
Poder: 21
lavtaro Va por buen camino
Actualización: en el mismo entorno de pruebas con Firedac funciona sin problemas usando este pequeño manual de la página de embarcadero Connect to Firebird (FireDAC) : http://docwiki.embarcadero.com/RADSt...bird_(FireDAC)

Con la diferencia en el FDConnection1 la propiedad UpdateTransaction = Transaction , relacioné el componente de conexión con el componente de transacción.

No me gustaría cambiar de componentes , alguna experiencia en el uso de firedac con Firebird 2.5? de antemano muchas gracias .

También encontré un manual en la página oficial de Firebird Chapter 3: Developing Firebird Applications in Delphi: https://firebirdsql.org/file/documen...0-firedac.html
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema con proyecto en Delphi Berlin newtron Varios 13 26-05-2017 21:09:26
Migrar Delphi 2007 a 10.1 Berlin giko Varios 24 01-12-2016 09:54:39
Seminario Web Delphi y C++Builder 10.1 Berlin Neftali [Germán.Estévez] Noticias 1 17-06-2016 17:35:26
Problema con transacciones en Access y Delphi Capi666 SQL 1 11-01-2007 22:49:14


La franja horaria es GMT +2. Ahora son las 14:09:06.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi