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