Totali anni mesi e giorni in Visual Studio 2005

domenica 23 marzo 2008 - 14.55

Mau67 Profilo | Expert

Salve a tutti e buona pasqua, ho un problemma e spero che qualcuno riesca a darmi la soluzione per risolverlo, vi posto il codice che sono inseriti in un DataGridView che uso per calcolare i totali e restituirli in diverse TextBox, vi allego un file con l'errore che mi genera quando vado in debug, ecco il codice

Private Sub CellValueChanged(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs) Handles ServiziDataGridView.CellValueChanged
UpdateTotals()
End Sub

Private Sub RowsRemoved(ByVal sender As Object, ByVal e As DataGridViewRowsRemovedEventArgs) Handles ServiziDataGridView.RowsRemoved
UpdateTotals()
End Sub

Private Sub UpdateTotals()

Dim counter As Integer

Dim A_NU, M_NU, G_NU As Integer
A_NU = 0
M_NU = 0
G_NU = 0

Dim A_CA, M_CA, G_CA As Integer
A_CA = 0
M_CA = 0
G_CA = 0

Dim A_SC, M_SC, G_SC As Integer
A_SC = 0
M_SC = 0
G_SC = 0

Dim A_TA, M_TA, G_TA As Integer
A_TA = 0
M_TA = 0
G_TA = 0

Dim A_PA, M_PA, G_PA As Integer
A_PA = 0
M_PA = 0
G_PA = 0

Dim A_MU, M_MU, G_MU As Integer
A_MU = 0
M_MU = 0
G_MU = 0

' Iterate through the rows, skipping the Starting Balance Row.
For counter = 1 To (Me.ServiziDataGridView.Rows.Count)

'TOTALI NU
If Not IsDBNull(Me.ServiziDataGridView.CurrentRow.Cells(3).Value) Then
A_NU = A_NU + Me.ServiziDataGridView.CurrentRow.Cells(3).Value
M_NU = M_NU + Me.ServiziDataGridView.CurrentRow.Cells(4).Value
G_NU = G_NU + Me.ServiziDataGridView.CurrentRow.Cells(5).Value
End If

'TOTALI CA
If Not IsDBNull(Me.ServiziDataGridView.CurrentRow.Cells(6).Value) Then
A_CA = A_CA + Me.ServiziDataGridView.CurrentRow.Cells(6).Value
M_CA = M_CA + Me.ServiziDataGridView.CurrentRow.Cells(7).Value
G_CA = G_CA + Me.ServiziDataGridView.CurrentRow.Cells(8).Value
End If

'TOTALI SC
If Not IsDBNull(Me.ServiziDataGridView.CurrentRow.Cells(9).Value) Then
A_SC = A_SC + Me.ServiziDataGridView.CurrentRow.Cells(9).Value
M_SC = M_SC + Me.ServiziDataGridView.CurrentRow.Cells(10).Value
G_SC = G_SC + Me.ServiziDataGridView.CurrentRow.Cells(11).Value
End If

'TOTALI TA
If Not IsDBNull(Me.ServiziDataGridView.CurrentRow.Cells(12).Value) Then
A_TA = A_TA + Me.ServiziDataGridView.CurrentRow.Cells(12).Value
M_TA = M_TA + Me.ServiziDataGridView.CurrentRow.Cells(13).Value
G_TA = G_TA + Me.ServiziDataGridView.CurrentRow.Cells(14).Value
End If

'TOTALI PA
If Not IsDBNull(Me.ServiziDataGridView.CurrentRow.Cells(15).Value) Then
A_PA = A_PA + Me.ServiziDataGridView.CurrentRow.Cells(15).Value
M_PA = M_PA + Me.ServiziDataGridView.CurrentRow.Cells(16).Value
G_PA = G_PA + Me.ServiziDataGridView.CurrentRow.Cells(17).Value
End If

'TOTALI MU
If Not IsDBNull(Me.ServiziDataGridView.CurrentRow.Cells(18).Value) Then
A_MU = A_MU + Me.ServiziDataGridView.CurrentRow.Cells(18).Value
M_MU = M_MU + Me.ServiziDataGridView.CurrentRow.Cells(19).Value
G_MU = G_MU + Me.ServiziDataGridView.CurrentRow.Cells(20).Value
End If
Next

'Devo ricalcolare il numero di anni, mesi e giorni...
Dim dataZero As Date
Dim dataFinale As Date
dataZero = "00/00/0000"

dataFinale = DateAdd(DateInterval.Year, A_NU, dataZero)
dataFinale = DateAdd(DateInterval.Month, M_NU, dataFinale)
dataFinale = DateAdd(DateInterval.Day, G_NU, dataFinale)

Me.AnnoNuTextBox.Text = Year(dataFinale)
Me.MeseNuTextBox.Text = Month(dataFinale)
Me.GiornoNuTextBox.Text = Microsoft.VisualBasic.DateAndTime.Day(dataFinale)

dataFinale = dataZero

dataFinale = DateAdd(DateInterval.Year, A_CA, dataZero)
dataFinale = DateAdd(DateInterval.Month, M_CA, dataFinale)
dataFinale = DateAdd(DateInterval.Day, G_CA, dataFinale)

