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 Buscar Temas de Hoy Marcar Foros Como Leídos

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


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
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 21:29:04.


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