Oppure

Loading
11/09/14 12:02
Nick_79
Salve,

Ho iniziato a scrivere un programma in VB.NET riguardante la gestione degli iscritti ad una Gimkana Automobilistica.
In sintesi il mio programma prevede una suddivisione in Tab Control, in ogni Tab ho la gestione di un argomento, es.:
nella prima Tab, ho la registrazione dei dati (Nome, Cognome, indirizzo, mail, ecc.) riguardanti gli iscritti, concludendo l'inserimento di tutti gli iscritti, passo in automatico alla seconda tab, dove visualizzo in un DataGridView tutti i dati per ogni iscritto, e volendo posso salvare la tabella in un file Excel.
Nella terza Tab, tramite un Button, richiamo in un nuovo DataGridView solo alcuni dati importanti dei concorrenti (Nome, Cognome, Classe, Tipo di Auto), ed aggiungo manualmente nella tabella i vari numeri di gara dei concorrenti; inoltre inserisco il numero totale delle manche da svolgere.
I problemi sorgono nella quarta Tab, dove popolo una ListBox con il nome e cognome di tutti i concorrenti.
Cliccando su ogni concorrente ho affianco alla List Box la visualizzazione del numero di gara, del Nome e Cognome e del tipo di Auto (Questa Funziona!!!),
poi ho delle Text Box dove gestisco l'inserimento del Tempo impiegato per compiere un giro del precorso e del numero di birilli abbattuti come penalità.
Sia il tempo sia il numero di birilli, vengono poi trasformati in punteggio secondo un regolamento.
Ho inoltre delle Check Box che se selezionate vanno ad incrementare questo punteggio in base a delle penalità costanti.
Un Problema è questo:
-Inserisco il tempo ed il numero di birilli, ma devo cliccare di nuovo sul concorrente perché mi vengano aggiornate le label che mi visualizzano il tempo inserito, il punteggio corrispondente hai birilli abbattuti, il punteggio totale delle sole penalità ed il punteggio totale del tempo + le penalità.

Private Sub LstBoxSelConc_SelectedIndexChanged(sender As Object, e As EventArgs) Handles LstBoxSelConc.SelectedIndexChanged
        Dim i As Integer

        i = LstBoxSelConc.SelectedIndex

        'Visualizzazione dei dati principali del Concorrente selezionato
        LblNumConcSel.Text = DataGridView2.Rows(i).Cells(0).Value           'Numero di Gara
        LblNomeConcSel.Text = LstBoxSelConc.SelectedItem.ToString()         'Nome e Cognome
        LblAutoConcSel.Text = DataGridView2.Rows(i).Cells(4).Value          'Auto

        If RBtnRITIRATO.Checked = False Then
            Default_InGara()
            'Richiama la Funzione di inserimento tempi e penalità
            InsTempi_Penalità()
        Else
            Default_Ritirato()
        End If
    End Sub

 'Funzione inserimento Tempi e Penalità

    Sub InsTempi_Penalità()
        Dim T As Tempo

            'Inserimento del Tempo di Manche
            T.Min = Val(TxtBoxMin.Text)
            T.Sec = Val(TxtBoxSec.Text)
            T.Dec = Val(TxtBoxDec.Text)

            Controlla_Tempo(T)

            'Conversione del Tempo in Punti
            LblPuntiTempo.Text = Converti_Tempo(T)

            'Inserimento Penalità Birilli
            NBirilli = Val(TxtBoxPenalità.Text)
            LblPuntiBir.Text = NBirilli * PenalitàBirillo

            LblTotPNTPen.Text = Val(LblPuntiBir.Text) + Altre_Penalità()
            LblTotPNTTemp.Text = Val(LblTotPNTPen.Text) + Val(LblPuntiTempo.Text)
    End Sub


Altro Problema:
- Ho creato una funzione (Altre_Penalità;), che in base alla selezione della Check Box mi da un totale delle penalità costanti,
ma non funziona non so cosa sbaglio, volevo usare il Select Case ma anche quello non mi va

