Waarde van Array veranderen

Status
Niet open voor verdere reacties.

Wouter Meij

Nieuwe gebruiker
Lid geworden
29 feb 2008
Berichten
2
Hoi,

Ik ben bezig om een soort cijferlijst te programmeren in Visual Basic 6.

Ik heb nu de cijfers in een array staan, ze staan als volgt:

cijfer(1, 1) = 23
cijfer(1, 2) = 23
cijfer(1, 3) = 23
cijfer(1, 4) = 23
cijfer(1, 5) = 23

Het eerste getal staat voor het nummer van de leerling, iedere leerling heeft een id, het getal daarna staat voor het nummer van de toets, er zijn dus 5 toetsen. Iedere leerling heeft dus 5 toetsen met ieder een cijfer, (in dit getal 23)

Nu wil ik dat de cijfers veranderd kunnen worden, dus als ik bijvoorbeeld de 5 cijfers invoer en op wijzigen klik, dat dan de cijfers veranderd worden in de array. Nu ben ik zelf zover gekomen dat ik eerst de nieuwe cijfers inlees, en die als nieuwe waarde van cijfer(#, #) = NieuwCijfer invul. Maar op een of andere manier overschrijft het die oude waarde niet.

Weet iemand hier een oplossing voor?

Alvast bedankt!
 
als het goed is hoort het overschreven te worden.

Voorbeeld:
Code:
dim dubbelearray(0 to 1,0 to 1) as string [COLOR="SeaGreen"]'lekker makkelijk (voorbeeld!)[/COLOR]
dubbelearray(0,0) = "4"
dubbelearray(0,1) = "5"
msgbox "1e toets leerling 0: " & dubbelearray(0,0) & vbcrlf & "2e toets leerling 0: " & dubbelearray(0,1)
[COLOR="seagreen"]'doe allemaal code.[/COLOR]
dubbelearray(0,0) = "10"[COLOR="seagreen"]  ' + 6 dus[/COLOR]
msgbox "1e toets leerling 0: " & dubbelearray(0,0) & vbcrlf & "2e toets leerling 0: " & dubbelearray(0,1)
[COLOR="seagreen"]'als het goed is word er nu dus een 10 en een 5 gegeven.[/COLOR]


Wat is je code op het moment?
 
Dit heb ik nu:

Code:
Dim cijfer(20, 6) As String
'Het systeem is ontworpen voor 20 leerlingen met ieder 5 cijfers en 1 naam.
Dim Nieuw As String
'De variabele Nieuw is een String omdat het een tekstvat betreft, deze variabele wordt gebruikt bij het toevoegen van leerlingen
Dim CijfersLeerling(5) As String
'CijfersLeerling(5) is een Array die gebruikt wordt bij het wijzigen van de cijfers.


Private Sub Form_Load()
        'De cijfers worden in de array cijfers gezet, cijfer(1,1) staat voor leerling 1 cijfer 1,
        'cijfer(1,2) staat voor leerling 1 cijfer 2 enz. Zo is het eerste cijfer het nummer van de
        'leerling en het tweede cijfer het nummer van het cijfer
        
        'Het zesde 'cijfer' is de naam van de leerling
        cijfer(1, 1) = 69
        cijfer(1, 2) = 45
        cijfer(1, 3) = 98
        cijfer(1, 4) = 32
        cijfer(1, 5) = 76
        cijfer(1, 6) = Huub
        cijfer(2, 1) = 21
        cijfer(2, 2) = 21
        cijfer(2, 3) = 21
        cijfer(2, 4) = 21
        cijfer(2, 5) = 21
        cijfer(2, 6) = Dennis
        cijfer(3, 1) = 34
        cijfer(3, 2) = 67
        cijfer(3, 3) = 64
        cijfer(3, 4) = 39
        cijfer(3, 5) = 67
        cijfer(3, 6) = Wouter
        cijfer(4, 1) = 54
        cijfer(4, 2) = 67
        cijfer(4, 3) = 90
        cijfer(4, 4) = 70
        cijfer(4, 5) = 76
        cijfer(4, 6) = Piet

'Hier gaat gechecked worden welke eerstvolgende leerling nog niet gedefiniëerd is

Dim i As Integer
'i is een getal

    For i = 1 To 20
    'Hier begint een For loop, het getal i ligt tussen 1 en 20, omdat het maximum aantal leerlingen in het systeem 20 is.

        If cijfer(i, 1) = "" Then Exit For
        'Als het eerste cijfer van de leerling in de lstLeerling leeg is,
        'is de plek nog vrij en is dat de laatste leerling + 1
        'de plek kan dus beschreven worden, en een leerling kan toegevoegd worden
        Next i
        'Als cijfer(i, 1) wel een waarde bevat wordt verder gegaan naar
        'het volgende cijfer cijfer(i+1,1)


            Nieuw = i
            'Indexgetal Nieuw wordt het eerstvolgende nummer i van de leerling
            'die nog niet bestaat
                Dim NieuwCijfer(5) As String
                'De array NieuwCijfer wordt gedefinieerd als string omdat de inhoud
                'uit een textbox komt.
                    NieuwCijfer(1) = txtNieuwTo1.Text
                    'NieuwCijfer(1) krijgt de waarde uit de txtbox txtNieuwTo1,
                    'De waarde die uitgelezen wordt wordt uitgelezen uit het textvlak
                    'daar staat .Text achter txtNieuwTo1.Text voor.

                    'Dit gebeurt ook bij de volgende van de NieuwCijfer()
                    NieuwCijfer(2) = txtNieuwTo2.Text
                    NieuwCijfer(3) = txtNieuwOp1.Text
                    NieuwCijfer(4) = txtNieuwOp2.Text
                    NieuwCijfer(5) = txtNieuwOp3.Text
    For i = 1 To 5
    'Begin van een nieuwe For loop om de cijfer() array aan te vullen met de nieuwe cijfers
    cijfer(Nieuw, i) = NieuwCijfer(i)
    'De array krijgt het eerstvolgende indexgetal mee dat nog leeg was bij het checken van de
    'waarden in de vorige loop, het krijgt ook het cijfernummer en het cijfer mee
    Next i
    
    
    LeerlingNummer = lstLeerling.ListIndex + 1
    If cijfer(LeerlingNummer, 1) = "" Then cijfer(LeerlingNummer, 1) = CijfersLeerling(1)
    'cijfer(LeerlingNummer, 2) = CijfersLeerling(2)
    'cijfer(LeerlingNummer, 3) = CijfersLeerling(3)
    'cijfer(LeerlingNummer, 4) = CijfersLeerling(4)
    'cijfer(LeerlingNummer, 5) = CijfersLeerling(5)


End Sub

Private Sub cmdToevoegen_Click()
'Als er op de toevoegen knop geklikt wordt gebeurt het volgende

    Nieuw = lstLeerling.ListCount + 1
    'Nieuw is de waarde van de laatste in de lijst + 1, dus de eerstvolgende in de leerlinglijst
    'met een leerlingnummer die nog vrij is.
    
    lstLeerling.AddItem Nieuw
    'Hier wordt het eerstvolgende nummer uit de leerlinglijst die nog vrij is beschreven
    'De gegevens die geschreven moeten worden zijn al geladen in de Form_Load bij het klikken
    'van de knop leerling toevoegen

End Sub

Private Sub cmdWijzig_Click()



    Dim CijfersLeerling(1 To 5) As String
        CijfersLeerling(1) = txtTo1.Text
        CijfersLeerling(2) = txtTo2.Text
        CijfersLeerling(3) = txtOp1.Text
        CijfersLeerling(4) = txtOp2.Text
        CijfersLeerling(5) = txtOp3.Text
    
    Label1.Caption = CijfersLeerling(1)
    
    LeerlingNummer = lstLeerling.ListIndex + 1
    cijfer(LeerlingNummer, 1) = ""
    cijfer(LeerlingNummer, 2) = ""
    cijfer(LeerlingNummer, 3) = ""
    cijfer(LeerlingNummer, 4) = ""
    cijfer(LeerlingNummer, 5) = ""

'For i = 1 To 5
'    If IsNumeric(CijfersLeerling(i)) = False Then MsgBox ("Het moet wel een getal zijn")
'    End
'    If Val(CijfersLeerling(i)) = "" Or Val(CijfersLeerling(i)) <= "0" Then MsgBox ("U heeft geen getal of een getal kleiner gelijk aan 0 ingevoerd")
'Next i

End Sub

Hierin staat het toevoegen van een leerling met een reeks cijfers ook bij, dat werkt, maar dat zit ook tussen de Form_Load() dus het is denk ik minder verwarrend als ik dat erbij laat.

Het gaat vooral om de cmdWijzig_Click() en onderaan de Form_Load waar de cijfer() array opnieuw volgezet wordt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan