Contare quante basi - doppie e triple in una DGV1 con checkbox.

di il
13 risposte

Contare quante basi - doppie e triple in una DGV1 con checkbox.

Buonasera a tutti. Con vb.net 2019 ho creato una DGV1 con 6 colonne e 14 righe e una DGV2 dove mi visualizza i segni che ho messo.
Nella colonna 3, 4 e 5 di DGV1 ci sono delle checkbox.
Se nella colonna 3 prima riga o più righe spunto solo il segno1 mi deve contare quante base ho messo.
Se nella colonna 3 e 4 prima riga o più righe spunto segno 1 e segno X mi deve contare quante doppie ho messo.
Se nella colonna 3, 4 e 5 prima riga o più righe spunto segno 1, segno X e segno 2 mi deve contare quante triple ho messo.
Questi risultati me li deve mettere in una Listbox: Pronostico 8 Basi - 4 Doppie - 2 triple

Non ho idea come fare, sono autodidatta, imparo facendo pratica e vedere guide su youtube.

Questo è il codice che ho creato:
DataGridView2.Rows.Clear()

        Dim segno1 = "1"
        Dim segnox = "X"
        Dim segno2 = "2"
        Dim x As Integer

        For i = 0 To 14 - 1
            x = 0                                                   'contatore per definire in quale colonna scrivere
            DataGridView2.Rows.Add()                                'aggiungo una nuova riga
            If DataGridView1.Rows(i).Cells(3).Value = True Then
                DataGridView2(x, i).Value = segno1
                x += x + 1
            End If

            If DataGridView1.Rows(i).Cells(4).Value = True Then
                DataGridView2(x, i).Value = segnox
                x += x + 1
            End If

            If DataGridView1.Rows(i).Cells(5).Value = True Then
                DataGridView2(x, i).Value = segno2
            End If
        Next
Le 14 righe della DGV1 e le 14 righe della DGV2 le ho create con il For Next

Un grazie a chi mi aiuterà,