'Inserimento Altre Penalità

    Function Altre_Penalità() As Integer
        Dim SommaPen As Integer = 0

        If ChBoxPenPartAnt.CheckState = True Then
            Return SommaPen = PenalitàPartAnt
        ElseIf ChBoxPenJmpTrack.CheckState = True Then
            Return SommaPen = PenalitàJmpTrack
        ElseIf ChBoxPenBirillone.CheckState = True Then
            Return SommaPen = PenalitàBirillone
        ElseIf ChBoxPenMedia.CheckState = True Then
            Return SommaPen = PenalitàMedia
        ElseIf ChBoxPenPartAnt.CheckState = True And ChBoxPenJmpTrack.CheckState = True Then
            Return SommaPen = PenalitàPartAnt + PenalitàJmpTrack
        ElseIf ChBoxPenPartAnt.CheckState = True And ChBoxPenBirillone.CheckState = True Then
            Return SommaPen = PenalitàPartAnt + PenalitàBirillone
        ElseIf ChBoxPenPartAnt.CheckState = True And ChBoxPenMedia.CheckState = True Then
            Return SommaPen = PenalitàPartAnt + PenalitàMedia
        ElseIf ChBoxPenJmpTrack.CheckState = True And ChBoxPenBirillone.CheckState = True Then
            Return SommaPen = PenalitàJmpTrack + PenalitàBirillone
        ElseIf ChBoxPenJmpTrack.CheckState = True And ChBoxPenMedia.CheckState = True Then
            Return SommaPen = PenalitàJmpTrack + PenalitàMedia
        ElseIf ChBoxPenBirillone.CheckState = True And ChBoxPenMedia.CheckState = True Then
            Return SommaPen = PenalitàBirillone + PenalitàMedia
        ElseIf ChBoxPenJmpTrack.CheckState = True And ChBoxPenBirillone.CheckState = True And ChBoxPenMedia.CheckState = True Then
            Return SommaPen = PenalitàJmpTrack + PenalitàBirillone + PenalitàMedia
        ElseIf ChBoxPenPartAnt.CheckState = True And ChBoxPenBirillone.CheckState = True And ChBoxPenMedia.CheckState = True Then
            Return SommaPen = PenalitàPartAnt + PenalitàBirillone + PenalitàMedia
        ElseIf ChBoxPenPartAnt.CheckState = True And ChBoxPenJmpTrack.CheckState = True And ChBoxPenMedia.CheckState = True Then
            Return SommaPen = PenalitàPartAnt + PenalitàJmpTrack + PenalitàMedia
        ElseIf ChBoxPenPartAnt.CheckState = True And ChBoxPenJmpTrack.CheckState = True And ChBoxPenBirillone.CheckState = True Then
            Return SommaPen = PenalitàPartAnt + PenalitàJmpTrack + PenalitàBirillone
        ElseIf ChBoxPenPartAnt.CheckState = True And ChBoxPenJmpTrack.CheckState = True And ChBoxPenBirillone.CheckState = True And ChBoxPenMedia.CheckState = True Then
            Return SommaPen = PenalitàPartAnt + PenalitàJmpTrack + PenalitàBirillone + PenalitàMedia
        Else
            Return 0
        End If
        MsgBox(SommaPen)
    End Function


Poi vi chiederei anche un consiglio:
devo continuare il programma con altre Tab, per la gestione delle classifiche di manche, delle classifiche di classe e per la classifica assoluta, come mi consigliate di memorizzare i dati relativi ad ogni concorrente (i dati sono: Numero di Gara, Nome e Cognome, Classe, Auto, Numero di Manche, Tempo di Manche, Numero di Birilli, ed i punteggi visti sopra riguardanti le penalità;)?
Nick
11/09/14 17:27
Ultimo
Altro Problema:
- Ho creato una funzione (Altre_Penalità;), che in base alla selezione della Check Box mi da un totale delle penalità costanti,
ma non funziona non so cosa sbaglio, volevo usare il Select Case ma anche quello non mi va



non mi va è troppo generico, dovresti specificare che errori rileva

If ok Then GOTO Avanza else GOTO Inizia

12/09/14 7:56
Nick_79
Postato originariamente da Ultimo:

Altro Problema:
- Ho creato una funzione (Altre_Penalità;), che in base alla selezione della Check Box mi da un totale delle penalità costanti,
ma non funziona non so cosa sbaglio, volevo usare il Select Case ma anche quello non mi va



non mi va è troppo generico, dovresti specificare che errori rileva



