Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-06-2007
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 22
David Va por buen camino
Question Agrupar campos en ClientDataSet y recorrer el resultado

Hola

Tengo una tabla con varios campos , dos de ellos son cliente y Obra , quiero hacer el equivalente a un group by cliente y obra en un ClientDataSet.

Pongo un ejemplo

Cliente---Obra-----Cantidad--IVA--IVA(2ª posibilidad)

1----------A-----------10-----16----16
1----------A-----------20-----16-----7
1----------B-----------10-----16-----16
2----------B-----------20------7------7

Bien la agrupación me daria 2 grupos , El primero formado por los 2 primeros registros obviamente , el segundo el 3 regitro y el tercero con el último registro.

Pongo 2 veces IVA para en lugar de repetir 2 veces la tabla , para simular 2 tablas y dos posibilidades

Bien quiero hacer un código que me saque lo siguiente

Resultado que quiero con el primer IVA que he puesto :

Cliente---Obra---Cantidad---IVA
1----------A-------30-------16
1----------B-------10-------16
2----------B-------20--------7

El Resultado con el 2º IVA que he puesto seria

cliente--Obra--Cantidad---IVA
1--------B--------30-----16
2--------B--------20------7

y luego un mensaje que diga algo así :

Los registros (1 y 2) no han podido ser contabilizados por que tienen distinto IVA

Última edición por David fecha: 19-06-2007 a las 12:12:41.
Responder Con Cita
  #2  
Antiguo 19-06-2007
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Consulta en la ayuda las propiedades Aggregates, Groupinglevel, IndexName del CDS..
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #3  
Antiguo 19-06-2007
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 22
David Va por buen camino
Al final lo he solucionado así .

en IndexName hago un indice por Cliente y Obra.

Luego como tengo filtrado los campos ha insertar .

hago algo así :

Supongamos que el ClientDataSet para el ejemplo Client
Código Delphi [-]
type
miregistro = record
campo1 : string;
campo2 :integer;
....
end;
while not Client.eof do
begin
Cliente := ClientCliente.AsInteger;
Obra := ClientObra.AsInteger;
// Aquí va la salida , como no se de una propiedad que agrupe registros
// los ordeno los del mismo grupo y mientras tenga el mismo contenido pues 
// los anoto
while ClientCliente.AsInteger = Cliente and ClientObra.AsInteger = Obra do
begin
if miregistro.campo1 = '' then
begin
//Relleno el registro , sólo con el primero del grupo
end;
Client.Next;
end;
// Aquí relleno la tabla resultado
end;

Más o menos , este es la manera del código , que funciona , pero la lastima es cuando haces un indexname = 'miIndice' y te lo ordena como si fuera más o menos un group by , no sepa de una propiedad , un valor integer para cada grupo de valores .

Un saludo
Responder Con Cita
  #4  
Antiguo 20-06-2007
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Cita:
pero la lastima es cuando haces un indexname = 'miIndice' y te lo ordena como si fuera más o menos un group by , no sepa de una propiedad , un valor integer para cada grupo de valores .
Crea un campo Aggregate en el CDS y en su propiedad Expression pon el Count(campo), asignale el indexname y pon su GroupingLevel a 1 y activalo y asi tendras ese integer q deseas obtener en este campo..
__________________
¿Microsoft? No, 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
Cargar campos en SQLDataset y ClientDataset toni.vi Conexión con bases de datos 0 11-02-2007 17:14:11
Recorrer Campos de Un Registro Jvilomar MS SQL Server 3 22-11-2005 09:06:14
agrupar varios campos satabel Impresión 0 03-08-2005 18:17:17
Campos calculados y clientdataset Grupo ISoftware Conexión con bases de datos 2 18-11-2003 00:57:01
Copiar Campos de un ClientDataSet a Otro linsua Conexión con bases de datos 4 06-11-2003 21:25:00


La franja horaria es GMT +2. Ahora son las 07:08: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