Requery werkt niet

Status
Niet open voor verdere reacties.

so10070

Gebruiker
Lid geworden
4 feb 2014
Berichten
419
Ik heb een formulier met één subformulier. Via een knop "Verwijderen" worden de records in het subformulier en het record in het formulier verwijderd (referentiële integriteit afgedwongen). Echter nadat de records verwijderd zijn wordt er opgestart met een blanco formulier. de opdracht "Me.Requery" werkt niet. Hierbij de code. Heb ook reeds getracht met "Recordsetclone". Ook dit werkt niet. Enig idee hoe ik hier uit geraak? :(

Zie ook bijlage: Naamloos.png

Code:
Private Sub butVerwijder_Click()
    Dim sqlVerwijderSubFormGegevens As String
    Dim sqlVerwijderParentGegevens As String
    Dim strCodeModule As String

    strCodeModule = "frmKlant Sluiten_Click()"

    On Error GoTo foutafhandeling

    info 25
      
    If Antwoord = 6 Then
        'Nu eerst onderzoeken of er gerelateerde records zijn in het subform
        If DCount("*", "tblKlantContacten", "KID = " & Me.iKID) <> 0 Then   'Er bestaan records in de gerelateerde tabel
            DoCmd.SetWarnings False
            sqlVerwijderSubFormGegevens = "DELETE tblKlantContacten.KID From tblKlantContacten WHERE tblKlantContacten.KID = " & Me.iKID & ";"
            DoCmd.RunSQL sqlVerwijderSubFormGegevens
            DoCmd.SetWarnings True
        End If
    
        DoCmd.SetWarnings False
        sqlVerwijderParentGegevens = "DELETE tblKlant.KID From tblKlant WHERE tblKlant.KID = " & Me.iKID & ";"
        DoCmd.RunSQL sqlVerwijderParentGegevens
        DoCmd.SetWarnings True
        
        Me.lstKlantLijst = ""
        Me.lstKlantLijst.Requery
        Me.iAantalKlanten = DCount("*", "tblKlant")
        Me.Requery
    End If

Exit_Sub:
    Exit Sub

foutafhandeling:
    Call FoutenRegistratie(Err.Number, Err.Description, strCodeModule, Environ("Username"))
    Resume Exit_Sub
End Sub
 

Bijlagen

  • Naamloos.png
    Naamloos.png
    10,8 KB · Weergaven: 17
iets als
me.recordsource = "select * from tblKlant "
?
 
Laatst bewerkt:
Zou kunnen denk ik, maar dit is een formulier met een subformulier dat als volgt gekoppeld wordt in "Form_Load". Bovendien is deze query nog steeds gekoppeld aan het formulier, want als ik de keuzelijst open en een klant kies, wordt het formulier opgevuld zoals het hoort met al zijn velden.

Code:
    With Me
        .RecordSource = sqlKlant
        .subfrmKlantContacten.Form.RecordSource = sqlKlantContacten
        .subfrmKlantContacten.LinkChildFields = "KID"
        .subfrmKlantContacten.LinkMasterFields = "KID"
        ...
 
Gevonden! Soms kreeg ik geen records in mijn query. Ik vermoed dat door de WhereCondition in de deletequery de tabel geen records meer bevatte. En uiteraard, door de recordsource opnieuw aan te maken, wordt dit formulier opnieuw gevuld! Thanks NoellaG! :thumb:. Ik voegde volgende code in de procedure toe:

Code:
Private Sub butVerwijder_Click()
    Dim sqlKlant As String
    Dim sqlKlantContacten As String
    Dim sqlVerwijderSubFormGegevens As String
    Dim sqlVerwijderParentGegevens As String
    Dim strCodeModule As String

    strCodeModule = "frmKlant Sluiten_Click()"

    On Error GoTo foutafhandeling
    
    sqlKlant = "SELECT tblKlant.* " & _
        "FROM tblKlant " & _
        "ORDER BY tblKlant.KNAAM1;"
    
    sqlKlantContacten = "SELECT tblKlantContacten.* " & _
        "FROM tblKlantContacten " & _
        "ORDER BY tblKlantContacten.KCONTACTNAAM;"

    info 25
      
    If Antwoord = 6 Then
        'Nu eerst onderzoeken of er gerelateerde records zijn in het subform
        If DCount("*", "tblKlantContacten", "KID = " & Me.iKID) <> 0 Then   'Er bestaan records in de gerelateerde tabel
            DoCmd.SetWarnings False
            sqlVerwijderSubFormGegevens = "DELETE tblKlantContacten.KID From tblKlantContacten WHERE tblKlantContacten.KID = " & Me.iKID & ";"
            DoCmd.RunSQL sqlVerwijderSubFormGegevens
            DoCmd.SetWarnings True
        End If
    
        DoCmd.SetWarnings False
        sqlVerwijderParentGegevens = "DELETE tblKlant.KID From tblKlant WHERE tblKlant.KID = " & Me.iKID & ";"
        DoCmd.RunSQL sqlVerwijderParentGegevens
        DoCmd.SetWarnings True
        
        With Me
            .lstKlantLijst = ""
            .lstKlantLijst.Requery
            .iAantalKlanten = DCount("*", "tblKlant")

[B][COLOR="#A52A2A"]            'Opnieuw instellen van form
            .RecordSource = sqlKlant
            .subfrmKlantContacten.Form.RecordSource = sqlKlantContacten
            .subfrmKlantContacten.LinkChildFields = "KID"
            .subfrmKlantContacten.LinkMasterFields = "KID"
            .Requery[/COLOR][/B]
        End With
    End If

Exit_Sub:
    Exit Sub

foutafhandeling:
    Call FoutenRegistratie(Err.Number, Err.Description, strCodeModule, Environ("Username"))
    Resume Exit_Sub
End Sub
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan