32 messaggi dal 13 agosto 2017
andrea.tosato86 ha scritto:
Che versione di sqlserver utilizzi?

Il codice SQL che ho inserito nell'ultimo post ti funziona su SQL? Corrisponde a quanto mi stavi chiedendo?
Modificato da andrea.tosato86 il 14 agosto 2017 19.25 -


Uso sql 2014....il tuo codice l'ho adattato al mio caso ma non funziona...mi da 29...non so da dove sbuca fuori questo risultato..
244 messaggi dal 22 gennaio 2017
Contributi
Potresti riportare i dati presenti sul db che ti restituisco 29?
Grazie
32 messaggi dal 13 agosto 2017
andrea.tosato86 ha scritto:
Potresti riportare i dati presenti sul db che ti restituisco 29?
Grazie


01/02/2017 - 13/02/2017
01/04/2017 - 13/04/2017
32 messaggi dal 13 agosto 2017
Ho capito il problema...è questo che dà noia!!
"cmd2.Parameters.AddWithValue("@Codfisc", Me.GridView1.SelectedRow.Cells(8).Text)"
Ho sostituito con:
"cmd2.Parameters.AddWithValue("@Codfisc", Me.GridView1.Rows(0).Cells(8).Text)"
e adesso è 100% funzionante!!!
Quindi il codice completo è questo:

 Dim a As Date = Date.Parse(TextBox2.Text)
        Dim b As Date = Date.Parse(TextBox3.Text)
        Dim source2 As String = WebConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString
        Dim sql2 As String = "SELECT Codfisc, SUM(DATEDIFF(day, IIF(Dal > @Dal, Dal, @Dal), IIF(Al < @Al, Al, @Al)) + 1) Total FROM Tab1 WHERE Dal BETWEEN @Dal AND @Al OR Al BETWEEN @Dal AND @Al GROUP BY Codfisc"
        Dim conn2 As New SqlConnection(source2)
        conn2.Open()
        Dim cmd2 As New SqlCommand(sql2, conn2)
        cmd2.Parameters.AddWithValue("@Codfisc", Me.GridView1.Rows(0).Cells(8).Text)
        cmd2.Parameters.AddWithValue("@Dal", a)
        cmd2.Parameters.AddWithValue("@Al", b)
        Dim dr2 As SqlDataReader
        dr2 = cmd2.ExecuteReader()
        While dr2.Read()

            TextBox4.Text = dr2("Total").ToString()

            If IsDBNull(dr2("Total")) Then
                TextBox4.Text = "0"
            End If


        End While

        conn2.Close()

Modificato da MarkRoss il 14 agosto 2017 19.53 -

Grazie Andrea mi hai risolto il problema!!!
Alla prossima un saluto.
Modificato da MarkRoss il 14 agosto 2017 19.54 -
32 messaggi dal 13 agosto 2017
andrea.tosato86 ha scritto:
Ottimo!
Buon lavoro


C'è un altro problema!! Non mi fa la distinzione del codice fiscale...cioè mi somma tutti i codici fiscali...Mi spiego:

Id Codfisc Dal Al
1 xxxxx 01/02/2017 - 13/02/2017
2 xxxxx 01/04/2017 - 13/04/2017
3 yyyyy 06/06/2017 - 10/06/2017

Effettu questa ricerca:

Codice fiscale=xxxxx
Dal 01/02/2017
Al 10/06/2017

Dovrebbe restituirmi 26 (perchè il codice fiscale xxxxx ha totalizzato 26 giorni) invece mi conteggia anche i giorni del codice fiscale yyyyy. Immagino che tutto questo è dato dal GROUP BY Codfisc...
Come risolvo?
Scusami e grazie ancora...
244 messaggi dal 22 gennaio 2017
Contributi
Con il group by dovresti ottenere 2 righe

AAA - 26
BBB - 13

Se vuoi estrarre solamente il codice fiscale di un dipendente devi mettere nella WHERE il filtro del codice fiscale.

Nel tuo esempio di codice, se ci sono 2 righe, valuti solamente la seconda, sbaglio?
32 messaggi dal 13 agosto 2017
andrea.tosato86 ha scritto:
Con il group by dovresti ottenere 2 righe

AAA - 26
BBB - 13

Se vuoi estrarre solamente il codice fiscale di un dipendente devi mettere nella WHERE il filtro del codice fiscale.

Nel tuo esempio di codice, se ci sono 2 righe, valuti solamente la seconda, sbaglio?


Questo è il codice e non va:


 Dim a As Date = Date.Parse(TextBox2.Text)
        Dim b As Date = Date.Parse(TextBox3.Text)
        Dim source2 As String = WebConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString
        Dim sql2 As String = "SELECT Codfisc, SUM(DATEDIFF(day, IIF(Dal > @Dal, Dal, @Dal), IIF(Al < @Al, Al, @Al)) + 1) Total FROM Tab1 WHERE (Codfisc=@Codfisc) and  (Dal BETWEEN @Dal AND @Al) OR (Al BETWEEN @Dal AND @Al) GROUP BY Codfisc"
        Dim conn2 As New SqlConnection(source2)
        conn2.Open()
        Dim cmd2 As New SqlCommand(sql2, conn2)
        cmd2.Parameters.AddWithValue("@Codfisc", Me.GridView1.Rows(0).Cells(8).Text)
        cmd2.Parameters.AddWithValue("@Dal", a)
        cmd2.Parameters.AddWithValue("@Al", b)
        Dim dr2 As SqlDataReader
        dr2 = cmd2.ExecuteReader()
        While dr2.Read()

            TextBox4.Text = dr2("Total").ToString()

            If IsDBNull(dr2("Total")) Then
                TextBox4.Text = "0"
            End If


        End While

        conn2.Close()

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.