Toon posts:

[VBA] Access hang bij uitvoeren code

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

Verwijderd

Topicstarter
Ik ben bezig met het bouwen van een applicatie in Access 2003. Een onderdeeltje er van is het volgende brouwseltje.

VBScript:
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
Private Sub cmd_sluiten_Click()
    Dim DB As Database
    Dim RS1 As Recordset
    Dim RS2 As Recordset
    Dim RS3 As Recordset
    
    Set DB = CurrentDb
    Set RS1 = DB.OpenRecordset("tbl_geoorloofd_afwezig")
    Set RS2 = DB.OpenRecordset("tbl_geselecteerde_student")
    Set RS3 = DB.OpenRecordset("tbl_geselecteerd_record")
    
    DoCmd.SetWarnings False
    
    DoCmd.RunSQL ("DELETE tbl_geselecteerd_record.* FROM tbl_geselecteerd_record;")
    DoCmd.RunSQL ("DELETE tbl_geselecteerde_student.* FROM tbl_geselecteerde_student;")
    
    RS3.AddNew
    RS3("fld_geselecteerd_record").Value = Me.fld_id
    RS3.Update
        
    DoCmd.RunSQL ("INSERT INTO tbl_geselecteerde_student ( fld_geselecteerde_student ) SELECT tbl_presentie.fld_amico_student_id FROM tbl_geselecteerd_record LEFT JOIN tbl_presentie ON tbl_geselecteerd_record.fld_geselecteerd_record = tbl_presentie.fld_id")
        
    DoCmd.SetWarnings True

    If Me.cbo_presentie = 1 Then
        Do Until RS1.EOF
            If RS1("fld_student_id").Value = RS2("fld_geselecteerde_student").Value Then
                RS1.Delete
            End If
        RS1.MoveNext
        Loop
    End If

    RS1.Close
    RS2.Close
    RS3.Close
    DB.Close
    
    Set RS1 = Nothing
    Set RS2 = Nothing
    Set RS3 = Nothing
    Set DB = Nothing

    DoCmd.Close
End Sub


Niet echt heel mooi, maar voor als nog volstaat het. Tot vandaag werkte alles prima. Helaas crasht sinds vandaag Access volledig op het stukje:
code:
1
2
3
    RS3.AddNew
    RS3("fld_geselecteerd_record").Value = Me.fld_id
    RS3.Update


Wat zou hier in godensnaam aan de hand kunnen zijn? De code lijkt mij goed te zijn. Als er niet uit te komen is, kan ik natuurlijk ook SQL gebruiken om bovenstaande code te vervangen. Helaas weet ik niet hoe ik de gegevens uit het form kan gebruiken in een query (me.fld_id). Beide oplossingen zijn wat mij betreft prima. Als het maar werkt.

  • compufreak88
  • Registratie: November 2001
  • Laatst online: 02-05-2025
Een query is gewoon een string, dus je kunt gewoon doen

query = "INSERT INTO tbl_geselecteerd_record (fld_geselecteerd_record) VALUES('" & me.fld_id & "')"

Verwijderd

Topicstarter
Bedankt voor je reactie. Ik heb je query gebruikt om mijn VBA te vervangen. Helaas met het zelfde resultaat: Access hangt. Nu ben ik even gaan zoeken en blijkt dat om het moment dat ik me.fld_id opvraag (b.v. in een messagebox) Access crasht. Vreemd is dat het form dat fld_id gebruikt wel werkt; het bijbehorende record wordt netjes getoond.
Ik ben bang dat er iets grondig mis is met mijn applicatie (misschien bij een crash iets gebeurd). Enig idee?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 26-07 17:36

NMe

Quia Ego Sic Dico.

Dat weten de mensen in Officesuites en -software vast wel. ;) Waar hoort mijn topic?

PRG>>OFF

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • waxxzer
  • Registratie: Oktober 2006
  • Laatst online: 28-03-2021
Open je tabel waar fld_id in staat en zoek naar een record waar "#error" in staat. Kan in een enkel field staan, maar ook in alle fields op het record. Als dat zo is, verwijder dan het record door de record selector te gebruiken, niet in het grid en te deleten (eerst even naar klembord kopieren als er kritieke data in staat, deze kan je bv. in excel plakken, het errorfield verwijderen en weer terugplakken in je tabel).
Daarna even repareren en comprimeren.

Verwijderd

Topicstarter
Ik heb inmiddels de oplossing gevonden -> nieuwe database aanmaken en alle tabellen, e.d. importeren. Lekker lame, maar nu werkt het wel weer.
Pagina: 1