Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-07-2022
juggern juggern is offline
Miembro
 
Registrado: jun 2020
Posts: 79
Poder: 4
juggern Va por buen camino
Problema con DBCheckBox

Buenas chicos,

Hoy os traigo un problemilla que no se si sabréis guiarme porque es difícil de ver sin tener el programa delante, pero bueno, es por si alguna respuesta me da alguna idea..

Tengo una ventana con opciones de productos, en la ventana hay dbedit... dbcheckbox... todos con opciones para activar, desactivar, configurar... todo funciona bien.
Los DBCheckBox están asociados a un DataSource y este DataSource está asociado a un TBetterAdoDataSet que se encuentra en un DM.
Hasta aquí todo bien, todo funciona.
Bien, el problema es que yo quiero añadir un campo que se configure con otro DBCheckBox en esa pantalla. He creado el campo, lo he incluido en la consulta y he creado un DBCheckBox nuevo vinculado a ese campo. El campo lo agrega bien y lo muestra en el CheckBox, aparece marcado o desmarcado automáticamente dependiendo del valor del campo. El problema es que no me deja hacer click en el checkbox, si hago click, no hace nada de nada, es como si el campo estuviera bloqueado por algo. Si le cambio la vinculación de ese campo nuevo a un campo que ya existía, el checkbox funciona perfectamente, lo que me lleva a pensar que es problema del campo. En algún lado tengo que desbloquearlo, añadirlo... no se, algo. Pero he revisado mil cosas y no lo veo.

No se si se os ocurre algo que pueda probar...

Muchas gracias
Responder Con Cita
  #2  
Antiguo 28-07-2022
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.285
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
1) ¿Cómo es la consulta que estás utilizando? ¿Directa sobre una tabla? ¿Varias tablas?
2) Revisa el DFm a ver si ves algo "raro" en ese componente (DBCheckBox)
__________________
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 28-07-2022
juggern juggern is offline
Miembro
 
Registrado: jun 2020
Posts: 79
Poder: 4
juggern Va por buen camino
Unhappy

En el dfm no he visto nada raro, todo parece correcto.
La consulta es sobre una vista (SQL server) que implica varias tablas, añadí el campo a la vista y a la hora de mostrarlo va bien, el checkbox aparece marcado si el campo tiene una S y desmarcado si tiene una N (que es como configuré para seguir la estructura del programa), el problema es que al hacer click en el checkbox, no hace nada, tiene que ser algo del campo yo creo, porque si en lugar de ese campo nuevo, le pongo otro campo, entonces si que funciona el checkbox.
¿Puede que el problema sea directamente del campo o la vista de SQL en lugar de en delphi? no se
Responder Con Cita
  #4  
Antiguo 28-07-2022
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.285
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 juggern Ver Mensaje
¿Puede que el problema sea directamente del campo o la vista de SQL en lugar de en delphi? no se
Por ahí iba mi pregunta.
Revisa sobre "Vistas actualizables". Entiendo que tu vista está formada por JOINs, y si es así, no todos los campos de la JOIN son actualizables.
¿El resto de campos (DBCheckbox) son de la tabla principal o son de las otras tablas de la vista? ¿Y este que has añadido?

Cita:
Vistas actualizables
Es posible modificar los datos de una tabla base subyacente mediante una vista, siempre que se cumplan las siguientes condiciones: Cualquier modificación, incluidas las instrucciones UPDATE, INSERT y DELETE, debe hacer referencia a las columnas de una única tabla base.
__________________
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 28-07-2022
juggern juggern is offline
Miembro
 
Registrado: jun 2020
Posts: 79
Poder: 4
juggern Va por buen camino
Pues acabo de estarlo revisando y tiene todo left join pero el campo que he agregado es a la tabla principal, los otros campos que veo que se actualizan, también son de esta tabla.

También he probado a hacer un
Código SQL [-]
update vista set Campo = 'N'
donde el campo es el que he creado y me lo actualiza bien desde SQL.
Responder Con Cita
  #6  
Antiguo 28-07-2022
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Comprueba si el TField tiene las propiedades correctas (ReadOnly?).
Comprueba que no tenga ningún evento indeseado (OnSetText?)

No conosco el componente TBetterAdoDataSet.
Tiene alguna forma de establecer el UpdateSQL?
Responder Con Cita
  #7  
Antiguo 28-07-2022
juggern juggern is offline
Miembro
 
Registrado: jun 2020
Posts: 79
Poder: 4
juggern Va por buen camino
Ya lo miré pero lo estoy repasando por si acaso, todo parece correcto, no tiene readonly, ni ningún evento el Field.
El DataSet tiene varios eventos pero el único que podría afectar es el BeforeUpdate, porque el resto son para el post, delete o cancel, y el beforeupdate solo coge un valor y lo mete en una variable global, asique no afecta.
El DataSource sin embargo si que tiene los eventos DataChange, StateChange y UpdateDate vinculados, pero para verificar que no fuera por estos, probé a quitarlos todos y seguía igual, por eso me hace pensar que tiene que ser algo del Field o de la propia vista. El field lo he quitado y lo he agregado al DataSet a mano copiándolo de uno que si funciona y es igual y nada, tampoco.

