Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-04-2012
Walterio Walterio is offline
Miembro
 
Registrado: nov 2006
Posts: 46
Poder: 0
Walterio Va por buen camino
ADOQuerys con campos "If(..." no se actualiza en un DbGrid

Hola a todos...
Mi escenario :
- Delphi 6
- MySQL
- ADO para la conexión
- TADOQuery, DataSetProvider yTClientDataSet.

Tengo varias consultas en donde la sentencia Select tiene un campo con la función IF().
Ej.:
Código SQL [-]
SELECT
    cc202.CMOVBCO202,
    cc202.TMOVBCO202,
    IF(cc202.TMOVBCO202 = 1, ' + QuotedStr('Débito') + ', ' + QuotedStr('Crédito') + ') AS DTMOVBCO202,
    cc202.NIV202
FROM
    cc202

Hasta aquí, todo bien, el tema es que estos datos los muestro en una DbGrid, si hago una modificación o un insert (uso otro form para los ABM, no edito en la grilla directamente), al volver del ABM, los campos con "IF" no se actualizan, mientras que los otros campos si, incluso campos de la consulta que tengo mediante JOINS.Tengo que cerrar el form que contiene la grilla y al volver a abrirla, allí si se muestran los cambios...el tema es que necesito que los cambios se vean reflejados en la grilla al volver del form del ABM...¿alguna sugerencia....?.

Desde ya, muchas gracias
Responder Con Cita
  #2  
Antiguo 09-04-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.011
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
En lugar de cerrar el form, haz un .refresh del dataset
Responder Con Cita
  #3  
Antiguo 11-04-2012
Walterio Walterio is offline
Miembro
 
Registrado: nov 2006
Posts: 46
Poder: 0
Walterio Va por buen camino
Hola Casimiro...
Gracias por tu respuesta.Estuve probando lo que me sugeriste con los siguientes resultados :
En mi código, delpues del ClientDataSet.DataSet.Post, hago un ClientDataSet.DataSet.Refresh, pero recibo un mensaje de error como el siguiente : " EDatabaseError - Must apply updates before refreshing data", entonces, antes del .refresh, supongo, deberia hacer un ClientDataSet.ApplyUpdates(-1)...el tema es que desde la ayuda de Delphi (Delphi 6 en mi caso), explica el uso del ApplyUpdates en el ClientDataSet, pero....sorpresa!!!, al compilar, recibo este mensaje : "Error] TForm1.pas(437): Undeclared identifier: 'ApplyUpdates'".
Se supone que si vengo usando los ClientDataSet en este form, y tal como dice la ayuda de Delphi, el ApplyUpdates deberia funcionar...¿o mi Delphi está rebelde...?.

Saludos y gracias por la paciencia y la ayuda.
Responder Con Cita
  #4  
Antiguo 11-04-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.011
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No conozco apenas los componentes ADO y no suelo usar los TClientDataSet
Pero mientras alguien responde, puedes echar un vistazo al libro de Marteens, creo recordar que trae un apartado sobre los mismos. A ver si hay suerte
Responder Con Cita
  #5  
Antiguo 14-04-2012
Walterio Walterio is offline
Miembro
 
Registrado: nov 2006
Posts: 46
Poder: 0
Walterio Va por buen camino
Muchas gracias Casimiro por tu atención.
Ya estoy leyendo el artículo que me pasaste.Al final, le encontré una pseudo-solución al tema hasta que lo pueda resolver mas "elegantemente", uso el método del TField, OnGetTex, al menos, visualmente para el usuario, es una solución.La ayuda de Delphi explica muy bien este método, pero si hace falta el detalle, lo publico para compartirlo con todos.(No estoy en la oficina, por lo cual no tengo el código a mano para publicarlo).

Nuevamente, mil gracias.

Saludos.
Responder Con Cita
  #6  
Antiguo 15-04-2012
Avatar de @-Soft
@-Soft @-Soft is offline
Miembro
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 200
Poder: 21
@-Soft Va por buen camino
hola


creo que MySQL soporta la condicional
Código SQL [-]
CASE WHEN  x THEN y END
, revisa esa estructura en la ayuda de mysql a ver si desde el query la traes ensablanda y solo tienes que mostrarla en tu front end
__________________
Ivan Lora

http://www.arrobasoft.da.ru

Valientes son aquellas personas que triunfan donde otros fracasan.
Bienaventurado los que nada esperan porque jamas seran defraudados.
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
Dbgrid no actualiza rmenor Firebird e Interbase 3 06-10-2006 02:21:20
Campos M/D en 1 DBGrid CarmaZone Tablas planas 2 21-07-2005 18:22:35
2 campos lookup en dbgrid JRGustavo Conexión con bases de datos 0 30-06-2005 18:05:10
Dbgrid Y Campos Lookup nax Conexión con bases de datos 3 01-12-2004 09:26:55
CAmpos de dbGRid Mario1980 Varios 9 31-10-2004 04:34:12


La franja horaria es GMT +2. Ahora son las 10:00:37.


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