Sttrazione anni mesi e giorni in base a percentuale

venerdì 17 febbraio 2017 - 15.56
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Visual Studio 2010

Mau67 Profilo | Expert

Un saluto al forum,
dovrei sottrarre da una listview dove carico i totali in anni mesi e giorni in base alla percentuale dalla più grande alla più piccola.
Faccio un esempio:

nella listview1 carico i totali delle mansioni di ogni lavoratore raggruppati per percentuale:

Mansione: SALDATORE Percentuale Mansione: 0,75% Periodo Lavorato ANNI 5 MESI 3 GIORNI 5
Mansione: MULETTISTA Percentuale Mansione: 1,75% Periodo Lavorato ANNI 5 MESI 4 GIORNI 15
Mansione: CONDUCENTE VEICOLI STRADALI Percentuale Mansione: 2,25% Periodo Lavorato ANNI 3 MESI 0 GIORNI 0
Mansione: COLLAUDATORE DI MEZZI Percentuale Mansione: 4,25% Periodo Lavorato ANNI 0 MESI 6 GIORNI 8

il totale di tutti i periodi è di ANNI 14 MESI 1 GIORNI 28

considerato che l'azienda paga a cadenza annuale per un massimo di anni 20 e solo gli anni interi dovrei detrarre MESi 1 GIORNI 28 dal periodo con la percentuale
minore mantenendo inalterati i periodi con percentuale superiore.

e visualizzare i periodi cosi ricalcolati nella listview2
Mansione: SALDATORE Percentuale Mansione: 0,75% Periodo Lavorato ANNI 5 MESI 1 GIORNI 7
Mansione: MULETTISTA Percentuale Mansione: 1,75% Periodo Lavorato ANNI 5 MESI 4 GIORNI 15
Mansione: CONDUCENTE VEICOLI STRADALI Percentuale Mansione: 2,25% Periodo Lavorato ANNI 3 MESI 0 GIORNI 0
Mansione: COLLAUDATORE DI MEZZI Percentuale Mansione: 4,25% Periodo Lavorato ANNI 0 MESI 6 GIORNI 8

per un totale di anni 14 mesi 0 giorni 0

Chiedo un aiuto grazie

Ho fatto cosi:

For i As Integer = 0 To Me.ListView2.Items.Count - 1 Dim anni As Integer = ListView2.Items(i).SubItems(2).Text Dim mesi As Integer = ListView2.Items(i).SubItems(3).Text Dim giorni As Integer = ListView2.Items(i).SubItems(4).Text Dim GiorniTotali As Integer = (CInt(anni) * 365) + (CInt(mesi) * 30) + CInt(giorni) Dim Max As Integer Select Case ((Math.Truncate(Fix(GiorniTotali) / 365)) * 365) Case Is > 7295 Max = 7295 Case Is < 7295 Max = ((Math.Truncate(Fix(GiorniTotali) / 365)) * 365) End Select Dim Maxvalore As Integer = Max Dim totale As Integer = GiorniTotali Dim Differenza As Integer = totale - Maxvalore If totale > Maxvalore Then If GiorniTotali > Differenza Then GiorniTotali = GiorniTotali - Differenza Differenza = 0 Else Differenza = Differenza - GiorniTotali GiorniTotali = 0 End If End If 'Trasformo anni mesi e giorni Dim wY As Integer = Math.Truncate(GiorniTotali / 365) Dim wM As Integer = Math.Truncate((GiorniTotali - (wY * 365)) / 30) Dim wD As Integer = (GiorniTotali - ((wY * 365) + (wM * 30))) ListView3.Items.Add(ListView2.Items(i).SubItems(0).Text) ListView3.Items(i).SubItems.Add(ListView2.Items(i).SubItems(1).Text) ListView3.Items(i).SubItems.Add(wY) ListView3.Items(i).SubItems.Add(wM) ListView3.Items(i).SubItems.Add(wD) Next ListView3.Columns.Add("MANSIONE", 250, HorizontalAlignment.Left) ListView3.Columns.Add("MAGG. %", 70, HorizontalAlignment.Center) ListView3.Columns.Add("ANNI", 70, HorizontalAlignment.Center) ListView3.Columns.Add("MESI", 70, HorizontalAlignment.Center) ListView3.Columns.Add("GIORNI", 70, HorizontalAlignment.Center)

il problema è che non fa i calcoli che deve fare in base alla percentuale.
altra cosa nel ciclo devo omettere la prima riga della listview2
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