- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- problema nel sommare più SUM da tabelle diverse
-
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, adLockOptimistice 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 correttamenteStrano 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.
-
Non basterebbe che salvi i valori dei due recordset che ti servono in due variabili e poi fai la sottrazione?
-
cioè come si fa puoi aiutarmi?
-
Basta che sposti le righe
n1= RecSet("Totalep")
e
n2= RecSet("Totale")
prima che fai recset close
-
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