La vista tiene esta estructura, donde CAMPONUEVO es el campo que he añadido yo a la tabla1:

Código SQL [-]
SELECT        A.Campo1, A.Campo2, A.Campo3, A.Camp4o, A.Campo5, A.Campo6, A.Campo7, A.Campo8, A.CAMPONUEVO, 
                         P.Nombre AS NombreAct, T.Nombre AS NombrePas, 
                         CASE WHEN A.Campo1 = 'M' THEN 'MMM' WHEN A.Campo1 = 'I' THEN 'III' WHEN A.Campo1 = 'C' THEN 'CCC' ELSE 'Indefinido' END AS Tipo
FROM            dbo.tabla1 AS A LEFT OUTER JOIN
                         dbo.tabla2 AS P ON A.clave1 = P.clave1 LEFT OUTER JOIN
                         dbo.tabla2 AS T ON A.clave2 = T.clave2 LEFT OUTER JOIN

Sigo probando cosas pero nada.

El comportamiento a la hora de hacer click en el CheckBox es como si no tuviera un campo vinculado, pero si que lo tiene ya que si en la bd tiene un valor 'S' lo muestra marcado y si tiene un valor 'N' lo muestra desmarcado.
Responder Con Cita
  #8  
Antiguo 29-07-2022
Avatar de kuan-yiu
[kuan-yiu] kuan-yiu is offline
Miembro Premium
 
Registrado: jun 2006
Ubicación: Galicia. España.
Posts: 1.017
Poder: 19
kuan-yiu Va camino a la fama
En versiones antiguas de Delphi he tenido problemas similares y eran porque tenía definidos de forma parcial campos persistentes (tablas monstruosamente grandes) en algunas consultas.
Daba problemas de este estilo con los componentes visuales tener algunos campos persistentes y otros no en el mismo dataset: o todo o nada.
Responder Con Cita
  #9  
Antiguo 29-07-2022
juggern juggern is offline
Miembro
 
Registrado: jun 2020
Posts: 79
Poder: 4
juggern Va por buen camino
Hola kuan,

No acabo de entender lo que me comentas.
Responder Con Cita
  #10  
Antiguo 29-07-2022
Avatar de kuan-yiu
[kuan-yiu] kuan-yiu is offline
Miembro Premium
 
Registrado: jun 2006
Ubicación: Galicia. España.
Posts: 1.017
Poder: 19
kuan-yiu Va camino a la fama
Los campos persistentes de un tQuery, por ejemplo, se ven haciendo doble click sobre el componente y en esa lista tienen que aparecer todos los campos que usas de la consulta o ninguno. Si los campos que ya tenías estaban dados de alta como persistentes (para referenciarlos directamente con un nombre en lugar de con 'FieldByname' o similares) pero el nuevo no está puede fallar por eso en versiones antiguas de Delphi, las nuevas no sé como se comportan al respecto.
Responder Con Cita
  #11  
Antiguo 29-07-2022
juggern juggern is offline
Miembro
 
Registrado: jun 2020
Posts: 79
Poder: 4
juggern Va por buen camino
Ah, no te entendía, si si, están todos añadidos, además los coge bien en teoría, porque conecto el dataset y lo añado, lo coge todo bien, la verdad, no entiendo donde puede estar el problema.

He tirado atrás todos los cambios y lo he vuelvo a hacer de 0 pero nada, no lo se, es como si lo leyera pero no pudiera editarlo, y aunque hagas click no responde, no se. Yo entiendo que algo me falta por configurar pero el campo está editable, el checkbox funciona si le pongo otro campo, el dataset me muestra bien el campo en la lista... ni idea

Última edición por juggern fecha: 29-07-2022 a las 10:55:13.
Responder Con Cita
  #12  
Antiguo 29-07-2022
juggern juggern is offline
Miembro
 
Registrado: jun 2020
Posts: 79
Poder: 4
juggern Va por buen camino
Hola de nuevo chicos,

Parece que lo he solucionado.
En el Create del formulario, he puesto el readonly del campo a False.
Con esto lo soluciono, parece que de alguna manera el readOnly del campo se pone a False, pero no veo donde, en el componente está bien configurado y ninguno de los otros campos ha habido que ponerlo a False por código, no lo entiendo, pero bueno, parece que con eso tiro.
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
DBCheckbox angel1972 C++ Builder 1 17-02-2011 11:13:56
Problema con DBCheckBox Carmelo Cash OOP 2 02-02-2009 12:01:49
Problema con DBCheckBox esimon OOP 1 08-07-2007 16:46:58
problema con DBCheckBox...ayuda... CyberFire Conexión con bases de datos 2 12-06-2006 18:57:08
Problema con DBCHeckbox el_barto Conexión con bases de datos 5 13-07-2005 12:17:24


La franja horaria es GMT +2. Ahora son las 23:27: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