fout bij opslaan checkbox

Status
Niet open voor verdere reacties.

Tamara27

Gebruiker
Lid geworden
1 mrt 2010
Berichten
224
Ik heb onderstaande code gebruikt om een deel veldjes van een onafhankelijk formulier op te slaan in tabellen.
Bij het stukje in het rood, gaat het blijkbaar fout.
De aantastingen worden wel opgeslaan, maar hij creeert ook telkens 1 extra record. Hierin slaat hij enkel de unieke code op, geen aantasting.
Kan iemand zien waar de fout zit? Ik heb al gekeken of er geen verborgen checkboxen meer zijn, maar dat is het probleeem duidelijk niet...

Code:
Private Sub cmdVerder_Click()
Dim lResponse As Integer
Dim sUniekeCode As String

lResponse = MsgBox("Verder gaan?", vbYesNo, "Verder gaan")
If lResponse = vbYes Then

    If Nz(cmbCode, "") = "" Then
    MsgBox ("Vul de unieke code in aub")
    Exit Sub

    Else
    Dim sTabel As String
    Dim sComplicaties As String
    
        For Each ctl In Controls
            With ctl
                Select Case .ControlType
                    Case acCheckBox
                        If .Value = -1 Then
                            sComplicaties = Mid(.Name, 9, Len(.Name) - 8)
                            sTabel = .Tag
                            On Error Resume Next
                            With CurrentDb.OpenRecordset(sTabel)
                                .AddNew
                                ![Unieke code] = cmbCode
                                ![Complicaties] = sComplicaties
                                ![Aandoeningen] = sComplicaties
                              [COLOR="red"]  ![Aantasting] = sComplicaties[/COLOR]                                
                                .Update
                                .Close
                            End With
                        End If                    
                 Case acComboBox
                        If .Value <> "" Then
                            sTabel = .Tag
                            On Error Resume Next
                            With CurrentDb.OpenRecordset(sTabel)
                                .AddNew
                                ![Unieke code] = cmbCode
                                ![Diagnosedatum] = txtDiagnosedatum
                                ![Type IBD] = cmbIBD
                                .Update
                                .Close
                            End With
                        End If
                End Select
            End With
        Next ctl
    
        
        If Me.txtAantalcm <> "" Then
        With CurrentDb.OpenRecordset("GegevensAantasting")
            .AddNew
            ![Unieke code] = cmbCode
            ![Aantasting] = txtAantalcm & " cm"
            .Update
            .Close
        End With
        ElseIf Me.txtOngedefinieerd <> "" Then
        With CurrentDb.OpenRecordset("GegevensAantasting")
            .AddNew
            ![Unieke code] = cmbCode
            ![Aantasting] = txtOngedefinieerd
            .Update
            .Close
        End With
        Else
        With CurrentDb.OpenRecordset("GegevensAantasting")
            .AddNew
            ![Unieke code] = cmbCode
            ![Aantasting] = cmbAantasting
            .Update
            .Close
        End With
        End If
        
    End If
    
    lResponse = MsgBox("Verder gaan naar Invoeren behandeling?", vbYesNo, "Verder gaan")
        If lResponse = vbYes Then
            sUniekeCode = Me.cmbCode
            DoCmd.Close acForm, "F_InvoerenIBD"
            DoCmd.OpenForm "F_InvoerenBehandeling", , , , , , sUniekeCode
        Else
            DoCmd.Close acForm, "F_InvoerenIBD"
            DoCmd.OpenForm "F_Start"
        End If

Else
    Exit Sub
End If
End Sub


Dank u !
 
Laatst bewerkt:
Hij zal niet bij elke regel stoppen, neem ik aan? Dus waar gaat het precies fout?
 
Hij stopt nergens... Dat is het probleem een beetje;
Hij creeert niet overal een record te veel, enkel bij aantasting.

In de code zie je dat hij verschillende groepen van sComplicatie moet aanpassen. De echte complicaties en de aandoeningen slaat hij perfect op; het gaat pas fout als hij de aantasting moet opslaan... Dan komt er ineens een extra record...
 
Heb je al in de stap modus gecontroleerd wat hij doet? Want een extra record aanmaken betekent dat hij ergens de loop twee keer uitvoert. En ik zie bijvoorbeeld dat je de tabel [GegevensAantasting] ook nog eens apart opent om een nieuw record toe te voegen. Ligt het probleem niet daar?
 
Octafish!

Wederom bedankt. Het rode gedeelte in de code was inderdaad niet nodig! Dat is dubbelwerk! Voor zover ik het heb kunnen uitproberen is het probleem opgelost!
Thnx!


Code:
        If Me.txtAantalcm <> "" Then
        With CurrentDb.OpenRecordset("GegevensAantasting")
            .AddNew
            ![Unieke code] = cmbCode
            ![Aantasting] = txtAantalcm & " cm"
            .Update
            .Close
        End With
        ElseIf Me.txtOngedefinieerd <> "" Then
        With CurrentDb.OpenRecordset("GegevensAantasting")
            .AddNew
            ![Unieke code] = cmbCode
            ![Aantasting] = txtOngedefinieerd
            .Update
            .Close
        End With
        Else
     [COLOR="red"]   With CurrentDb.OpenRecordset("GegevensAantasting")
            .AddNew
            ![Unieke code] = cmbCode
            ![Aantasting] = cmbAantasting
            .Update
            .Close
        End With[/COLOR]        
     End If
        
    End If
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan