102 messaggi dal 04 settembre 2010
Buona sera,
volevo chiedere un aiuto per un mio progetto, praticamente vorrei automatizzare il calcolo degli interessi legali tramite un dataset che è già popolato dei dati che mi servono, non ci riesco ad ottenere il risultato sperato.
L'unico modo che sono riuscito a scrivere è quello con la pressione dei button presenti in un gridview quidi riga per riga allora ottengo il calcolo.

vi posto il codice che uso e se qualcuno mi dà una mano a modificarlo

Questa è la funzione da dove estrapolo i vari cambi di data:
 Function GetTableTrascinamenti(ByVal e As CommandEventArgs) As DataTable
        Dim Index As Integer = Int32.Parse(e.CommandArgument.ToString)
        Dim row As GridViewRow = GridView2.Rows(Index)
        Dim tableTrascinamenti As New DataTable
        tableTrascinamenti.Columns.Add("DateI", GetType(Date))
        tableTrascinamenti.Rows.Add(Server.HtmlDecode(row.Cells(0).Text))
        'Dim queryString_dati As String = "Select Periodo As Periodi" & _
        '                    " From scadenze_pensione Where scadenze_pensione.Periodo Between '" & ConvertData.GetDataForMySql(dtpDataInizio.Text) & "' And '" & ConvertData.GetDataForMySql(dtpDataFine.Text) & "' Order By scadenze_pensione.Periodo"
        Connection.Open()
        Dim queryString_dati As String = "Select Periodo As Periodi" & _
                            " From scadenze_pensione Where scadenze_pensione.Periodo Between '" & ConvertData.GetDataForMySql(Server.HtmlDecode(row.Cells(0).Text)) & "' And '" & ConvertData.GetDataForMySql(Server.HtmlDecode(row.Cells(1).Text)) & "' Order By scadenze_pensione.Periodo"
        Dim command_dati As New MySqlCommand(queryString_dati, Connection)
        Dim reader_dati As MySqlDataReader = command_dati.ExecuteReader()
        If reader_dati.HasRows Then
            While reader_dati.Read()
                ' Create new DataTable instance.
                tableTrascinamenti.Rows.Add(reader_dati.GetValue(0).ToString)
            End While
            reader_dati.Close()
            command_dati.Dispose()
        End If
       Connection.Close()
        Return tableTrascinamenti
    End Function


Qui genero i periodi
 Protected Sub btnSelezionaOperativa_Command(ByVal sender As Object, ByVal e As CommandEventArgs)
        Dim Index As Integer = Int32.Parse(e.CommandArgument.ToString)
        Dim rowT As GridViewRow = GridView2.Rows(Index)
        Dim dtsPensione As New dtsPensione
        'GetTableTrascinamenti(e).Rows.Clear()
        Dim tableTrascinamenti As DataTable = GetTableTrascinamenti(e)
        Dim lc As Integer = GetTableTrascinamenti(e).Rows.Count - 1
        ' qui crei e imposti il tuo InsertCommand (connection, commandText, Parameters) 
        For i As Integer = 0 To lc
            Dim r As Record, li As DataRow = GetTableTrascinamenti(e).Rows(i)
            If i = 0 Then
                r.DataIni = DateTime.Parse(Server.HtmlDecode(rowT.Cells(0).Text))
            Else
                r.DataIni = DateTime.Parse(GetTableTrascinamenti(e).Rows(i)("DateI"))
            End If
            If i < lc Then
                r.DataFin = DateTime.Parse(GetTableTrascinamenti(e).Rows(i + 1)("DateI")).Date.AddDays(-1)
            Else
                r.DataFin = Server.HtmlDecode(rowT.Cells(1).Text)
            End If
            ClassCalcolaAnni.Anni(Data:=r.DataIni, Data1:=r.DataFin, Rid:=rowT.Cells(5).Text)
           Dim Row As dtsPensione.TrascinamentoRow
            Row = dtsPensione.Trascinamento.NewRow
            'Row.Reparto = dtgServiziTemp.CurrentCell.Item(2).ToString()
            Row.Inizio = r.DataIni.ToString("dd/MM/yyyy")
            Row.Fine = r.DataFin.ToString("dd/MM/yyyy")
            Row.AnniI = ClassCalcolaAnni.AnnoT()
            Row.MesiI = ClassCalcolaAnni.MeseT()
            Row.GiorniI = ClassCalcolaAnni.GiornoT()
            Row.Frazione = rowT.Cells(5).Text
            Row.AnniR = ClassCalcolaAnni.AT()
            Row.MesiR = ClassCalcolaAnni.MT()
            Row.GiorniR = ClassCalcolaAnni.GT()
            dtsPensione.Trascinamento.Rows.Add(Row)
        Next
       Connection.Open()
        Dim trans As MySqlTransaction
        trans = Connection.BeginTransaction()
        Dim rr As Record, lii As DataRow
        Try

            For Each Row As DataRow In dtsPensione.Tables("Trascinamento").Rows
                Dim par As MySqlParameter = New MySqlParameter()
                Dim cmdT As MySqlCommand = New MySqlCommand()
                'Inizia la transazione
                cmdT.Transaction = trans
                cmdT.Connection = Connection
                cmdT.CommandType = CommandType.StoredProcedure
                cmdT.CommandText = "pensione_trascinamentiAddUpdate"
                'cmdT.Parameters.AddWithValue("@_ID_Pensione", modParametri.ID_Pensione)
                cmdT.Parameters.AddWithValue("@_Reparto", Row("Reparto").ToString)
                cmdT.Parameters.AddWithValue("@_Inizio", ConvertData.GetDataForMySql(Row("Inizio").ToString))
                cmdT.Parameters.AddWithValue("@_Fine", ConvertData.GetDataForMySql(Row("Fine").ToString))
                cmdT.Parameters.AddWithValue("@_AnniI", CInt(Row("AnniI").ToString))
                cmdT.Parameters.AddWithValue("@_MesiI", CInt(Row("MesiI").ToString))
                cmdT.Parameters.AddWithValue("@_GiorniI", CInt(Row("GiorniI").ToString))
                cmdT.Parameters.AddWithValue("@_Frazione", Row("Frazione").ToString)
                cmdT.Parameters.AddWithValue("@_AnniR", CInt(Row("AnniR").ToString))
                cmdT.Parameters.AddWithValue("@_MesiR", CInt(Row("MesiR").ToString))
                cmdT.Parameters.AddWithValue("@_GiorniR", CInt(Row("GiorniR").ToString))
                cmdT.Parameters.AddWithValue("@_Operativa", IDOperativa)
                cmdT.ExecuteNonQuery()
            Next
            'eseguo la transazione
            trans.Commit()
            'MessageBox.Show("Aggiornamento Eseguito Correttamente", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
        Catch ex As MySqlException
            'se si sono verificati errori faccio il rollback
            trans.Rollback()
            'System.Windows.MessageBox.Show("Aggiornamento fallito" + ControlChars.CrLf + ex.ToString, "", MessageBoxButtons.OK, MessageBoxIcon.Warning)
        Finally
            'chiudiamo sempre le connessioni!
        End Try
        Connection.Close()
    End Sub
La domanda non è chiara. Servirebbe anche la UI e la chiamata alle funzioni.

Tutto quello che fai su un click lo puoi fare anche onload se non ci sono altri dati.

Ad es. se hai una GridView con il Datatable proveniente da GetTableTrascinamenti come datasource, puoi:
1. ciclare sulle righe del DataTable e fare le tue operazioni
oppure
2. far tutto su una List<TuaClasse> e poi fare il databinding.

Ormai programmano tutti... ma la professionalità appartiene a pochi

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.