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 01-12-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Problema con CampoCalculado

Tengo un campo calculado de tipo booleano, simplemente para usarlo como selector de registros, tipo una casilla de correo, en donde seleccionamos los mensajes a borrar por ejemplo.
Estoy usando Delphi 7, y las JVCL, las cuales traen un DBGrid que dibuja directamente un checkbox en el campo boleano.
Pero resulta que al hacer clic en el DBGrid (seleccion fila completa)
cuando intento modificar el checkbox, me tira el siguiente error:

"Cannot update a complex query with more then one table"

Código Delphi [-]
procedure TForma.JvDBGrid1CellClick(Column: TColumn);
begin
 Query.Edit;
 QuerySeleccionado.Value:=True;
 Query.Post;
end;

Porque no se puede actualizar una consulta compleja con mas de una tabla?
Tengo un Query (de Zeos, conectandose a mySQL) donde consulto 3 tablas a la vez, ya que es necesario.
El campo es calculado, hay alguna posibilidad de cambiarle el estado?
O alguna otra idea de como hacer un selector de registros.

PD: el selector de registros es aquel CheckBox que se encuentra al inicio de la fila de un registro, no se si lo expreso bien o se entiende.

Saludos y gracias
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;

Última edición por MaMu fecha: 01-12-2007 a las 09:08:49.
Responder Con Cita
  #2  
Antiguo 01-12-2007
Avatar de courtois
courtois courtois is offline
Miembro
 
Registrado: abr 2006
Ubicación: Mexico DF
Posts: 200
Poder: 19
courtois Va por buen camino
por que no usas la opcion de seleción multiple del dbgrid en lugar de añadir un capo?
Responder Con Cita
  #3  
Antiguo 01-12-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
No se puede hacer y punto.

Supongo tendrás que usar un UpdateSql unido al query original. Ahora cuando modifiques el valor, se ejecutará el query correspondiente (normalmente el updateSql), tú código no varía, solo añade dicho objeto y configura sus propiedades.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 01-12-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Cita:
Empezado por courtois Ver Mensaje
por que no usas la opcion de seleción multiple del dbgrid en lugar de añadir un capo?
Porque resulta poco practico e incomodo cuando tenes que seleccionar de un grupo de mas de 1000 registros, y ademas, resulta mucho más facil y sencillo para filtrar luego por registros seleccionados, y ni hablar de la interface visual, queda más profesional, digamos que son gustos.

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #5  
Antiguo 01-12-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Cita:
Empezado por Lepe Ver Mensaje
No se puede hacer y punto.

Supongo tendrás que usar un UpdateSql unido al query original. Ahora cuando modifiques el valor, se ejecutará el query correspondiente (normalmente el updateSql), tú código no varía, solo añade dicho objeto y configura sus propiedades.

Saludos
Bueno, voy a intentar la sugerencia usando un UpdateSql. Ahora bien, de todas maneras me resulta curioso e interesante el porque realmente no se puede, ya que si analizo la consulta, es una sola global que apunta a la condicion anidada de otras dos tablas, anidadas entre si, lo que tendria una integridad referencial en cascada, asumo el impedimento como que el requicito deberia ser la edicion simultanea de toda la linea en cascada de tablas.

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #6  
Antiguo 02-12-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Cita:
Empezado por Lepe Ver Mensaje
No se puede hacer y punto.

Supongo tendrás que usar un UpdateSql unido al query original. Ahora cuando modifiques el valor, se ejecutará el query correspondiente (normalmente el updateSql), tú código no varía, solo añade dicho objeto y configura sus propiedades.

Saludos
La verdad es que lo intente, pero no se como configurar el UpdateSql ni como unirlo al query. Como tendria que hacer? no encuentro nada de eso en las propiedades.

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #7  
Antiguo 02-12-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Logre configurarlo en el DataSource, y haciendo doble clic aparece el editor. Pero alli mismo, no me figura el campo calculado. Genere el comando modify con otro campo, y luego lo edite manualmente al campo calculado. Pero cuando o en que momento se ejecuta esto?

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #8  
Antiguo 02-12-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Cuando editas un registro y le das a guardar (en un dbnavigator, o con la sentencia Dataset.Post), se ejecutará el UpdateSql.

Lo mismo ocurrirá al insertar, borrar etc. Cada sql se ejecutará con su opción correspondiente del DBNavigator.

Supongo que en dichas sqls del UpdateSql solo tendrías que hacer referencia a la tabla que quieres modificar. En principio, y dado que es un campo calculado no te hace falta grabar nada, pero el "Grid debe creer" que sí se puede guardar el registro.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #9  
Antiguo 03-12-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Cita:
Empezado por Lepe Ver Mensaje
Cuando editas un registro y le das a guardar (en un dbnavigator, o con la sentencia Dataset.Post), se ejecutará el UpdateSql.

Lo mismo ocurrirá al insertar, borrar etc. Cada sql se ejecutará con su opción correspondiente del DBNavigator.

Supongo que en dichas sqls del UpdateSql solo tendrías que hacer referencia a la tabla que quieres modificar. En principio, y dado que es un campo calculado no te hace falta grabar nada, pero el "Grid debe creer" que sí se puede guardar el registro.

Saludos
En realidad no se como engañar al Grid, porque el post no me lo deja hacer, y en realidad lo que quiero es modificar solamente el campo calculado (un checkbox) de False a True y viceversa, para luego operar solamente con los seleccionados.

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #10  
Antiguo 04-12-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Existen Grids en Torry.net que hacen lo que pides, por ejemplo el SelectDbGrid v.1 (free con fuentes)

Por mi parte, siempre he usado la forma Standard o el VirtualStringTree (pero no es un control db-aware).

De todas formas, si te empeñas, seguro que lo consigues.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
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 CampoCalculado en Access MaMu Conexión con bases de datos 1 10-06-2007 18:01:48
"floating point overflow" en campocalculado ANXO Conexión con bases de datos 0 22-01-2006 16:59:58


La franja horaria es GMT +2. Ahora son las 20:45:40.


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