FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
¿cómo podría agrupar datos de un TFDMemTable?
Hola
Estoy cargando datos desde un archivo CSV. Esto lo hago utilizando un TFDBatchMoveTextReader enlazado a su respectivo TFDBachMove y el contenido lo estoy colocando en un TFDBatchMoveDatasetWriter enlazado a un TFDMemTable. Y para mostrar el contenido, un Tdatasource y un TDBGrid. El contenido se lee y se muestra de manera correcta. El detalle es que hay varios registros del mismo "socio" y de la misma "clave", por lo que tengo que sumar los montos para finalmente tener un solo registro por "socio" y "clave". Pero no tengo idea de cómo puedo agrupar el contenido que ya tengo en el TDFMemTable. Código:
SOCIO | CLAVE | MONTO ------------------------------------ 1 | D1 | 100 2 | D1 | 50 1 | D1 | 50 2 | D2 | 40 #Debería tener: SOCIO | CLAVE | MONTO ------------------------------------ 1 | D1 | 150 2 | D1 | 50 2 | D2 | 40 ¿debería usar otro método para leer y agrupar el csv? Saludos y de antemano gracias por sus ideas.
__________________
|
#2
|
||||
|
||||
No he utilizado mucho los componentes de FD, pero lo primero que se me ocurre es que utilizaras una tabla temporal para cargar los registros.
Una vez que los tengas en una tabla ya puedes generar las consultas necesarias para agrupar/sumar/... Ya se que no es lo más directo, pero no se si todo lo que necesitas vas a poner hacerlo sólo usando tablas en memoria.
__________________
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. |
#3
|
|||
|
|||
No sé si puede resolver tu problema, pero es posible abrir el fichero csv directamente con un FDConnection y un FDQuery.
Podrías prescindir del TFDBatchMoveTextReader, TFDBachMove, TFDBatchMoveDatasetWriter y TFDMemTable. Desde hace un tiempo trato todos los ficheros de texto directamente con Firedac. Las opciones del driver de texto son realmente espectaculares, y te permiten, a partir de cualquier fichero de texto (ya sea tabulado, espacios fijos, separado por carácter, etc, dar formato a cada una de las columnas, y tratar el fichero como cualquier tabla de datos, recuperando las filas con una simple consulta sql y aprovechando todas las características de cualquier consulta sql (joins, clausulas where , group by , etc…). Estos días he estado trabajando con un fichero del INE correspondiente al callejero del estado Español y contiene 1.469.727 registros y una longitud de registro de 280 caracteres. El fichero ocupa poco más de 400 MB, y se abre de forma instantánea. Por supuesto que, siguiendo la filosofía de Firedac en su configuración por defecto, sólo recupera los primeros registros y a partir de aquí va paginando y recuperando bloques de datos a medida que avanzamos por el dataset. La gran potencia del sistema reside en la posibilidad de que exista, junto con el fichero de datos, un fichero con el nombre schema.ini, que contiene la definición de la estructura del fichero de datos en cuestión. https://docs.microsoft.com/es-es/sql...l-server-ver15 El schema.ini para el fichero de callejero que os estoy comentando seria el siguiente: Código:
[TRAMOS_NAL_F210630.txt] ColNameHeader=False ;Format=CSVDelimited Format=FixedLength MaxScanRows=0 CharacterSet=ANSI Col1=CodProvincia Text Width 2 Col2=CodMunicipio Text Width 3 Col3=XXX Text Width 37 Col4=CodPostal Text Width 5 Col5=XXXX Text Width 63 Col6=Nombre Text Width 25 Si te interesa, me mandas unos ficheros csv de muestra y te preparo un ejemplo. Saludos a todos |
#4
|
||||
|
||||
Muchas gracias por sus aportaciones a ambos.
Voy a tomar la sugerencia de Neftali, la realidad es que pensé que sería más complicado, pero no lo fue tanto. Utilicé una tabla temporal y con algunos "ifs" y "locate" del dataset, pude agrupar la información de una tabla en otra tabla temporal. Saludos y de nuevo gracias. P.D. Hasta hoy me llegó la notificación a mi correo
__________________
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Actualizar TFDMemTable | doctorhd | Providers | 3 | 10-12-2014 18:11:35 |
[rave report]¿como agrupar mis datos por fecha? | PablorD | Impresión | 2 | 06-05-2010 21:40:37 |
Como agrupar datos por semanas | flystar | MySQL | 1 | 06-06-2008 03:52:32 |
Como agrupar datos por semanas | flystar | MySQL | 1 | 24-02-2008 19:14:29 |
Como agrupar datos de una tabla | dabas | Impresión | 1 | 05-06-2003 16:20:47 |
|