[Access/VBA]Record verwijderen

Pagina: 1
Acties:
  • 968 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

Anoniem: 25278

Topicstarter
Ik ben bezig met een Access 97 en heb in een form een knop geplaatst die het huidige record verwijdert. Nou wil ik natuurlijk niet met die foeilelijke Access melding van record verwijderen werken, maar met een eigen msgbox. Dit lukt allemaal wel (zie code hieronder), maar als ik eenmaal toekom aan het echte record verwijderen dan weet ik het niet meer.... Me.RecordSet.Delete schijnt niet te werken in Access 97... Weet iemand wat er wel werkt?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Private Sub btnRecordVerwijderen_Click()
On Error GoTo Err_btnRecordVerwijderen_Click
    
    If MsgBox("Wilt u de gegevens verwijderen?", vbYesNo, "Adressoort") = vbYes Then
        'Bij bevestiging, verwijder record

        Me.Recordset.Delete
        
        MsgBox "De gegevens zijn verwijderd!"
        'Ga naar het eerste record
        DoCmd.GoToRecord , , acFirst
    Else
        Me.Undo
    End If
            
    Me.Refresh
            

Exit_btnRecordVerwijderen_Click:
    Exit Sub

Err_btnRecordVerwijderen_Click:
    MsgBox Err.Description
    Resume Exit_btnRecordVerwijderen_Click
    
End Sub

Acties:
  • 0 Henk 'm!

Anoniem: 53142

[Edit] Heb nog een extra controle ingebouwd; not isnull(ID)

Ok, je wilt dus deze regels verwijderen?

'DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
'DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70

Je kunt onderstaande code gebruiken.

Vervang ID 3x door jouw veldnaam (primairy key in het formulier)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
If MsgBox("Wilt u de gegevens verwijderen?", vbYesNo, "Adressoort") = vbYes Then
    'Bij bevestiging, verwijder record

    Dim mySQL
    Dim dbs As Database
    Dim rst As Recordset

    if not isnull (me.ID) then 
        mySQL = "Select * FROM " & Me.RecordSource & " WHERE ID= " & Me.ID

        Set dbs = CurrentDb
        Set rst = dbs.OpenRecordset(mySQL)

        If rst.RecordCount > 0 Then
            rst.Delete
        End If

        rst.Close
        dbs.Close
    
        Set rst = Nothing
        Set dbs = Nothing
    
        Me.Requery
        
            MsgBox "De gegevens zijn verwijderd!"

    else
        MsgBox "Geen huidig record!"

    end if
     
else    
    MsgBox "Niet weggegooid!"
End If

Acties:
  • 0 Henk 'm!

Anoniem: 25278

Topicstarter
Het werkt.. Bedankt!

Acties:
  • 0 Henk 'm!

Anoniem: 53142

Vergeet niet mijn laatste wijziging; not isnull (me.ID). Code is gewijzigd.

Acties:
  • 0 Henk 'm!

Anoniem: 25278

Topicstarter
Het is als volgt geworden:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Private Sub btnRecordVerwijderen_Click()
On Error GoTo Err_btnRecordVerwijderen_Click
    
    Dim mySQL
    Dim dbs As Database
    Dim rst As Recordset
    
    'Is er wel een record geselecteerd?
    If Me.CurrentRecord = False Then
        MsgBox "Er is geen record geselecteerd."
    Else
        'Bij bevestiging gaan we over tot verwijderen
        If MsgBox("Wilt u de gegevens verwijderen?", vbYesNo, "Adressoort") = vbYes Then
        
            'Ophalen uit de database om de recordset te vullen
            mySQL = "Select * FROM tblAdresSoort WHERE ads_ID= " & Me.ads_ID
            Set dbs = CurrentDb
            Set rst = dbs.OpenRecordset(mySQL)
            
            'Als dit record inderdaad bestaat
            If rst.RecordCount > 0 Then
                rst.Delete
            End If
            
            'Opruimen
            rst.Close
            dbs.Close
            
            Set dbs = Nothing
            Set rst = Nothing
            
            'Melding van verwijderen
            Call MsgBox("De gegevens zijn verwijderd.", vbOKOnly)
            
            'Scherm verversen
            Me.Requery
        End If
    End If

            

Exit_btnRecordVerwijderen_Click:
    Exit Sub

Err_btnRecordVerwijderen_Click:
    MsgBox Err.Description
    Resume Exit_btnRecordVerwijderen_Click
    
End Sub


Me.ID werkte niet...

Acties:
  • 0 Henk 'm!

Anoniem: 53142

CurrentRecord is natuurlijk ook mogelijk. Ziet er goed uit.
Pagina: 1