+ Rispondi al messaggio
Pagina 1 di 3 123 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 29

Valori totali errati

  1. #1
    L'avatar di freddy60
    freddy60 non è in linea Scolaretto
    Post
    227
    Like Inviati  
    0
    Like Ricevuti  
    0
    ho un altro problema, con questo codice visualizzzo le entrate e le uscite del conto 1 del mese corrente,

     Private Sub BntMeseCorrente_Click(sender As Object, e As EventArgs) Handles BntMeseCorrente.Click
    
            'Entrate e uscite ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    
            Try
                Dim cmd As SqlCommand
                Dim conn As New SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\My Project\BudgetFamiliare.mdf;Integrated Security=True")
                Dim Sql As String = “SELECT sum(entrate) As Totale FROM contabilita WHERE idconto=1 AND MONTH(data) = MONTH(GETDATE()) AND YEAR(data) = YEAR(GETDATE())"
    
                cmd = New SqlCommand(Sql, conn)
                conn.Open()
    
                Dim DR As SqlDataReader
                DR = cmd.ExecuteReader
    
                While DR.Read
                    Label25.Text = DR("Totale")
                    Label25.Text = String.Format("{0:c2}", DR("Totale")).ToString
                End While
                cmd.Dispose()
                conn.Close()
            Catch ex As Exception
    
            End Try
    
            Try
                Dim cmd As SqlCommand
                Dim conn As New SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\My Project\BudgetFamiliare.mdf;Integrated Security=True")
                Dim Sql As String = “SELECT sum(uscite) As Totale FROM contabilita WHERE idconto=1 AND MONTH(data) = MONTH(GETDATE()) AND YEAR(data) = YEAR(GETDATE())"
    
                cmd = New SqlCommand(Sql, conn)
                conn.Open()
    
                Dim DR As SqlDataReader
                DR = cmd.ExecuteReader
    
                While DR.Read
                    Label26.Text = DR("Totale")
                    Label26.Text = String.Format("{0:c2}", DR("Totale")).ToString
                End While
                cmd.Dispose()
                conn.Close()
            Catch ex As Exception
    
            End Try
    
    End Sub
    
    però c'è un incoveniente, se nel mese corrente non ci sono dati mi visualizza le entrate e le uscite di tutto l'anno.
    Io invece vorrei che quando clicco sul bottone del mese corrente se non ci sono dati mi visualizzasse nelle label 25 e 26 " 0,00 €"

    come posso fare?

  2. #2
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,396
    Blogs
    5
    Like Inviati  
    5
    Like Ricevuti  
    32
    Ho corretto il titolo ...

    Se non ci sono record da valutare il risultato è DBNULL e probabilmente hai un errore che non vedi per via della Try Catch.
    A parte il fatto che non capisco perché assegni due volte alla stessa Label un valore diverso (due volte alla Label25 e due volte alla Label26), dato che questa cosa non ha senso (alla label viene assegnato l'ultimo valore), sarebbe meglio eliminare il ciclo

                While DR.Read
                    Label25.Text = DR("Totale")
                    Label25.Text = String.Format("{0:c2}", DR("Totale")).ToString
                End While
    
    e sostituirlo totalmente con

    DR.Read
    If IsDBNull(DR("Totale")) Then
    	Label25.Text = "0"
    Else
    	Label25.Text = String.Format("{0:c2}", DR("Totale")).ToString
    End If
    
    E in modo simile per l'altro ciclo.

    Anche il fatto di aprire due volte la connessione non ha molto senso. Potresti fare eseguire una sola query per i calcoli tipo

    SELECT sum(entrate) AS totaleE, sum(uscite) AS totaleU ...
    Ultima modifica di AntonioG; 05-12-2020 23:33 
    ℹ️ Leggi di più su AntonioG ...

  3. #3
    L'avatar di freddy60
    freddy60 non è in linea Scolaretto
    Post
    227
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ok con il codice che mi hai postato funziona.

    Però mettendo lo stesso codice dove mi fa il saldo mi fa la differenza solo se immetto entrambe le operazioni, ossia entrate ed uscite, altrimenti il saldo resta a zero

    questo è il codice per il saldo:

     Try
                Dim cmd As SqlCommand
                Dim conn As New SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\My Project\BudgetFamiliare.mdf;Integrated Security=True")
                Dim Sql As String = “SELECT sum(entrate)-sum (uscite) As Totale FROM contabilita WHERE idconto=1 AND MONTH(data) = MONTH(GETDATE()) AND YEAR(data) = YEAR(GETDATE())"
    
                cmd = New SqlCommand(Sql, conn)
                conn.Open()
    
                Dim DR As SqlDataReader
                DR = cmd.ExecuteReader
    
                DR.Read()
    
                If IsDBNull(DR("Totale")) Then
                    Label9.Text = "0,00 €"
                Else
                    Label9.Text = String.Format("{0:c2}", DR("Totale")).ToString
                End If
                cmd.Dispose()
                conn.Close()
    
                If Label9.Text < 0 Then
                    Label9.ForeColor = Color.Red
                Else
                    Label9.ForeColor = Color.Green
                End If
    
            Catch ex As Exception
    
            End Try
    
    come mai?

  4. #4
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,396
    Blogs
    5
    Like Inviati  
    5
    Like Ricevuti  
    32
    mi fa la differenza solo se immetto entrambe le operazioni
    Se intendi che uno dei due totali (o tutti e due) potrebbero essere NULL, ovviamente non puoi eseguire la differenza.
    Quindi devi calcolare i due totali e farli restituire ... cambiando nella SELECT

    SELECT SUM(entrate) As TotaleE, SUM(uscite) As TotaleU ...

    Poi nel codice dovrai gestire le possibilità di avere uno (o tutti e due) i totali NULL quindi il codice cambierebbe

    DR.Read()
    
    Dim TotE As Decimal = IIf(IsDBNull(DR("TotaleE")), 0, DR("TotaleE"))
    Dim TotU As Decimal = IIf(IsDBNull(DR("TotaleU")), 0, DR("TotaleU"))
    
    Label9.Text = String.Format("{0:c2}", TotE - TotU).ToString()
    Label9.ForeColor = IIf(TotE-TotU<0, Color.Red, Color.Green)
    
    Ultima modifica di AntonioG; 06-12-2020 09:29 
    ℹ️ Leggi di più su AntonioG ...

  5. #5
    L'avatar di freddy60
    freddy60 non è in linea Scolaretto
    Post
    227
    Like Inviati  
    0
    Like Ricevuti  
    0
    Perfetto grazie come sempre

  6. #6
    L'avatar di freddy60
    freddy60 non è in linea Scolaretto
    Post
    227
    Like Inviati  
    0
    Like Ricevuti  
    0
    Siccome io ho da getire tre conti conto 1,2,3 il codice che mi hai postato sul conto 1 funziona alla perfezione, ma adattandolo agli altri due conti, il conto 2 ed il conto 3, le entrate e le uscite mi visualizzano ancora le entrate e le uscite di tutte l'anno, mentre il saldo resta zero.

    Ti mostro il codice come lo adattato:

     Try
                Dim cmd As SqlCommand
                Dim conn As New SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\My Project\BudgetFamiliare.mdf;Integrated Security=True")
                Dim Sql As String = “SELECT SUM(entrate) As TotaleE, SUM(uscite) As TotaleU FROM contabilita WHERE idconto=1 AND MONTH(data) = MONTH(GETDATE()) AND YEAR(data) = YEAR(GETDATE())"
    
                cmd = New SqlCommand(Sql, conn)
                conn.Open()
    
                Dim DR As SqlDataReader
                DR = cmd.ExecuteReader
    
                DR.Read()
    
                Dim TotE As Decimal = IIf(IsDBNull(DR("TotaleE")), 0, DR("TotaleE"))
                Dim TotU As Decimal = IIf(IsDBNull(DR("TotaleU")), 0, DR("TotaleU"))
    
                Label9.Text = String.Format("{0:c2}", TotE - TotU).ToString()
                Label9.ForeColor = IIf(TotE - TotU < 0, Color.Red, Color.Green)
    
                cmd.Dispose()
                conn.Close()
    
            Catch ex As Exception
    
            End Try
    
            Try
                Dim cmd As SqlCommand
                Dim conn As New SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\My Project\BudgetFamiliare.mdf;Integrated Security=True")
                Dim Sql As String = “SELECT SUM(entrate) As TotaleE, SUM(uscite) As TotaleU FROM contabilita WHERE idconto=2 AND MONTH(data) = MONTH(GETDATE()) AND YEAR(data) = YEAR(GETDATE())"
    
                cmd = New SqlCommand(Sql, conn)
                conn.Open()
    
                Dim DR As SqlDataReader
                DR = cmd.ExecuteReader
    
                DR.Read()
    
                Dim TotE As Decimal = IIf(IsDBNull(DR("TotaleE")), 0, DR("TotaleE"))
                Dim TotU As Decimal = IIf(IsDBNull(DR("TotaleU")), 0, DR("TotaleU"))
    
                Label13.Text = String.Format("{0:c2}", TotE - TotU).ToString()
                Label13.ForeColor = IIf(TotE - TotU < 0, Color.Red, Color.Green)
    
                cmd.Dispose()
                conn.Close()
    
            Catch ex As Exception
    
            End Try
    
            Try
                Dim cmd As SqlCommand
                Dim conn As New SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\My Project\BudgetFamiliare.mdf;Integrated Security=True")
                Dim Sql As String = “SELECT SUM(entrate) As TotaleE, SUM(uscite) As TotaleU FROM contabilita WHERE idconto=3 AND MONTH(data) = MONTH(GETDATE()) AND YEAR(data) = YEAR(GETDATE())"
    
                cmd = New SqlCommand(Sql, conn)
                conn.Open()
    
                Dim DR As SqlDataReader
                DR = cmd.ExecuteReader
    
                DR.Read()
    
                Dim TotE As Decimal = IIf(IsDBNull(DR("TotaleE")), 0, DR("TotaleE"))
                Dim TotU As Decimal = IIf(IsDBNull(DR("TotaleU")), 0, DR("TotaleU"))
    
                Label14.Text = String.Format("{0:c2}", TotE - TotU).ToString()
                Label14.ForeColor = IIf(TotE - TotU < 0, Color.Red, Color.Green)
    
                cmd.Dispose()
                conn.Close()
    
            Catch ex As Exception
    
            End Try
    
    forse cone ho fatto io non va bene, come posso risolvere?

  7. #7
    L'avatar di gibra
    gibra non è in linea Very Important Person
    Post
    6,206
    Like Inviati  
    18
    Like Ricevuti  
    10
    Devi mettere le 3 condizioni tra parentesi tonde, in modo che vengano interpretate come una SINGOLA condizione.
    WHERE (idconto=3 AND MONTH(data) = MONTH(GETDATE()))
    
    ℹ️ Leggi di più su gibra ...

  8. #8
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,396
    Blogs
    5
    Like Inviati  
    5
    Like Ricevuti  
    32
    Quote Originariamente inviato da freddy60 Visualizza il messaggio
    come posso risolvere?
    Non è che per i conti 2 e 3 hai soltanto i dati per il mese in corso?
    ℹ️ Leggi di più su AntonioG ...

  9. #9
    L'avatar di freddy60
    freddy60 non è in linea Scolaretto
    Post
    227
    Like Inviati  
    0
    Like Ricevuti  
    0
    ho fatto come mi hai suggerito ma non funziona su conto 2

    questo è il codice che mi hai consigliato:

      Try
                Dim cmd As SqlCommand
                Dim conn As New SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\My Project\BudgetFamiliare.mdf;Integrated Security=True")
                Dim Sql As String = “SELECT SUM(entrate) As TotaleE, SUM(uscite) As TotaleU FROM contabilita WHERE idconto=1 AND MONTH(data) = MONTH(GETDATE()) AND YEAR(data) = YEAR(GETDATE())"
    
                cmd = New SqlCommand(Sql, conn)
                conn.Open()
    
                Dim DR As SqlDataReader
                DR = cmd.ExecuteReader
    
                DR.Read()
    
                Dim TotE As Decimal = IIf(IsDBNull(DR("TotaleE")), 0, DR("TotaleE"))
                Dim TotU As Decimal = IIf(IsDBNull(DR("TotaleU")), 0, DR("TotaleU"))
    
                Label9.Text = String.Format("{0:c2}", TotE - TotU).ToString()
                Label9.ForeColor = IIf(TotE - TotU < 0, Color.Red, Color.Green)
    
                cmd.Dispose()
                conn.Close()
    
            Catch ex As Exception
    
            End Try
    
            Try
                Dim cmd As SqlCommand
                Dim conn As New SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\My Project\BudgetFamiliare.mdf;Integrated Security=True")
                Dim Sql As String = “SELECT SUM(entrate) As TotaleE, SUM(uscite) As TotaleU FROM contabilita WHERE (idconto=2 AND MONTH(data) = MONTH(GETDATE())) AND YEAR(data) = YEAR(GETDATE())"
    
                cmd = New SqlCommand(Sql, conn)
                conn.Open()
    
                Dim DR As SqlDataReader
                DR = cmd.ExecuteReader
    
                DR.Read()
    
                Dim TotE As Decimal = IIf(IsDBNull(DR("TotaleE")), 0, DR("TotaleE"))
                Dim TotU As Decimal = IIf(IsDBNull(DR("TotaleU")), 0, DR("TotaleU"))
    
                Label13.Text = String.Format("{0:c2}", TotE - TotU).ToString()
                Label13.ForeColor = IIf(TotE - TotU < 0, Color.Red, Color.Green)
    
                cmd.Dispose()
                conn.Close()
    
            Catch ex As Exception
    
            End Try
    
    manca qualcos'altro forse?

  10. #10
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,396
    Blogs
    5
    Like Inviati  
    5
    Like Ricevuti  
    32
    Puoi rispondere a quello che ti ho chiesto?
    ℹ️ Leggi di più su AntonioG ...

+ Rispondi al messaggio
Pagina 1 di 3 123 ultimoultimo

Potrebbero interessarti anche ...

  1. Funzione cerca.vert restituisce valori errati
    Da shadi nel forum Microsoft Excel
    Risposte: 2
    Ultimo Post: 07-03-2016, 11:07
  2. Casella combinata, valori totali?
    Da lolliman nel forum Microsoft Access
    Risposte: 9
    Ultimo Post: 25-01-2016, 18:45
  3. Risposte: 0
    Ultimo Post: 13-06-2012, 01:11
  4. [Access] Colori Report errati nella stampa
    Da wonderland nel forum Microsoft Access
    Risposte: 3
    Ultimo Post: 19-06-2007, 14:56
  5. Riferimenti ultimo messaggio forse errati
    Da Cteniza nel forum Comunicazioni
    Risposte: 2
    Ultimo Post: 18-09-2005, 01:31