Me.AnnoCaTextBox.Text = Year(dataFinale)
Me.MeseCaTextBox.Text = Month(dataFinale)
Me.GiornoCaTextBox.Text = Microsoft.VisualBasic.DateAndTime.Day(dataFinale)

dataFinale = dataZero

dataFinale = DateAdd(DateInterval.Year, A_SC, dataZero)
dataFinale = DateAdd(DateInterval.Month, M_SC, dataFinale)
dataFinale = DateAdd(DateInterval.Day, G_SC, dataFinale)

Me.AnnoScTextBox.Text = Year(dataFinale)
Me.MeseScTextBox.Text = Month(dataFinale)
Me.GiornoScTextBox.Text = Microsoft.VisualBasic.DateAndTime.Day(dataFinale)

dataFinale = dataZero

dataFinale = DateAdd(DateInterval.Year, A_TA, dataZero)
dataFinale = DateAdd(DateInterval.Month, M_TA, dataFinale)
dataFinale = DateAdd(DateInterval.Day, G_TA, dataFinale)

Me.AnnoAlTextBox.Text = Year(dataFinale)
Me.MeseAlTextBox.Text = Month(dataFinale)
Me.GiornoAlTextBox.Text = Microsoft.VisualBasic.DateAndTime.Day(dataFinale)

dataFinale = dataZero

dataFinale = DateAdd(DateInterval.Year, A_PA, dataZero)
dataFinale = DateAdd(DateInterval.Month, M_PA, dataFinale)
dataFinale = DateAdd(DateInterval.Day, G_PA, dataFinale)

Me.AnnoPaTextBox.Text = Year(dataFinale)
Me.MesePaTextBox.Text = Month(dataFinale)
Me.GiornoPaTextBox.Text = Microsoft.VisualBasic.DateAndTime.Day(dataFinale)

dataFinale = dataZero

dataFinale = DateAdd(DateInterval.Year, A_MU, dataZero)
dataFinale = DateAdd(DateInterval.Month, M_MU, dataFinale)
dataFinale = DateAdd(DateInterval.Day, G_MU, dataFinale)

Me.AnnoMuTextBox.Text = Year(dataFinale)
Me.MeseMuTextBox.Text = Month(dataFinale)
Me.GiornoMuTextBox.Text = Microsoft.VisualBasic.DateAndTime.Day(dataFinale)

End Sub

Spero che mi possiate aiutare grazie in anticipo
Mau67

berto82 Profilo | Newbie

Beh l'errore è molto chiaro, hai dichiarato una variabile come Date e tu l'hai settata come stringa, e cmq non può esistere una data 00/00/0000 al massimo puoi fare

DateZero = date.minvalue ( Il valore di questa costante è equivalente alle ore 00.00.00,0000000 del 1° gennaio del 0001. )

oppure puoi settare il valore tra 2 cancelletti ##

DateZero = #01/01/2008#


Mau67 Profilo | Expert

Grazie per la risposta Funziona il debug adesso solo che ho un altro problema adesso, praticamente non mi restituisce i risultati sperati e cioè non mi fà la somma esatta dei periodi in anni mesi e giorni nelle textbox.

Guarda l'allegato spero di essere chiaro. ciao e grazie
Mau67

berto82 Profilo | Newbie

Guardati sto esempio l'ho fatto adesso

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Sviluppatore Visual Basic 2005
Sviluppatore Visual Basic 2005 Windows Mobile
Blog: http://blogs.dotnethell.it/berto82/

Mau67 Profilo | Expert

Hai visto il file allegato? Quello che mi aspetto dal programma è questo:

La somma dei giorni per ogni categoria nel DataGridView chiaramente se e uguale o superiore a 30 il residuo lo deve sommare alla somma dei mesi e se i mesi sono uguali o superiori a 12 li deve sommare alla somma degli anni e questi risultati devono essere inseriti nelle textbox.

Spero di essere stato chiaro Ciao e grazie

Mau67

berto82 Profilo | Newbie

Si l'ho visto l'allegato....ma non capisco l'esempio che ti ho dato calcola i giorni i mesi e gli anni tra 2 date in confronto...non è quello che vuoi te??
Sviluppatore Visual Basic 2005
Sviluppatore Visual Basic 2005 Windows Mobile
Blog: http://blogs.dotnethell.it/berto82/

Mau67 Profilo | Expert

No quello che voglio sono dei totali per farti capire ti allego un esempio fatto in access che non riesco a tradurre in visual studio 2005.



Ciao e grazie
Mau67

berto82 Profilo | Newbie

Ho capito...dopo aver scritto il post....adesso appena ho un attimo faccio una prova...
Sviluppatore Visual Basic 2005
Sviluppatore Visual Basic 2005 Windows Mobile
Blog: http://blogs.dotnethell.it/berto82/

Mau67 Profilo | Expert

Grazie dell'interessamento sai è da 6 mesi che provo senza risultati spero che ci riesci.

Ah i dati sono inseriti in un DataGridView come nel file in word che ti ho allegato precedentemente se puoi scrivere il codice usando il datagridview te ne sarei grato
Grazie in anticipo ciao
Mau67

Mau67 Profilo | Expert

Scusa se ti metto fretta ma hai provato qualcosa per la soluzione che mi serve per il mio programma.

grazie e scusa
Mau67
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