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 09-02-2010
Aprendiendo Aprendiendo is offline
Miembro
 
Registrado: may 2003
Ubicación: España
Posts: 122
Poder: 22
Aprendiendo Va por buen camino
Smile Tmemo y ADOQuery

Hola a todos, mi duda es la siguiente:

Uso delphi6 profesional.

Tengo un campo TMemo donde el usuario escribe sus observaciones, al guardar los datos indicados a base de datos access2003, lo guarda sin problemas mediante TADOTable (sin importar la longitud de lo escrito, ya que supuestamente los campos Memo de access2003 pueden guardar hasta 65.535 caracteres).

Cuando el usuario quiere modificar esas observaciones, lógicamente accedo al campo y muestro los datos que indicó en su día, ahora viene el problema, resulta que las nuevas modificaciones "sea más información o menos" me salta "No hay transacción activa" y he llegado a la conclusión que sólo ocurre cuando el usuario supera los 255 caracteres. ¿por qué motivo me dice esto?.

En las altas no importa la longitud de lo escrito y en las modificaciones sí.

Las modificaciones en la base de datos las realizo mediante TADOQuery.

Esperando una pronta respuesta, reciban un afectuoso saludo...

Responder Con Cita
  #2  
Antiguo 09-02-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Utilizas transacciones para algo?
Si es que sí, puedes explicar para qué y cómo.

En principio ese error no parece que tenga nada que ver con la longitud del campo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 10-02-2010
Aprendiendo Aprendiendo is offline
Miembro
 
Registrado: may 2003
Ubicación: España
Posts: 122
Poder: 22
Aprendiendo Va por buen camino
Smile

Efectivamente las operaciones de escritura las realizo mediante transacciones.

Estas transacciones las realizo mediante TADOConection.

try
TADOConection.Startransaction;

... líneas necesarias mediante TADOQuery para guardar las modificaciones.

TADOConection.Commit
except
TADOConection.RollBack;
end;

Saludos...
Responder Con Cita
  #4  
Antiguo 10-02-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Aprendiendo Ver Mensaje
...me salta "No hay transacción activa" y he llegado a la conclusión que sólo ocurre cuando el usuario supera los 255 caracteres. ¿por qué motivo me dice esto?.
Normalmente este error se da cuando intentas hacer un RollBack o Commit sobre un elemento al que no le has hecho un StartTransaction o cuando ya no está activa (es decir ya le has hecho el Commit o RollBack anteriormente).

Revisa tu código a ver si puede ser que se esté dando esa posibilidad.

Si tienes dudas y quieres evitarlo, puedes utilizar la función InTransaction, sobre la misma ADOConnection, que te dirá si hay alguna transacción activa y por lo tanto si puedes hacer un Commit/Rollback.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 11-02-2010
Aprendiendo Aprendiendo is offline
Miembro
 
Registrado: may 2003
Ubicación: España
Posts: 122
Poder: 22
Aprendiendo Va por buen camino
Smile

El código lo he revisado en varias ocasiones y está todo correcto, el commit se realiza sobre una TADOConection que ya tiene un StarTransaction activa y el TADOQuery lo trato antes del Commit ó Rollback.

El fallo siempre lo dá en las modificaciones cuando en el TMemo introduzco más de 255 caracteres. Resulta que a la hora de añadir si sobrepasas el límite de 255 caracteres no pasa nada. La única diferencia que para añadir utilizo TADOTable y para modificar TADOQuery.

La verdad que este fallo tonto, me está haciendo perder mucho tiempo.

¿Que podría estar pasando?

Saludos...
Responder Con Cita
  #6  
Antiguo 11-02-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Si ver el código es difícil...

¿Puede ser que tengas algun Try..Except que te esté enmascarando errores?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 16-02-2010
Aprendiendo Aprendiendo is offline
Miembro
 
Registrado: may 2003
Ubicación: España
Posts: 122
Poder: 22
Aprendiendo Va por buen camino
Smile

Al final lo he solucionado con un TADOTable dentro de una Transacción.

Aún no comprendo por qué motivo realizándolo desde un TADOQuery no funciona y con TADOTable sí.

Saludos....
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
¿TMemo ..? Ledian_Fdez C++ Builder 4 21-06-2007 15:14:25
TMemo no seleccionable lccoyote C++ Builder 18 10-04-2007 19:35:16
Tmemo gontxalo OOP 1 30-07-2005 12:01:43
Ayuda con el uso del TMemo Luli Varios 3 29-05-2005 18:05:27
Uso de TMemo Luli Varios 3 21-04-2005 22:15:15


La franja horaria es GMT +2. Ahora son las 12:01:53.


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