+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [VB2017] DGV1_CellValueChanged

  1. #1
    L'avatar di glak
    glak non è in linea Scribacchino
    Post
    771

    [VB2017] DGV1_CellValueChanged

    salve intanto vi faccio gli auguri di un buon anno.....
    ho questo problema devo moltiplicare i valori residenti in un DGV nella cella 6 ma mi viene azzerato e non capisco il motivo mi potreste dare un consiglio…. questo e' il codice che utilizzo…

    codice HTML:
     Private Sub DGV1_CellValueChanged(sender As Object,
                                          e As DataGridViewCellEventArgs) Handles DGV1.CellValueChanged
    
            Dim somma, totale As Decimal
            Dim dgv As DataGridView = DirectCast(sender, DataGridView)
            Try
                For r As Integer = 1 To DGV1.RowCount - 1
                    If Not IsNothing(dgv(6, r).Value) Then
    
                        somma *= CType(dgv(6, r).Value, Decimal)
    
                    End If
                Next
                Label6.Text = somma.ToString("C")
    
                totale = (somma * 10) - 1
    
                TextBox3.Text = totale.ToString("C")
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub
    nella colonna 6 ci sono i seguenti valori [ 1,42 1.27 1,21 ] dovrei ottenere [2,182 ]
    ma ho 0

  2. #2
    Sgrubak non è in linea Scolaretto
    Luogo
    Torrazza Piemonte
    Post
    199
    Ciao glak e buon anno anche a te.
    Se usi l'operatore [*=] restituirà sempre zero. La variabile [somma] è dichiarata, ma non inizializzata. Parte da zero e con quell'operatore avrai sempre una moltiplicazione per zero, quindi zero come risultato.

  3. #3
    L'avatar di glak
    glak non è in linea Scribacchino
    Post
    771
    quinti cosa mi consigli di fare ?

  4. #4
    Sgrubak non è in linea Scolaretto
    Luogo
    Torrazza Piemonte
    Post
    199
    Quote Originariamente inviato da glak Visualizza il messaggio
    quinti cosa mi consigli di fare ?
    Inizializzi la variabile impostandola ad 1, così risulterà ininfluente sulla serie. Va da se che nel momento in cui uno dei vari Value è a 0, sarai punto e a capo.

  5. #5
    L'avatar di glak
    glak non è in linea Scribacchino
    Post
    771
    Grazie del tuo contributo ma ho risolto in un altro modo

  6. #6
    Sgrubak non è in linea Scolaretto
    Luogo
    Torrazza Piemonte
    Post
    199
    E come? Ormai son curioso...

  7. #7
    L'avatar di glak
    glak non è in linea Scribacchino
    Post
    771
    in questo modo :
    ho aggiunto una list per raggruppare gli items per poi indirizzarla alla funzione che mi calcola il tutto


    codice HTML:
    Private Sub DGV1_CellValueChanged(sender As Object,
                                          e As DataGridViewCellEventArgs) Handles DGV1.CellValueChanged
            Dim Fat As New List(Of Decimal)
            Dim totale As Decimal
            Dim dgv As DataGridView = DirectCast(sender, DataGridView)
            Try
                For r As Integer = 0 To DGV1.RowCount - 1
    
                    If Not IsNothing(dgv(6, r).Value) Then
    
                        Dim pDr As Decimal = dgv(6, r).Value.ToString.Replace(vbTab, "").Trim
                        Fat.Add(pDr)
    
    
                    End If
                Next
    
                totale = Calcolagiocata(Fat.ToArray, TxScommessa.Text)
                Label7.Text = Math.Round((totale * 10) - 1, 2).ToString("C")
    
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub
    
        Public Function Calcolagiocata(ByVal arrayOfDecimal() As Decimal,
                                       Optional ByVal G As String = "") As Decimal
    
            If arrayOfDecimal Is Nothing Then Return 0
            If arrayOfDecimal.Length = 0 Then Return 0
            Dim returnDecimal As Decimal = 1
            If arrayOfDecimal.Count >= 1 Then
                For index As Integer = 0 To arrayOfDecimal.GetUpperBound(0)
                    returnDecimal *= arrayOfDecimal(index)
                Next
            End If
            If G > 0 Then
                Return (returnDecimal * G) - 1
            Else
                Return returnDecimal
            End If
    
    
        End Function

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi