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 15-10-2011
Avatar de RebeccaGL
RebeccaGL RebeccaGL is offline
Miembro
 
Registrado: ene 2008
Posts: 199
Poder: 17
RebeccaGL Va por buen camino
Query.DisableControls

Buenas

Una consulta, tengo dos tablas Tabla1 y Tabla2 ambas estan enlazadas cuando quiero recorrer la Tabla2 hago lo siguiente para que sea mas rapido.

Código Delphi [-]
Tabla1.DisableControls;
Tabla2.DisableControls;
 
Tabla1.First;
while not (Tabla1.Eof) do
begin
  Tabla2.First;
  while not (Tabla2.Eof) do
  begin
    ...
    Tabla2.Next;
  end;
  Tabla1.Next;
end;
 
Tabla1.EnableControls;
Tabla2.EnableControls;

Si no uso el DisableControls el recorrido de los registros es muy lento, pero si uso el Table1.DisableControls pierdo en enlaze MasterFields de la segunda tabla, mi pregunta es, ¿como hago para que no se pierda el enlaze de la segunda tabla con la primera usando el Table1.DisableControls.


saludos
Responder Con Cita
  #2  
Antiguo 15-10-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No conozco ningún motivo por el que pierdas un enlace entre tablas por usar disblecontrols en el dataset, me suena rarísimo.
De todas formas, ¿qué es lo que quieres hacer recorriendo ambas tablas de esa manera?.
Responder Con Cita
  #3  
Antiguo 15-10-2011
Avatar de RebeccaGL
RebeccaGL RebeccaGL is offline
Miembro
 
Registrado: ene 2008
Posts: 199
Poder: 17
RebeccaGL Va por buen camino
Ambas tablas entas enlazadas con las propiedades (masterfields y linkedfields) y los valores se pierden al momento de hacer tabla1.disablecontrols

Si voy al segundo registro de Tabla1.next la tabla2 no muestra sus respectivos registros relacionados con la tabla1, ahora recorro las tablas de esa manera para hacer calculos registro por registro porque se trata de recalcular un kardex.
Responder Con Cita
  #4  
Antiguo 15-10-2011
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Tendríamos que saber cuáles son esos cálculos, pero presumo que sería más eficiente utilizar una constulta.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 15-10-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues eso, lo que dice marcoszorrilla es lo que hay que hacer. Que eso de recorrer tablas de esa manera es cosa de cuanto estaba dBase o más antiguo
Usa una sentencia sql y tienes los resultados al instante.
Si necesitas ayuda, ya sabes, aquí estamos.
Responder Con Cita
  #6  
Antiguo 15-10-2011
Avatar de RebeccaGL
RebeccaGL RebeccaGL is offline
Miembro
 
Registrado: ene 2008
Posts: 199
Poder: 17
RebeccaGL Va por buen camino
Por Ejemplo.

En un kardex tengo 1000 productos y si modifico el registro numero 50 desde ahi, desde el registro numero 50 se tiene que recalcular todo el kardex hasta el registro 1000 como harias eso en una consulta sql.

El registro 51 jala el saldo del 50 el 52 del 51 el 53 del 52 asi hasta llegar al registro numero 1000 y tambien hay que recalcular los costos promedios y totales. Ahora no solo es un producto son como 200 productos cada producto con 500 a 2000 registros por mes.



saludos
Responder Con Cita
  #7  
Antiguo 15-10-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues eso se hace mejor en un trigger de la BD.
Según entiendo tienes una estructura más o menos así (resumiendo):
Código SQL [-]
tabla tbCuentas (
  id_cuenta integer, 
  saldo double
)
Y los datos que tienes son (ejemplo):
Código:
id_cuenta---saldo
  1,      233
  2,      372
  3,       22
  4,      765
  5,       39
  ...
Y quieres que si, por ejemplo, el registro id_cuenta=3 le suma 10, entonces los siguientes tienen que sumarlos también a sus valores, o sea, quedaría así:
Código:
id_cuenta---saldo
  1,      233
  2,      372
  3,       32
  4,      775
  5,       49
  ...
¿Es eso lo que quiéres hacer?
Responder Con Cita
  #8  
Antiguo 15-10-2011
Avatar de RebeccaGL
RebeccaGL RebeccaGL is offline
Miembro
 
Registrado: ene 2008
Posts: 199
Poder: 17
RebeccaGL Va por buen camino
Si asi es algo parecido, pero tambien hay que restar.

Si es una entrada E se suma y si es una salida S se resta
No necesariamente hay que sumar una cantidad igual se pueden sumar o restar cantidades desiguales

Si es una entrada E de 10 se suma 10 al nuevo saldo y es otra entrada 20 se suma 20 al nuevo saldo, como tambien se restaran y son salidas
Responder Con Cita
  #9  
Antiguo 15-10-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿De qué base de datos estamos hablando?
Responder Con Cita
  #10  
Antiguo 15-10-2011
Avatar de RebeccaGL
RebeccaGL RebeccaGL is offline
Miembro
 
Registrado: ene 2008
Posts: 199
Poder: 17
RebeccaGL Va por buen camino
Bases de datos MySQL
Responder Con Cita
  #11  
Antiguo 15-10-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por connor Ver Mensaje
No necesariamente hay que sumar una cantidad igual se pueden sumar o restar cantidades desiguales
A ver, explica bien en qué consiste el proceso, para tenerlo claro
Responder Con Cita
  #12  
Antiguo 17-10-2011
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por Casimiro Notevi Ver Mensaje
No conozco ningún motivo por el que pierdas un enlace entre tablas por usar disblecontrols en el dataset, me suena rarísimo.
Es que es normal lo que sucede, Casi:
Cita:
Empezado por Ayuda de Delphi sobre DisableControls
If the dataset is the master of a master/detail relationship, calling DisableControls also disables the master/detail relationship. Setting BlockReadSize instead of calling DisableControls updates the detail datasets as you scroll through the dataset, but does not update data-aware controls.
Con el conjunto de datos maestro, en lugar de utilizar DisableControls y EnableControls, habría que usar la propiedad BlockReadSize. Tiene el mismo efecto con los enlaces visuales (controles en el formulario), pero, a diferencia de DisableControls, los enlaces maestro-detalle permanecen activos.
Código Delphi [-]
TablaMaestra.BlockReadSize := 1;

Try
  ...
Finally
  TablaMaestra.BlockReadSize := 0;
End;

Saludos.
Responder Con Cita
  #13  
Antiguo 17-10-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Vaya, se ve que no uso mucho DisableControls
Responder Con Cita
  #14  
Antiguo 26-09-2013
Avatar de RebeccaGL
RebeccaGL RebeccaGL is offline
Miembro
 
Registrado: ene 2008
Posts: 199
Poder: 17
RebeccaGL Va por buen camino
Una pregunta, ¿que valor se tiene que poner en Tabla.BlockReadSize dependiendo de que?

Tabla.BlockReadSize := 1
Tabla.BlockReadSize := 2
Tabla.BlockReadSize := 3
Tabla.BlockReadSize := 32
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
DevExpress 2011 v1.6 - Problema de DisableControls. Neeruu Varios 2 29-09-2011 01:54:36
Disablecontrols en una relación master detail pabloparra Conexión con bases de datos 4 21-02-2008 15:52:47
Query dentro de otro query (Access) FGarcia SQL 2 28-12-2007 05:46:05
Hacer un Query de otro Query francisco260184 SQL 9 10-04-2007 03:46:18
Como hacer referencia a un query dentro de otro query? JuanBCT SQL 2 05-09-2006 18:35:25


La franja horaria es GMT +2. Ahora son las 03:50:09.


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