Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-11-2008
Avatar de radiohead
radiohead radiohead is offline
Miembro
 
Registrado: may 2004
Ubicación: Oliva (Valencia)
Posts: 34
Poder: 0
radiohead Va por buen camino
Cool Problema: resultados inesperados en access

Hola a todos,

Tengo un problema en una consulta de Access.

El objeto de la misma es obtener la deuda (total) de clientes que tengan un aviso enviado.

Para ello creé una consulta anidada que solicita una fecha de aviso de deudas (por lo tanto, lo primero que tendrá que comprobar és que existan facturas impagadas con fecha de expedición anterior a esta fecha de aviso, por ello la razón de ser de la subconsulta) --y como resultado extrae la deuda total del cliente (hay que tener en cuenta que dichos clientes pueden tener facturas impagadas posteriores a dicha fecha de aviso).

Utilizo 3 tablas relacionadas: Abonados (clientes), Recibos (facturas) y calles (direcciones servicio).
La relación es la siguiente:
Abonados-Recibos: Uno a Muchos.
Calles-Abonados: Uno a Muchos.

La consulta en access es la siguiente:

Código:
SELECT 
  Abonados.CodigoAbonado AS REF, 
  First(Abonados.Nombre1) AS NOMBRE, 
  Calles.NombreCalle & ', ' & Abonados.NumeroFinca & '-' & Abonados.EscaleraFinca & '-' & Abonados.PisoFinca & '-' & Abonados.PuertaFinca AS DIRECCION,       Abonados.AguaCortada AS CORTADA, 
  Abonados.NumeroContador AS CONTADOR, 
  Count(Recibos.NumeroRecibo) AS [nF/], 
  Sum(Recibos.ImporteRecibo) AS IMPORTE, 
  Abonados.Telefono1, 
  Abonados.Telefono2, 
  Abonados.Fax
FROM 
  (Abonados INNER JOIN Recibos ON Abonados.CodigoAbonado = Recibos.CodigoAbonado) LEFT JOIN Calles ON (Abonados.CodigoCalleFinca = Calles.CodigoCalle) AND (Abonados.CodigoZonaFinca = Calles.CodigoZona) AND (Abonados.CodigoPoblacionFinca = Calles.CodigoPoblacion)
WHERE 
  (((Abonados.CodigoAbonado) In (SELECT ((Recibos.CodigoAbonado)) FROM (Abonados INNER JOIN Recibos ON Abonados.CodigoAbonado = Recibos.CodigoAbonado) WHERE (Recibos.Situacion)="I" AND Abonados.IDFamilia <> 1  AND (Recibos.FechaRecibo) <=  [:Fecha_Aviso] GROUP BY Recibos.CodigoAbonado)))
GROUP BY
  Abonados.CodigoAbonado, 
  Abonados.AguaCortada, 
  Abonados.NumeroContador, 
  Abonados.Telefono1, 
  Abonados.Telefono2, 
  Abonados.Fax, 
  Calles.NombreCalle, 
  Abonados.NumeroFinca, 
  Abonados.EscaleraFinca, 
  Abonados.PisoFinca, 
  Abonados.PuertaFinca
ORDER BY 
  First(Abonados.Nombre1);
Vale,
El problema está en los campos Count(Recibos.NumeroRecibo) AS [nF/] -y-
Sum(Recibos.ImporteRecibo) AS IMPORTE. Calcula mal, como si lo hiciera varias veces y agregara.

Por ejemplo, en el primer registro sale que el cliente debe 34 recibos y una cantidad de 1.033,77 Eur. cuando en realidad son 4 recibos y 196,66.

El problema aparece desde que incluí la consulta anidada. Cuando le consultaba facturas pendientes antes de determinada fecha, sin más, no ocurría. O más bien desde que incluyo el"IN", pues he forzado a buscar de abonados concretos incluidos manualmente en la consulta y obtiene el mismo result.

En eso, y pienso, también en la agrupación, pues son los 2 únicos campos que no se agrupan en el "GROUP BY", pues son directamente calculados de la agrupación resultante.

Agradecería enorme-mente me ayudaran a salir de este impass


Salu2
__________________
La vida es un desliz. Después, te mueres.
Responder Con Cita
 



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
Problema: resultados incrementales en Rave david.rguez Impresión 1 24-10-2007 10:25:27
Problema con resultados Null vpepen SQL 14 27-07-2006 10:19:04
Problema con Access diegolf Conexión con bases de datos 1 23-12-2004 09:35:59
Problema con Access senpiterno Conexión con bases de datos 1 19-10-2004 07:19:48
problema con Access y Win xp Rabata Conexión con bases de datos 0 24-02-2004 11:14:19


La franja horaria es GMT +2. Ahora son las 19:21:10.


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