Non rileva nessun problema, sembra che non mi entri proprio nella funzione...non so se ho sbagliato la dichiarazione, il richiamo (si vede nel primo listato di codice che ho inviato), o se è sbagliato l'utilizzo del Check Box.
Perché se mi entrasse nella funzione dovrebbe comunque farmi comparire il msgbox(SommaPen) che ho messo appunto come controllo.
E per il primo problema qualche idea su come posso risolverlo?
Nick
12/09/14 9:42
Ultimo
Postato originariamente da Nick_79:

Postato originariamente da Ultimo:

Altro Problema:
- Ho creato una funzione (Altre_Penalità;), che in base alla selezione della Check Box mi da un totale delle penalità costanti,
ma non funziona non so cosa sbaglio, volevo usare il Select Case ma anche quello non mi va



non mi va è troppo generico, dovresti specificare che errori rileva



Non rileva nessun problema, sembra che non mi entri proprio nella funzione...non so se ho sbagliato la dichiarazione, il richiamo (si vede nel primo listato di codice che ho inviato), o se è sbagliato l'utilizzo del Check Box.
Perché se mi entrasse nella funzione dovrebbe comunque farmi comparire il msgbox(SommaPen) che ho messo appunto come controllo.
E per il primo problema qualche idea su come posso risolverlo?



il msgbox non compare perchè ad ogni "Return" la funzione esce e ti ritorna un risultato, che dovrebbe essere
un array di integer o un integer



If ok Then GOTO Avanza else GOTO Inizia

12/09/14 10:16
vankraster
Postato originariamente da Nick_79:
    Function Altre_Penalità() As Integer
        Dim SommaPen As Integer = 0

        If ChBoxPenPartAnt.CheckState = True Then
            Return SommaPen = PenalitàPartAnt
        ElseIf ChBoxPenJmpTrack.CheckState = True Then
            Return SommaPen = PenalitàJmpTrack
        ElseIf ChBoxPenBirillone.CheckState = True Then
            Return SommaPen = PenalitàBirillone
        ElseIf ChBoxPenMedia.CheckState = True Then
            Return SommaPen = PenalitàMedia
        ElseIf ChBoxPenPartAnt.CheckState = True And ChBoxPenJmpTrack.CheckState = True Then
            Return SommaPen = PenalitàPartAnt + PenalitàJmpTrack
        ElseIf ChBoxPenPartAnt.CheckState = True And ChBoxPenBirillone.CheckState = True Then
            Return SommaPen = PenalitàPartAnt + PenalitàBirillone
        ElseIf ChBoxPenPartAnt.CheckState = True And ChBoxPenMedia.CheckState = True Then
            Return SommaPen = PenalitàPartAnt + PenalitàMedia
        ElseIf ChBoxPenJmpTrack.CheckState = True And ChBoxPenBirillone.CheckState = True Then
            Return SommaPen = PenalitàJmpTrack + PenalitàBirillone
        ElseIf ChBoxPenJmpTrack.CheckState = True And ChBoxPenMedia.CheckState = True Then
            Return SommaPen = PenalitàJmpTrack + PenalitàMedia
        ElseIf ChBoxPenBirillone.CheckState = True And ChBoxPenMedia.CheckState = True Then
            Return SommaPen = PenalitàBirillone + PenalitàMedia
        ElseIf ChBoxPenJmpTrack.CheckState = True And ChBoxPenBirillone.CheckState = True And ChBoxPenMedia.CheckState = True Then
            Return SommaPen = PenalitàJmpTrack + PenalitàBirillone + PenalitàMedia
        ElseIf ChBoxPenPartAnt.CheckState = True And ChBoxPenBirillone.CheckState = True And ChBoxPenMedia.CheckState = True Then
            Return SommaPen = PenalitàPartAnt + PenalitàBirillone + PenalitàMedia
        ElseIf ChBoxPenPartAnt.CheckState = True And ChBoxPenJmpTrack.CheckState = True And ChBoxPenMedia.CheckState = True Then
            Return SommaPen = PenalitàPartAnt + PenalitàJmpTrack + PenalitàMedia
        ElseIf ChBoxPenPartAnt.CheckState = True And ChBoxPenJmpTrack.CheckState = True And ChBoxPenBirillone.CheckState = True Then
            Return SommaPen = PenalitàPartAnt + PenalitàJmpTrack + PenalitàBirillone
        ElseIf ChBoxPenPartAnt.CheckState = True And ChBoxPenJmpTrack.CheckState = True And ChBoxPenBirillone.CheckState = True And ChBoxPenMedia.CheckState = True Then
            Return SommaPen = PenalitàPartAnt + PenalitàJmpTrack + PenalitàBirillone + PenalitàMedia
        Else
            Return 0
        End If
        MsgBox(SommaPen)
    End Function