13 Risposte

  • Re: Contare quante basi - doppie e triple in una DGV1 con checkbox.

    Non ho capito esattamente cosa vuoi fare ma una cosa è certa... se continui a programmare così non arrivi da nessuna parte perché ti fermerai al prossimo problema per te insormontabile senza il forum.

    Per caso il tuo quesito ha a che fare con questo?

    https://www.forumexcel.it/forum/threads/datagridview-pronostico.41467/
  • Re: Contare quante basi - doppie e triple in una DGV1 con checkbox.

    Io non ho ancora capito se
    1) non sa spiegare
    2) non sa nemmeno lui cosa vuole ottenere.
    3) si appaga già scrivendo sul forum, poi non risponde più alle domande.
  • Re: Contare quante basi - doppie e triple in una DGV1 con checkbox.

    Vorrei fare un software come questo:

    Mi piacciono le cose complesse.

    Per caso il tuo quesito ha a che fare con questo?

    Si sono io. Come è piccolo il MONDO......

    Non riesco ad allegare il progetto che ho fatto.....

    Allego una foto:
    Allegati:
    29734_5d0b1b4ab1f6154654a3743d141a206d.jpg
    29734_5d0b1b4ab1f6154654a3743d141a206d.jpg
  • Re: Contare quante basi - doppie e triple in una DGV1 con checkbox.

    Il mondo è più piccolo di quel che pensi.

    Voler fare un certo programma e saperlo fare sono cose enormemente differenti.

    Anche a me piacciono le cose complesse e anch'io vorrei costruire un'auto come una Ferrari ma non mi metto a guardare un video su youtube credendo di poterlo fare. Servono anni di studio per poter affrontare certi lavori e portarli a termine in maniera SODDISFACENTE da soli.
  • Re: Contare quante basi - doppie e triple in una DGV1 con checkbox.

    Riprovo a fare domande, sarò più fortunato su questo forum ?
    1) come intendi popolare la dgv1 ? vedo 2 pulsanti:Apri e Salva, sono funzionanti ?
    2) a cosa ti serve mettere i risultati in una Listbox (Pronostico 8 Basi - 4 Doppie - 2 triple) ?
    3) nel tuo codice vedo una riga strana x += x + 1, l'hai imparato su youtube ?
    se non riesci ad allegare il progetto puoi caricarlo su dropbox o simili e postare un link
  • Re: Contare quante basi - doppie e triple in una DGV1 con checkbox.

    1) come intendi popolare la dgv1 ? vedo 2 pulsanti:Apri e Salva, sono funzionanti ?

    La DGV1 è completata, non devo fare più niente. Per inserire la Squadra in casa e la squadra in trasferta, con il mouse devi cliccare 2 volte nella cella
    e inserisci la squadra. Poi fai il pronostico base, doppie e triple clicchi sul pulsante pronostico e le visualizza nella DGV2 e poi faccio Salva. Fin qui funziona tutto. Il tasto apri non funziona.

    2) a cosa ti serve mettere i risultati in una Listbox (Pronostico 8 Basi - 4 Doppie - 2 triple) ?

    La listbox mi deve dire solo quante base, doppie e triple ho messo, e un informazione.

    3) nel tuo codice vedo una riga strana x += x + 1, l'hai imparato su youtube ?

    No, è stato un suggerimento del programma (Visual studio 2019). L'ho corretto.

    Poi se mi vuoi aiutare mi fa piacere, devo pensare come andare avanti.......

  • Re: Contare quante basi - doppie e triple in una DGV1 con checkbox.

    Scusa, ma il sistema e' ""banale"".
    Diciamo di svilupparlo per passetti:
    
    vettore_conteggi[14]
    PER_ogni_riga r=1..14:
        t = 0
        PER_ogni_colonna_di_quella_riga c=1..3:
             SE tabellina[r][c] ha il check ALLORA t = t + 1
        FINE
        vettore_conteggi[r] = t
     FINE
     
     n_singole = 0
     n_doppie = 0
     n_triple = 0
     PER ogni elemento di vettore_conteggio i:
         SE vettore_conteggio[i] = 1 ALLORA n_singole = n_singole + 1
         SE vettore_conteggio[i] = 2 ALLORA n_doppie = n_doppie + 1
         SE vettore_conteggio[i] = 3 ALLORA n_triple = n_triple + 1
    FINE
    
    Alla fine, in 'n_singole', 'n_doppie', 'n_triple' hai esattamente quello che ti serve.

    ===============
    Riassumiamo: programmare e' complicato.
    COMUNQUE, iniziando con esercizi semplici, con costanza e con dedizione, si puo' arrivare a risultati discreti.

    Diciamo che LIMITANDOSI agli ""algoritmi"", non serve avere ANNI di esperienza, ma PARECCHI mesi si.
    Sto ESPLICITAMENTE ESCLUDENDO interfacce utente, ed ammenicoli vari che sono MOLTO complessi.

    Per iniziare ti consiglio di realizzare SOLO programmini a linea di comando.
    Sono piu' semplici da fare, non avranno un'interfaccia elegante ma possono essere anche MOOOLTO piu' potente e flessibili di quelli con interfaccia utente.

    Questa e' la prima parte.

    La seconda parte sono i CONCETTI FONDAMENTALI che BISOGNA AVERE ASSOLUTAMENTE se no non si cava un ragno dal buco, e sono

    1) tipo di dato: intero, numero con la vigola, booleano, carattere
    2) tipo di struttura dati: vettore, struttura. Ne esistono altre ma queste sono FONDAMENTALI
    3) variabile
    4) strutture di controllo: IF, FOR/WHILE, sequenza. Anche qui, ne esistono altre ma queste sono FONDAMENTALI
    5) struttura di un programma: funzioni. Ci sono anche le "procedure", ma non sono altro che "funzioni" con un'altro nome
    6) parametri
    7) stringhe/testo: non servono, ma per stampare qualcosa su schermo, bisogna usarle.


    Il linguaggio di programmazione NON E' un problema. TUTTI i linguaggi di programmazione contengono ALMENO questi concetti. Non si scappa.

    Poi ci sono altre cose, ma questa e' la base della base. SENZA questi concetti, NON SI PROGRAMMA.

    ====================================
    Il tuo problema e' semplice, ma anche abbastanza complicato. Intanto il problema si classifica nella classe dei problemi "combinatori": sono problemini semplici semplici che pero' esplodono molto velocemente.

    Ad esempio, tu hai 6 doppie e questo vuol dire gia' 64 colonne. con 10 doppie sarebbero 1024 colonne. Con 14 doppie dovresti generare 16384 colonne, cioe' ~1200 volte il numero delle doppie!
    Se fossero 14 triple, dovresti generare 4782969 colonne, cioe' ~35000 vlte il numero delle triple.
    Sono numeri abbastanza grandi
  • Re: Contare quante basi - doppie e triple in una DGV1 con checkbox.

    bytebit74 ha scritto:


    La listbox mi deve dire solo quante base, doppie e triple ho messo, e un informazione.
    Allora non ti serve una listbox, ma una label oppure un MessageBox in cui mostrare i valori che migliorabile ti ha indicato come trovare
  • Re: Contare quante basi - doppie e triple in una DGV1 con checkbox.

    @migliorabile

    Grazie per la tua info, hai capito tutto quello che devo fare. Sto leggendo guide in formato pdf. Questa è molto semplice:



    Con il tuo codice ho risolto il problema. Grazie.
    Dim pronostico(13)
            Dim t As Integer
            Dim num_base, num_doppie, num_triple As String
    
            For r = 0 To 13
                t = 0
                For c = 3 To 5
                    If DataGridView1.Rows(r).Cells(c).Value = True Then
                        t = t + 1
                    End If
                Next
                pronostico(r) = t
            Next
    
            num_base = 0
            num_doppie = 0
            num_triple = 0
            For i = 0 To 13
                If pronostico(i) = 1 Then
                    num_base = num_base + 1
                End If
                If pronostico(i) = 2 Then
                    num_doppie = num_doppie + 1
                End If
                If pronostico(i) = 3 Then
                    num_triple = num_triple + 1
                End If
            Next
    
            ListBox1.Items.Clear()
            ListBox1.Items.Add(num_base)
            ListBox1.Items.Add("Base")
            ListBox1.Items.Add(num_doppie)
            ListBox1.Items.Add("Doppie")
            ListBox1.Items.Add(num_triple)
            ListBox1.Items.Add("Triple")
  • Re: Contare quante basi - doppie e triple in una DGV1 con checkbox.

    ORRIBILE ORRORE, INGUARDABILE

    'num_singole, num_doppie, num_triple'

    SONO DEGLI INTERI, NON DELLE STRINGHE.

    La differenza e' SOSTANZIALE, ANCHE SE sembrano, dal punto di vista ""visuale"" la stessa cosa.
    Inoltre, non conosco VB.NET, MA sono certo al 110% che quello che stai facendo e':

    1) in 'num_doppie = 0' stai CONVERTENDO il NUMERO 0 in stringa
    2) in 'num_doppie = num_doppie + 1' stai CONVERTENDO

    2.1) 'num_doppie' a DESTRA dell'assegnamento, DA STRINGA A NUMERO
    2.2) fai la SOMMA tra due numeri
    2.3) il risultato LO RICONVERTI IN STRINGA per assegnarlo a SINISTRA dell'assegnamento

    ANCHE SE FUNZIONA, funziona SOLO in VB, E COMUNQUE E' CONCETTUALMENTE SBAGLIATO.

    E' uno di quei casi malefici del tipo: "funziona per sbaglio".

    Per la cronaca, altri linguagg convertono il NUMERO IN STRINGA, quindi scrivendo
    
    num_doppie = 0
    numdoppie = num_doppie + 1
    
    otterresti che 'num_doppie' vale:
    
    "0"
    "01"
    "011"
    "0111"
    "01111"
    ...
    
    NON 4 (QUATTRO)

  • Re: Contare quante basi - doppie e triple in una DGV1 con checkbox.

    Quando devi fare dei calcoli devi usare variabili tipo integer, float ecc..
    Il risultato che devi visualizzare lo trasformi in stringa con variabile.ToString
  • Re: Contare quante basi - doppie e triple in una DGV1 con checkbox.

    migliorabile ha scritto:


    ANCHE SE FUNZIONA, funziona SOLO in VB, E COMUNQUE E' CONCETTUALMENTE SBAGLIATO.
    non funzionerebbe neanche in VB utilizzando Option Strict On, molto utile per imparare a dimensionare bene le variabili.
    https://docs.microsoft.com/it-it/dotnet/visual-basic/language-reference/statements/option-strict-statement
  • Re: Contare quante basi - doppie e triple in una DGV1 con checkbox.

    @patel

    All'inizio del codice ho messo: Option Strict On, mi sono usciti 18 ERRORI. Adesso li correggo.

    @migliorabile

    Ho corretto le variabili in As Integer

    Qui c'è un po di teoria di quello che devo fare: https://giochi.softvision.it/Sistemi/Introduzione-Sistemistica-Totocalcio
Devi accedere o registrarti per scrivere nel forum
13 risposte