• User

    problema nel sommare più SUM da tabelle diverse

    Salve a tutti,

    Problemino con la somma dei valori da tabelle in access (spero che la spiegazione sia abbastanza chiara).

    Nella pagina protetta del cliente devo far vedere la sua situazione contabile, esattamente quanto ha pagato, il valore dei preventivi inviati, e il saldo. Mi ritrovo quindi più tabelle concatenate fra loro e creare due somme che asua volta devono essere sommate fra loro.

    io ho fatto cosi:

    Set RecSet = Server.CreateObject("ADODB.Recordset")
    SQL = "SELECT SUM(costo) AS Totale, SUM(ImportoPagamento) AS Totalep, Utenti.Paese, immagine, NomeSocietà, NomeContatto, CognomeContatto, IndirizzoFatturazione, Città, StatoOProvincia, dare, aver' e, contratto, Utenti.id"
    SQL = SQL & " FROM [inviipreventivi],[Pagamenti],[Utenti],[Contatti]"
    SQL = SQL & " where username = '" & session("username") &"' and inviipreventivi.id = Utenti.ID and inviipreventivi.idContatto = Contatti.ID "
    SQL = SQL & " and Pagamenti.IDCliente = Utenti.ID "
    SQL = SQL & " GROUP BY costo, ImportoPagamento, Utenti.Paese, immagine, NomeSocietà, NomeContatto, CognomeContatto, IndirizzoFatturazione, Città, StatoOProvincia, dare, avere, contratto, Utenti.i' d"
    RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

    e funziona però mi da valori sballati ed esattamente la prima somma la moltiplica per la somma dei record del TotaleP
    e la seconda somma la moltiplica per il totale dei record dl Totale.
    per essere più chiaro:
    il cliente ha fatto 3 pagamenti per un totale di ?.400
    e ha ricevuto 15 preventivi per un totale di ?. 300
    il risultato che ottengo è:
    somma dei pagamenti (400 x 15)
    somma preventivi (300 x 3)
    la differenza tra pagamenti e preventivi la esegue correttamente

    Strano vero!!!

    Ho modificato inserendo una sola somma per ogni RecSet e funziona ma il problema e che chiudendo il RecSet per avere poi la differenza non ho più i dati.
    e cioè:
    <td width="693"><p align="center"> <font size="3" face="Verdana"><b><i>Situazione Contabile:</i></b></font></p>
    <%
    RecSet.Close
    Set RecSet = Server.CreateObject("ADODB.Recordset")
    SQL = "SELECT SUM(ImportoPagamento) AS Totalep FROM [Pagamenti],[Utenti] where username = '" & session("username") &"' and Pagamenti.IDCliente = Utenti.ID"
    RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic
    %>
    <p align="center"><font size="3" face="Verdana"><b><i>importi versati: ?. <%=RecSet("Totalep")%></i></b></font></p>
    <%
    RecSet.Close
    Set RecSet = Server.CreateObject("ADODB.Recordset")
    SQL = "SELECT SUM(costo) AS Totale FROM [inviipreventivi],[Utenti],[Contatti] where username = '" & session("username") &"' and inviipreventivi.id = Utenti.ID and inviipreventivi.idContatto = Contatti.ID"
    RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic
    %>
    <p align="center"><font size="3" face="Verdana"><b><i>importi di preventivi
    ricevuti: ?. <%=RecSet("Totale")%></i></b></font></p>
    <p align="center"><font size="3" face="Verdana"><b><i>saldo: ?. <%
    n1= RecSet("Totalep")
    n2= RecSet("Totale")
    ' =Response.Write(IsNumeric("dare")+IsNumeric("avere"))
    Response.Write (n1-n2)
    %></i></b></font></p>

    Qualcuno di Voi saprebbe aiutarmi (se avete capito qualcosa) in tutto questo casino.


  • Super User

    Non basterebbe che salvi i valori dei due recordset che ti servono in due variabili e poi fai la sottrazione?


  • User

    cioè come si fa puoi aiutarmi?


  • Super User

    Basta che sposti le righe
    n1= RecSet("Totalep")
    e
    n2= RecSet("Totale")
    prima che fai recset close


  • User

    NO non va bene, ci avevo provato
    Infatti se sposto le righe prima del close poi non le legge più e mi dà il seguente errore:

    ADODB.Recordset error '800a0cc1'
    Item cannot be found in the collection corresponding to the requested name or ordinal. /protetta_home.asp, line 121