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 07-07-2008
Avatar de casacham
casacham casacham is offline
Miembro
 
Registrado: abr 2006
Ubicación: Cordoba->Argentina. Arboleas->Almeria->España
Posts: 184
Poder: 19
casacham Va por buen camino
Cool Curioso comportamiento de TDBRichEdit genera error loco

Hola amigos.
Inicio este hilo para comentar un comportamiento algo extraño de TDBRichEdit. En un formulario tengo este objeto (TDBRichEdit) conectado a un campo tipo Memo a traves de un TADOTable. Tras ejecutar el programa, cuando cargo el formulario el estado de la tabla es "dsBrowse" ya que no estoy insertando ni editando ningun registro ni haciendo nada mas. Si le doy foco al objeto TDBRichEdit (haciendo click sobre este) y luego salgo haciendo click en otro objeto del mismo formulario (un TDBEdit por ejem.) se genera un error que dice "T_Personas: Dataset not in edit or insert mode", donde T_Personas es el name de la TADOTable. El punto es que al hacer click en el cuadro de dialogo (boton Ok) que contiene este error el foco vuelve al TDBRichEdit, siendo imposible salir haciendo click en otro objeto. La unica forma de que TDBRichEdit pierda el foco es poniendo la tabla en edicion al hacer click en edit del TDBNavigator y seguidamente cancelar la edicion haciendo click en "x" del TDBNavigator con lo que el estado de la tabla vuelve a "dsBrowse".
Esto solo ocurre la primera vez, luego TDBRichEdit puede recibir foco y perderlo sin que se genere este error, estando por supuesto la tabla en "dsBrowse".
He probado muchas formas de capturar este error para manejarlo y no lo he logrado. Lo interesante seria si alguien puede explicarle al foro porque ocurre este problema. Antes de terminar aclaro que ocurre en delphi 2007, no se si en otras versiones de deplhi ocurre.

Desde ya gracias por su atención y sus ingeniosas respuestas
Responder Con Cita
  #2  
Antiguo 08-07-2008
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 19
Faust Va por buen camino
Amigo Casacham... creo que esto sucede porque al hacer clic en el TDBRichEdit y cuando ves el cursor parpadeando el DBRchiEdit cree que estás insertando o editando un registro actual, pero no es así, es por eso que te impide pasar de foco a otro control.

Pero para campos memo deberías usar un TDBMemo, pues el TDBRichEdit es para campos BLOB o binarios, pues el TDBRichEdit contiene texto con formato, mientras que un campo Memo y un TDBMemo contienen únicamente texto plano, es decir, caracteres sin formato.
__________________
Herr Heins Faust
Responder Con Cita
  #3  
Antiguo 08-07-2008
Avatar de casacham
casacham casacham is offline
Miembro
 
Registrado: abr 2006
Ubicación: Cordoba->Argentina. Arboleas->Almeria->España
Posts: 184
Poder: 19
casacham Va por buen camino
Cool Buena Observacion

Es muy buena la observación de Faust, el tema que a pesar de que el campo es del tipo Memo, lo mismo se almacena el texto con formato. Pero el problema al perder el foco sigue apareciendo indistintamente del tipo campo, no tiene que ver si es del tipo BLOB o MEMO, el problema es TDBRichEdit, no asi TDBMemo. La verdad es que no lo puedo descubrir aun al problema. Sigo esperando sus respuestas al respecto.
Responder Con Cita
  #4  
Antiguo 09-07-2008
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 19
Faust Va por buen camino
No amigo, en un campo Memo únicamente guardas texto plano, pero al CONTROL TDBMemo puedes cambiarle formato, este no se guarda junto con el texto, sino dentro del control en tu aplicación, por eso te digo que es mejor usar un TDBMemo en vez de un TDBRichEdit, y si quieres darle formato al texto, usa el formato que te brinda la prop. Font del TDBMemo, en la base de datos se guardará texto plano...

Indica por favor que tipo de base de datos usas, haré una prueba a ver si doy con el problema.
__________________
Herr Heins Faust
Responder Con Cita
  #5  
Antiguo 09-07-2008
Avatar de casacham
casacham casacham is offline
Miembro
 
