Somma con condizione di una colonna.

venerdì 16 aprile 2010 - 22.48

Peppino Profilo | Junior Member

Ciao a tutti.
Non stupitevi per la domanda sicuramente banale, ma purtroppo sono ancora un principiante e non riesco a capire l'errore che mi viene restituito. Nell'applicazione che faccio pratica per imparare, avrei bisogno di estrarre il totale della fattura selezionata. Guardando in giro dei vari esempi, ho messo insieme questa funzione.

Public Function TotImpFat() As Integer
Dim numFat As Integer = CInt(TxtIDFat.Text) ' la TextBox che visualizza il N.ro della Fattura
Try
Dim cmdTmp As New SqlCommand
cmdTmp.Connection = ConnessioneDatabase
cmdTmp.CommandText = "SELECT SUM(Importo) FROM Fatture_dettagli WHERE IDFat=numFat"
ConnessioneDatabase.Open()
Dim risImp As Object = cmdTmp.ExecuteScalar()
ConnessioneDatabase.Close()
If risImp Is DBNull.Value Or risImp Is Nothing Then
Return 0
End If
Return Convert.ToInt32(risImp)

Catch ex As Exception
Messaggi.Errore("Errore non gestito ...... : " & _
ex.ToString, "Attenzione")
Return 0
End Try
End Function

Alla chiamata della funzione mi riporta errore dicendomi che la colonna numFat non è valida.
Mentre se vado a modificare la riga
da:
cmdTmp.CommandText = "SELECT SUM(Importo) FROM Fatture_dettagli WHERE IDFat = numFat"
a:
cmdTmp.CommandText = "SELECT SUM(Importo) FROM Fatture_dettagli WHERE IDFat = 2"
non mi dà nessun errore riportandomi il totale della fattura al quale ho messo il numero come parametro.
Dove stà l'errore?, è possibile avere la correzione dell'errore?.
Come sempre ringrazio in anticipo e saluto tutti.
Ciao. Giuseppe.

lbenaglia Profilo | Guru

>Alla chiamata della funzione mi riporta errore dicendomi che
>la colonna numFat non è valida.
>Mentre se vado a modificare la riga
>da:
>cmdTmp.CommandText = "SELECT SUM(Importo) FROM Fatture_dettagli
>WHERE IDFat = numFat"
>a:
>cmdTmp.CommandText = "SELECT SUM(Importo) FROM Fatture_dettagli
>WHERE IDFat = 2"
>non mi dà nessun errore riportandomi il totale della fattura
>al quale ho messo il numero come parametro.
>Dove stà l'errore?, è possibile avere la correzione dell'errore?.

Ciao Giuseppe,

Tutto ciò che è racchiuso tra doppi apici costituisce una stringa, pertanto numFat viene interpretata come stringa, non come variabile.
Per risolvere il problema definisci un oggetto command parametrico.
Prima di tutto definisci il parametro:
cmdTmp.CommandText = "SELECT SUM(Importo) FROM Fatture_dettagli WHERE IDFat = @numFat"

Poi aggiungilo al command (ho ipotizzato che il data type sia intero):
cmdTmp.Parameters.Add(New SqlParameter("@numFat", SqlDbType.Int)) cmdTmp.Parameters("@numFat").Value = 2

Infine esegui il command:
Dim risImp As Object = cmdTmp.ExecuteScalar()

>Come sempre ringrazio in anticipo e saluto tutti.
Prego.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Peppino Profilo | Junior Member

Ciao Lorenzo.
Grazie per la pronta e risolutiva risposta.
Ciao. Giuseppe.
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