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 Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
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.052
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
  #2  
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
  #3  
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.052
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
  #4  
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
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
  #5  
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.052
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
  #6  
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
Pues no es lo que has puesto arriba.
Efectivamente estimado Casimiro pero en la segunda versión de prueba, en el primer trozo de código está así:

Código:
 StoreProcedure.ParamByName('Parametro1').AsInteger := 1;
  StoreProcedure.ExecProc;
  nId := StoreProcedure.ParamByName('LASTID').AsInteger;
  DM.Transaction.CommitRetaining;
Con la diferencia que no llamo el método close, ¿influirá la llamada a este método? considerando que desde la primera ejecución del StoreProcedure.ExecProc; ya no funciona y que sin ese método en sistemas desarrollados con Delphi 2007 funcionaba? Estoy muy complicado estimado Casimiro, creo que tendré que cambiar a Firedac, saludos y muchas gracias.
Responder Con Cita
  #7  
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.052
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
A ver, como he puesto en mi ejemplo, primero cierras, le pasas sus parámetros y lo ejecutas.
Código Delphi [-]
DM.SP.Close;
DM.SP.ParamByName('campo').AsString := DS1.DataSet.FieldByName('uncampo').AsString;
DM.SP.ExecProc;
En cuanto a lo de cambiar a firedac, cámbialo si lo necesitas, pero no porque no te funcione algo que, seguramente, no se está usando correctamente.

Yo solamente puedo contarte mi experiencia con delphi+ibx+firebird desde 1998 (antes de firebird era interbase y en lugar de ibx también he usado sus primos y padres: FreeIBcomponentes, FIBplus, MDO, etc.). Pues desde esa fecha, hace 20 años ya, he trabajado en muchos proyectos para todo tipo de empresas, siempre han sido con el servidor y muchos/bastantes/muchísimos terminales, y nunca, en ningún caso, he tenido esos problemas de transacciones.

Quiero decir con esto, que si el problema ha surgido al cambiar de versión de delphi, entonces el problema estaría ahí, pero como no creo que eso pueda ser así, entonces pienso que a lo mejor también ha habido otros cambios que sean realmente los culpables, no sé, versión/actualización de windows, por decir algo.

Si en el equipo/equipos donde ahora no funciona, si se vuelve a instalar la versión compilada con la versión de delphi que iba bien, ¿funciona bien o también mal?

Otra explicación, pero algo "conspiranóica", es que delphi haya añadido algún "error, sin querer" que provoque esos problemas con firebird, y que no ocurra con interbase, que es el suyo, y el que les interesa vender
Responder Con Cita
  #8  
Antiguo 02-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



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 20:09:26
Migrar Delphi 2007 a 10.1 Berlin giko Varios 24 01-12-2016 08:54:39
Seminario Web Delphi y C++Builder 10.1 Berlin Neftali [Germán.Estévez] Noticias 1 17-06-2016 16:35:26
Problema con transacciones en Access y Delphi Capi666 SQL 1 11-01-2007 21:49:14


La franja horaria es GMT +2. Ahora son las 15:15:34.


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