Registrado: abr 2006
Ubicación: Cordoba->Argentina. Arboleas->Almeria->España
Posts: 184
Poder: 19
casacham Va por buen camino
Cool Hola faust

El problema no es si el texto se guarda o no con formato. La base de datos que utilizo la he creado en Acces y utilizo los componentes ADO para conectar la base de datos con mis formularios (DataAware Objects que pueda contener el mismo). El campo que le asigne al TDBRichEdit es un del tipo Memo, sin embargo, te repito, el formato del texto queda almacenado y no es el problema del cual me quejo.
Cuando consulto a la base de datos me devuelve el texto con el formato que le habia asignado y funciona asi aunque no parezca logico.
De todas formas el problema es que: cuando cargo el formulario y sin hacer nada mas, por ejemplo le doy foco a ese objeto (TDBRichEdit) estando la base de datos conectada, es decir que el objeto esta mostrando lo que contiene el campo y el estado es dsBrowse cuando intentas salir del foco del TDBRichEdit salta el error mencionado. Para evitar esto la solucion es ir al TDBNavigator pober la base de datos en edicion y luego cancelar esa accion ya que no deseo en ese momento hacer nada mas que recorrer los registros.

La cuestion es que este error es mas molesto que otra cosa, ya que no causa alteracion en el flujo del programa una vez que se lo soluciona dando click en OK del cuadro de dialogo que te informa el error y luego poniendo en edicion la tabla y cancelando inmediatamente esa accion.
Es una curiosidad que ocurra esto y me gustaria saber primero porque ocurre y luego, por supuesto, si existe manera de evitar que ocurra.

Gracias por tu atencion de este problema. Estare atento esperando tu rta
Responder Con Cita
  #6  
Antiguo 09-07-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Hola, no entiendo muy bien este asunto, pero por lo que veo necesitas hacer que el estado de la tabla cambie al salir del foco del TDBRichEdit, lo que se me ocurre es que en el evento onExit de ese objeto cambies el estado a dsEdit y despúes haces un cancel, simulando lo que estas haciendo con el TDBNavigator.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #7  
Antiguo 09-07-2008
Avatar de casacham
casacham casacham is offline
Miembro
 
Registrado: abr 2006
Ubicación: Cordoba->Argentina. Arboleas->Almeria->España
Posts: 184
Poder: 19
casacham Va por buen camino
Cool Gracias egostar por tu rta.

Es lo primero que se me ocurrio hacer, pero el error ocurre antes que se genere el evento OnExit. Como dije antes, he probado casi de todo para tratar de manejar ese error pero no le encuentro explicación. Tambien lo he probado haciendo lo mismo en el evento OnEnter y el error sigue apareciendo. Podra tratarse de un "Bug" del objeto TDBRichEdit?
Responder Con Cita
  #8  
Antiguo 09-07-2008
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Cita:
Podra tratarse de un "Bug" del objeto TDBRichEdit?
Lo mas probable, pq a mi me paso con el TJvDBRichEdit q al abrir el Dataset enlazado se pone directamente en modo edicion, los chicos tan listos de la JVCL lo corregieron de la siguiente manera..
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #9  
Antiguo 11-07-2008
Avatar de casacham
casacham casacham is offline
Miembro
 
Registrado: abr 2006
Ubicación: Cordoba->Argentina. Arboleas->Almeria->España
Posts: 184
Poder: 19
casacham Va por buen camino
Cool Hola Delfino

Creo que tu respuesta es la mas acertada. Y es lo que debe estar pasando a este componente. Pregunta: Se puede instalar JEDI VCL en delphi 2007?, es decir, viene alguna version para hacerlo o simplemente tendre que utilizar los componentes base del D2007?

Gracias por tu rta.
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
Que Evento Es El Que Se Genera!!!!! xio API de Windows 19 09-01-2008 16:28:10
No se que evento se genera xio OOP 5 17-12-2007 11:38:47
Muy curioso gluglu La Taberna 10 21-06-2007 03:14:31
textos centrados TDBRichEDIT CARSOFT_AR Impresión 0 17-02-2005 16:43:12
loco loco.... no actualiza INTERBASE DELPHI5 fixarg Conexión con bases de datos 1 04-11-2004 06:44:27


La franja horaria es GMT +2. Ahora son las 18:13:14.


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