Penso che tutti quei IF - elseif sono decisamente da principiante, usa questo:
Dim SommaPen As Integer = 0

  If ChBoxPenPartAnt.CheckState = True Then  SommaPen = PenalitàPartAnt
  If ChBoxPenJmpTrack.CheckState = True Then SommaPen += PenalitàJmpTrack
  If ChBoxPenBirillone.CheckState = True Then SommaPen += PenalitàBirillone
  If ChBoxPenMedia.CheckState = True Then SommaPen += PenalitàMedia

return SommaPen 


quello che viene dopo return NON viene eseguito dal compilatore! quindi aggiungere MsgBox(SommaPen) dopo return e inutile.
aaa
12/09/14 14:58
Nick_79
Postato originariamente da vankraster:

Penso che tutti quei IF - elseif sono decisamente da principiante, usa questo:
Dim SommaPen As Integer = 0

  If ChBoxPenPartAnt.CheckState = True Then  SommaPen = PenalitàPartAnt
  If ChBoxPenJmpTrack.CheckState = True Then SommaPen += PenalitàJmpTrack
  If ChBoxPenBirillone.CheckState = True Then SommaPen += PenalitàBirillone
  If ChBoxPenMedia.CheckState = True Then SommaPen += PenalitàMedia

return SommaPen 


quello che viene dopo return NON viene eseguito dal compilatore! quindi aggiungere MsgBox(SommaPen) dopo return e inutile.


Provo...
Nick
13/09/14 16:00
Nick_79
Postato originariamente da Nick_79:

Postato originariamente da vankraster:

Penso che tutti quei IF - elseif sono decisamente da principiante, usa questo:
Dim SommaPen As Integer = 0

  If ChBoxPenPartAnt.CheckState = True Then  SommaPen = PenalitàPartAnt
  If ChBoxPenJmpTrack.CheckState = True Then SommaPen += PenalitàJmpTrack
  If ChBoxPenBirillone.CheckState = True Then SommaPen += PenalitàBirillone
  If ChBoxPenMedia.CheckState = True Then SommaPen += PenalitàMedia

return SommaPen 


quello che viene dopo return NON viene eseguito dal compilatore! quindi aggiungere MsgBox(SommaPen) dopo return e inutile.


Provo...


Provato non da nessun segno di funzionare, e non da nessun tipo di errore o avvertimento, come dicevo sembra quasi che non entri nella funzione!!!
Non è che sia sbagliato il comando CheckState?
ChBoxPenMedia.CheckState = True

o il richiamo della funzione?

Perché un altro problema che ho indicato come quello principale è che selezionando un concorrente dalla ListBox, ed inserendo i campi delle TextBox, per far in modo di visualizzare i dati inseriti in queste ultime, nelle label corrispondenti, devo riselezionare il concorrente.
Non so se ho sbagliato il metodo della Sub corrispondente (il SelectedIndexChanged):
Private Sub LstBoxSelConc_SelectedIndexChanged(sender As Object, e As EventArgs) Handles LstBoxSelConc.SelectedIndexChanged

Nick
13/09/14 17:15
Ultimo
Friend Function Altre_Penalità As Integer
    Dim SommaPen As Integer = 0
     
      If ChBoxPenPartAnt.Checked = True Then  SommaPen = PenalitàPartAnt
      If ChBoxPenJmpTrack.Checked = True Then SommaPen += PenalitàJmpTrack
      If ChBoxPenBirillone.Checked = True Then SommaPen += PenalitàBirillone
      If ChBoxPenMedia.Checked = True Then SommaPen += PenalitàMedia
     
    return SommaPen
end Function


If ok Then GOTO Avanza else GOTO Inizia