Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-07-2011
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.740
Poder: 26
ContraVeneno Va por buen camino
Yo creo que no estas atacando el problema como se debería.

Me refiero a que si se supone que es un proceso automático, no deberías usar un ClientDataset cuya funcionalidad principal se utiliza para la interacción con el usuario. Y definitivamente no deberías de trabajar con 300,000 registros a la vez.

Si aún así quieres trabajar con un ClientDataset, debes aceptar que trabajar con esa cantidad de datos a la vez, va a ser un proceso lento ya que se tienen que cargar a memoria. La parte de que te carga solo 3000 y deja de cargar, es porque tienes que recorrer el clientdataset hasta el 3001, para que cargue los siguientes 3000 y así sucesivamente hasta llegar al final.

Edito: Si lo que quieres verificar es si el dato en cuestión ya existe en la base de datos y si no existe lo insertas, entonces lo mejor sería colocar un índice en la base de datos que no te permita duplicar el dato que quieres guardar. Y luego a traves de una consulta SQL puedes insertar todos los datos en una sola instrucción.
__________________


Última edición por ContraVeneno fecha: 14-07-2011 a las 00:05:19.
Responder Con Cita
  #2  
Antiguo 14-07-2011
papote654 papote654 is offline
Miembro
 
Registrado: nov 2006
Posts: 29
Poder: 0
papote654 Va por buen camino
gracias contraveneno,

utilizo el client porque no quiero que los datos bajen a la base de datos hasta que no sea definitivo, ya que al utilizar el adoquery cada vez que cambie de registro me lo ira grabando y eso no seria factible ya que se puede realizar una consulta en ese momento y luego cancelada la transferencia y tendríamos un dato que no existe o no es real.

este proceso lo utilizo de esa forma ya que son varias sucursales, cada una con su base de datos local y que a x hora o a fin o principio de día, realizan la transferencia.

puede darse el caso de que modifiquen una información, por ejemplo el nombre de un cliente, este dato debe ser corregido en el servidor principal y esto es lo que me llevo a que también necesite actualizar los registros y no solo insertarlo.
__________________
Al que no le gusta enseñar, no merece aprender...
Responder Con Cita
  #3  
Antiguo 14-07-2011
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.610
Poder: 32
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
¿Qué te parece si empezamos desde el principio? Explica por favor, con todo detalle, qué información es la que se está manejando, cómo se está manejando y lo que pretendes hacer.

En pocas palabras, hablemos del problema a resolver antes de hablar de los problemas que surgieron al intentarlo de una u otra manera.

Saludos.

Al González.
Responder Con Cita
  #4  
Antiguo 14-07-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 4.215
Poder: 24
newtron Va camino a la fama
¿Y una tabla en memoria no iría mejor?
Responder Con Cita
  #5  
Antiguo 14-07-2011
Avatar de DarKraZY
DarKraZY DarKraZY is offline
Miembro
 
Registrado: ago 2003
Posts: 460
Poder: 24
DarKraZY Va por buen camino
Cita:
Empezado por newtron Ver Mensaje
¿Y una tabla en memoria no iría mejor?
Básicamente un TClientDataSet es una tabla en memoria.
Espero que no lo tenga conectado mediante un TDataSource ya que esto, si no hace DisableControls, podría ralentizar mucho el proceso.
300.000 registros son muchos, pero tampoco tantos.
Responder Con Cita
  #6  
Antiguo 14-07-2011
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: 19.449
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 newtron Ver Mensaje
¿Y una tabla en memoria no iría mejor?
Cita:
Empezado por DarKraZY Ver Mensaje
Básicamente un TClientDataSet es una tabla en memoria.
Yo había pensado lo mismo que newtron, pero "pensando" en tablas en memoria "del servidor" (no se si él se refería a eso); Con el ClientDataset estás trayendo TODOS los datos al cliente, para luego hacer las modificaciones y volcarlos de nuevo al servidor.

En mi caso revisaría tablas en memoria del servidor.

De todas formas, creo que lo que ha dicho Al es muy acertado. A priori, sin saber el problema concreto, la solución de traer 300.000 registros al cliente, no parece correcta ni adecuada.
__________________
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
  #7  
Antiguo 14-07-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
Yo no alcanzo a ver el porqué de procesar tantos registros a la vez, quizás si nos dice el propósito comprendamos mejor.

En cualquier caso yo procesaría cierta cantidad cada vez, eso se vería haciendo unas pruebas con el servidor.

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
  #8  
Antiguo 14-07-2011
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Yo afinaría un poco más: ¿Necesita ver el cliente todos los datos?

Si necesitara verlos, con ver 100 registros seguro se hace una idea de lo que debe modificar.

Obviamente no va a modificar los 300.000 registros a mano, así que hacerlos en el clientdataset o hacerlo mediante una SQL con control de transacciones ya va que chuta.

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 14-07-2011
Avatar de DarKraZY
DarKraZY DarKraZY is offline
Miembro
 
Registrado: ago 2003
Posts: 460
Poder: 24
DarKraZY Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
Yo había pensado lo mismo que newtron, pero "pensando" en tablas en memoria "del servidor" (no se si él se refería a eso);
Hola Neftali, ¿Cómo serían esas tablas de memoria en el servidor?
  • ¿creando un procedimiento almacenado en el servidor?
  • ¿Una aplicación (tipo DataSnap) corriendo en el servidor?
  • ...

Me he quedado con la curiosidad de saber cómo se haría eso

Saludos!
Responder Con Cita
  #10  
Antiguo 14-07-2011
papote654 papote654 is offline
Miembro
 
Registrado: nov 2006
Posts: 29
Poder: 0
papote654 Va por buen camino
buenos días y gracias por el apoyo,

la situación es que tengo varias sucursales, cada una de ellas con su base de datos local, cree una aplicación donde el usuario selecciona las tablas o mantenimientos a exportar y yo me encargo de buscar los datos y transferirlo al servidor. En este proceso lo que busco los datos de origen y valido si el campo o los campos clave existen de ser así hago un EDIT y paso el valor de origen al destino de lo contrario INSERT los registro de origen en el destino.

es una transferencia de datos donde verifico si el dato existe lo actualizo de lo contrario lo inserto.
__________________
Al que no le gusta enseñar, no merece aprender...
Responder Con Cita
  #11  
Antiguo 14-07-2011
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.682
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por Al González Ver Mensaje
¿Qué te parece si empezamos desde el principio? Explica por favor, con todo detalle, qué información es la que se está manejando, cómo se está manejando y lo que pretendes hacer.
En pocas palabras, hablemos del problema a resolver antes de hablar de los problemas que surgieron al intentarlo de una u otra manera.
Saludos.
Al González.
+1


.
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
Ado Excel muchos datos Delfino Conexión con bases de datos 9 22-03-2011 09:48:56
Mostrar en un DBGRID Relacion Muchos Muchos dmassive SQL 6 12-02-2009 18:55:19
Cargar XML en un ClientDataSet Paulao Varios 2 09-06-2008 19:39:18
Cargar campos en SQLDataset y ClientDataset toni.vi Conexión con bases de datos 0 11-02-2007 17:14:11
cargar dbedit con clientdataset juan888 Conexión con bases de datos 6 28-02-2004 00:37:13


La franja horaria es GMT +2. Ahora son las 17:48:02.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi