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 14-09-2007
Susanna Susanna is offline
Registrado
 
Registrado: sep 2007
Posts: 6
Poder: 0
Susanna Va por buen camino
TTable: desplazar el contenido de los campos

Hola,

tengo un objeto TTable enlazado con una tabla de DBase.
La tabla tiene 60 campos, igual que el TTable.
Quiero mover el contenido de los campos del TTable:
el primer campo coja los valores del segundo campo,
el segundo los valores del tercero,
y así hasta el último campo, que tiene que contener nuevos valores.

A más a más, la operación tiene que ser muy rápida porqué hay un grid vinculado al TTable.

Gracias por adelantado.
Responder Con Cita
  #2  
Antiguo 14-09-2007
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.289
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
Pues sólo se me ocurre haciéndolo "a mano".
Puedes acceder por índice a los campos de una tabla, algo así como:

Código Delphi [-]
  Table.Fields[0].AsString....

Así que se puede solucionar con un for que haga un recorrido para todos los campos menos el último y que asigne el del índice [i] al [i+1].

Espero haberme explicado mínimamente...
__________________
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 14-09-2007
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
Para acelerar el tema :

Código Delphi [-]
Table.DisableControls;
for i := 0 to Table.FieldsCount -1 do
   Table.Fields[i].AsString := Table.Fields[i+1].AsString;
Table.EnableControls;

DisableControls deshabilita la parte visual (que se refresquen con los datos nuevos que van tomando)
EnableControls habilita nuevamente la parte visual.
Creo que ni siquiera es necesario hacer un refresh.
Responder Con Cita
  #4  
Antiguo 14-09-2007
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.289
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 duilioisola Ver Mensaje
Para acelerar el tema...
Pues más o menos era eso, pero estaba un poco "flojo" para escribir código.
__________________
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 14-09-2007
Susanna Susanna is offline
Registrado
 
Registrado: sep 2007
Posts: 6
Poder: 0
Susanna Va por buen camino
Gracias por vuestra idea.

El problema está en hacerlo con todos los registros de la tabla, uno a uno.
¿No se puede hacer con todos a la vez?

¿Quizás cambiando la estructura de la tabla en tiempo de ejecucción,
quitando la primera columna y añadiendo una nueva al final?

Lo siento si antes no he explicado bien mi duda
Responder Con Cita
  #6  
Antiguo 14-09-2007
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.289
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
Puedes probarlo.
Habría que eliminar una columna, añadir otra y modificar el resto de nombre.
Es un poco extraño y peligroso me parece a mi, pero no tiene porqué funcionar.

Como mínimo se me ocurre que deberás cerrar la tabla y además nadie más podrá estar utilizándola (ya que no podrías cambiar la estructura); Suponiendo que todo haya ido bien, luego volver a abrirla.
Si tienes controles visuales y mantienes la nomenclatura de campos no deberás tener problemas.
No se si todas las BD van a permitirte hacer esto.

De todas formas todo eso no me parece en absoluto rápido.

Tal vez si nos explicas con detalle qué deseas hacer, exista otra forma si necesidad de hacer esto.
__________________
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
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
Limitar los campos en un TTable Coco_jac Varios 1 25-12-2005 06:02:44
Unir contenido de campos omitiendo los null el-otro SQL 2 28-09-2004 08:39:23
Unir contenido de campos en sql o en la tabla el-otro SQL 3 16-09-2004 17:16:12
Borrar el contenido de uno o mas campos karocs SQL 3 09-08-2004 09:18:13
como hago para que un TQRExpr de Qreport me tome campos de un ttable en un Datamodulo perico OOP 12 09-12-2003 19:51:43


La franja horaria es GMT +2. Ahora son las 23:16:56.


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