Somma di colonne

martedì 17 giugno 2008 - 12.09

FOXTROTTER Profilo | Newbie

Salve,
questo è il mio problema:
in un database con una tab "fatture", tra i vari campi ho "imponibile","iva","totale" e "sommatotali".
"totale" mi sarà dato da:
.........
dim x,y as double
x = IMPONIBILE.Text
y = iva.Text
totale.Text = (x + (x * y) / 100)
..........................

"sommatotali"=sum(x + (x * y) / 100) -questo per access-

il problema è, come faccio a calcolare nel campo "sommatotali", la somma di tutti i "totali" dei vari record inseriti, con codice vb2005?
Spero di essere stato abbastanza chiaro. Grazie!
Fabio

Dainesi Profilo | Senior Member

Non capisco. Cosa ti interessa il codice VB5 (che tra l'altro siamo nella sezione 6.0) quando basta usare una SELECT SUM(Totale) FROM Fatture ?

FOXTROTTER Profilo | Newbie

Credo tu stia parlando di una Query?

come dovrei applicarla.
Fabio

Dainesi Profilo | Senior Member

L'implementazione della query falla tramite un oggetto Command o DataReader ma il testo SQL della query sarà:

'Se il campo IVA è un decimale (0,2 per 20% ad esempio)
SELECT SUM(Imponibile * (1+IVA)) AS TOTALE From Fatture

'Se il campo IVA è un intero (20 per 20% ad esempio)
SELECT SUM(Imponibile * (100+IVA)/100) AS TOTALE From Fatture

FOXTROTTER Profilo | Newbie

Grazie, provo a vedere se riesco ad applicarlo...
Fabio

FOXTROTTER Profilo | Newbie

Dove va inserito il testo della query? Abbi pazienza ma non sono ancora molto pratico.
Devo fare si che il Campo SOMMATOTALE mi dia la somma complessiva del Campo TOTALE, man mano che inserisco le fatture.
Fabio

Dainesi Profilo | Senior Member

Allora, la stringa SQL che ti ho postato in precedenza ti ritorna già il "TOTALONE", ovvero la somma degli importi delle singole fatture comprensivi di IVA.

Per quanto riguarda il dove devi inserire la stringa SQL ...

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

dante Profilo | Junior Member

FOXTROTTER, stai attento con le dichiarazioni.

se scrivi dim x,y as double

dichiari y come double, x no.

dovresti scrivere
dim x as double, y as double

Dante

FOXTROTTER Profilo | Newbie

Grazie è vero...
Fabio

FOXTROTTER Profilo | Newbie

Ti ringrazio per il tempo che mi hai dedicato.....ma non riesco ad adattere la tua soluzione al mio problema!
Fabio

dante Profilo | Junior Member

Conviene che posti il codice per la connessione

FOXTROTTER Profilo | Newbie

Riprovo dall' inizio :
"fatture.mdb" con 2 tabelle "clienti" e "fattura".
Le due tabelle sono correlate dal campo "RIVENDITORE".
La tab fattura è cosi strutturata:
ID
RIVENDITORE
...........
IMPONIBILE
IVA
TOTALE
SOMMATOTALI

Con VB2005 creo un nuovo progetto, stabilisco la connessione al mio fatture.mdb con una windows application:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\database.mdb

e creo i due Form "clienti.vb" e "fattura.vb"

Per avere TOTALE, tramite un pulsante di comando all 'interno del form fattura.vb, semplicemente inserisco:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
dim x as double, y as double
x=IMPONIBILE.Text
y=IVA.Text
TOTALET.Text=(x+(x * y)/100)
End Sub

Per avere la somma di tutti i totali, dati dai singoli totali delle varie fatture inserite per rivenditore,come faccio ?

SOMMATOTALI = ?????

Grazie ancora...!
Fabio

Dainesi Profilo | Senior Member

Man mano arrivano i dati ...

cambia la stringa
strSQLTOT = "SELECT SUM(Imponibile * (1+IVA)) AS TOTALE From Fatture"

in
strSQLTOT = "SELECT SUM(Imponibile * (1+IVA)) AS TOTALE From Fatture WHERE Rivenditore = " & CLng(TxtRivenditore.Text)

Se usi OLEDB al posto di SQLClient ricordati di usare gli analoghi oggetti e dichiarare i Namespace

dante Profilo | Junior Member

la query? se non posti anche quella...

vai nel dataset un questione e modifica la query inserendo quello che ti ha scritto, giustamente, Dainesi

FOXTROTTER Profilo | Newbie

Grazie per la puntualizzazione!!!!
Fabio

FOXTROTTER Profilo | Newbie

Grazie mille, penso di aver capito....!!!!!
Fabio

FOXTROTTER Profilo | Newbie

Perchè :
WHERE Rivenditore = " & CLng(TxtRivenditore.Text)

comunque impostando la query "FillBYsommatotali", dando "ok" mi dice che è diversa da quella caricata.......
Fabio

Dainesi Profilo | Senior Member

>Perchè :
>WHERE Rivenditore = " & CLng(TxtRivenditore.Text)
>

Metti il WHERE perché imponi un filtro sui dati in modo da estrarre solo quelli che si riferiscono ad un rivenditore che per semplicità ho pensato che tu potessi segnarlo in una text box.

>comunque impostando la query "FillBYsommatotali", dando "ok"
>mi dice che è diversa da quella caricata.......

La query "FillBYsommatotali" è la prima volta che la sento. Se vuoi spiegarmela oppure se posti tutto il codice della maschera ...

FOXTROTTER Profilo | Newbie

Giusto per il "where" ci ho pensato dopo
comunque questo è il codice attuale della maschera frmFatture.vb :

Public Class frmFatture
Private m_ParametroRIVENDITORE As String
Public WriteOnly Property ParametroRIVENDITORE() As String
Set(ByVal value As String)
m_ParametroRIVENDITORE = value
End Set
End Property

Private Sub FatturaBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FatturaBindingNavigatorSaveItem.Click
Me.Validate()
Me.FatturaBindingSource.EndEdit()
Me.FatturaTableAdapter.Update(Me.DatabaseDataSet.Fattura)

End Sub

Private Sub frmFatture_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Carico il Form assegnandoli una query di ordine alfabetico per RIVENDITORE
Me.FatturaTableAdapter.FillByrivenditore(Me.DatabaseDataSet.Fattura, Me.m_ParametroRIVENDITORE)
End Sub

Private Sub btnCalcola_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalcola.Click
Dim x As Double, y As Double
x = IMPONIBILETextBox.Text
y = IVATextBox.Text
TOTALETextBox.Text = (x + (x * y) / 100)
End Sub
End Class
Fabio
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5