Oppure

Loading
16/07/14 12:49
Devi farlo con le strutture per forza? Più adatte sarebbero le classi e un DB ...

In ogni caso, se nella struttura indichi il numero di elementi di un vettore, non potrai ridimensionarlo.
Una rivisitazione con le strutture, anche se può apparire un po' complicata, sarebbe

Type Voto
    Materia As String
    Valore As String
End Type

Type Alunno
    Nome As String
    NumVoti As Integer
    Voti() As Voto
End Type

Type Classe
    ClSez As String
    TotAlunni As Integer
    Alunni() As Alunno
End Type

Global QClassi As Integer
Global Classi() As Classe


e quindi nel form Load

QClassi=0


mentre per aggiungere i vari elementi

    ' Aggiunge classe

    QClassi = QClassi + 1
    ReDim Preserve Classi(QClassi)
    With Classi(QClassi)
        .ClSez = "1E"
        .TotAlunni = 0
    End With


    ' Aggiunge alunno in classe numero cix (da fornire)
    
    Classi(cix).TotAlunni = Classi(cix).TotAlunni + 1
    ReDim Preserve Classi(cix).Alunni(Classi(cix).TotAlunni)
    With Classi(cix).Alunni(Classi(cix).TotAlunni)
        .Nome = "Pinco Pallo"
        .NumVoti = 0
    End With


    ' Aggiunge voto per l'alunno numero aix in classe numero cix (da fornire)

    Classi(cix).Alunni(aix).NumVoti = Classi(cix).Alunni(aix).NumVoti + 1
    ReDim Preserve Classi(cix).Alunni(aix).Voti(Classi(cix).Alunni(aix).NumVoti)
    With Classi(cix).Alunni(aix).Voti(Classi(cix).Alunni(aix).NumVoti)
        .Materia = "Informatica"
        .Valore = "4-"
    End With
16/07/14 20:29
Aangelus
Ciao nessuno scusa il ritardo solo adesso ho avuto modo di controllare i post
Grande :k: credo proprio che prenderò spunto dal tuo codice grazie mille

io nel frattempo avevo risolto in questo modo:
Modulo:
Type Dativoti
SVoto As String
End Type

Type Nomiclasse
QVoti As Integer
SNomi As String
Nomi(5) As Dativoti
End Type

Type Daticlasse
QNomi As Integer
SClasse As String
Classe(3) As Nomiclasse
End Type

Global classi(5) As Daticlasse



Form con tre text :

For i = 0 To 5

[i] trova le classi inserite[/i]
    If classi(i).SClasse = Text1.Text Then
 
[i]  cerca l  alunno per eventualmente aggiungere il voto[/i]
        For n = 0 To classi(i).QNomi          
            If classi(i).Classe(n).SNomi = Text2.Text Then
                
                classi(i).Classe(n).QVoti = classi(i).Classe(n).QVoti + 1
                classi(i).Classe(n).Nomi(classi(i).Classe(n).QVoti).SVoto = Text3.Text
                n = classi(i).QNomi
                i = 5
[i] se non lo trovasse  aggiunge  [/i]
               
            ElseIf n = classi(i).QNomi Then       
            classi(i).QNomi = classi(i).QNomi + 1
            classi(i).Classe(classi(i).QNomi).SNomi = Text2.Text
            classi(i).Classe(classi(i).QNomi).QVoti = classi(i).Classe(classi(i).QNomi).QVoti + 1
            classi(i).Classe(classi(i).QNomi).Nomi(classi(i).Classe(n).QVoti).SVoto = Text3.Text
            i = 5
            End If
            
        
        Next n
[i]  se non trovasse la classe[/i]
    
    ElseIf classi(i).SClasse = "" Then                  
    classi(i).SClasse = Text1.Text
    classi(i).QNomi = classi(i).QNomi + 1
    classi(i).Classe(classi(i).QNomi).SNomi = Text2.Text
    classi(i).Classe(classi(i).QNomi).QVoti = classi(i).Classe(classi(i).QNomi).QVoti + 1
    classi(i).Classe(classi(i).QNomi).Nomi(classi(i).Classe(classi(i).QNomi).QVoti).SVoto = Text3.Text
    i = 5
    End If
    

Next i

per controllare che tutti i dati fossero corretti

For i = 0 To 5
Print classi(i).SClasse

    For n = 1 To classi(i).QNomi
    Print classi(i).Classe(n).SNomi
    
      For z = 1 To classi(i).Classe(n).QVoti
      Print classi(i).Classe(n).Nomi(z).SVoto
      
      Next z
    Next n
Next i


una volta completato tutta la struttura ed ever controllato la correttezza dei dati avrei introdotto le modifiche per introdurre il redim preserve. Grazie mille dei tuoi suggerimenti
Ultima modifica effettuata da Aangelus 16/07/14 20:46
aaa