VBA: Hvordan sjekke om oppføring eksisterer i tabell

Submitted by lroedal on Sun, 12/10/2017 - 23:57

Dersom du skal legge til oppføringer i en relatert tabell programmatisk, kan det være en fordel å sjekke om oppføringen eksisterer fra før. Da slipper du feilmeldinger om du forsøker å legge til en oppføring som ikke eksisterer i "foreldre"-tabellen. I eksempelet under sjekker jeg om studentnr. til en gitt student eksisterer i en studenttabell, før jeg legger til en oppføring for denne studenten i en eksamenstabell. Er ikke studenten registrert, ønsker jeg ikke at eksamensregistreringen skal bli gjennomført. Se kodevinduet under for et kodeeksempel.

  1. Dim stdset as DAO.Recordset
  2. Dim db as DAO.Database
  3.  
  4. Dim studnr as Long 'Vi antar at det legges inn et studentnr. fra bruker til denne variabelen
  5. Dim studEksisterer as Boolean 'Brukes for å sjekke om studnr. eksisterer
  6. studEksisterer = False 'Setter denne eksplisitt til False
  7.  
  8. set db = CurrentDB 'Fyller db med databasen som er åpen i øyeblikket (.accdb-filen din)
  9. set stdset = db.OpenRecordSet("student-tabell") 'Henter inn studenttabellen for sjekk
  10.  
  11. 'Sjekk om studentnr. eksisterer
  12. If Not (stdset.EOF And stdset.BOF) Then 'Om tabellen er EOF(End Of File) og BOF(Beginning of File) samtidig, er den tom. Da ønsker vi ikke at koden skal kjøres.
  13. stdset.MoveFirst 'Hopper til første oppføring i databasen
  14. Do Until stdset.EOF = True
  15. If stdset("studentnr") = studnr Then 'Sjekker stud.nr. fra nåværende oppføring i databasen, mot det brukeren har valgt
  16. studEksisterer = True 'Dersom studnr. finnes, settes booleanen studEksisterer til True. Da vet vi at studenten er registrert i student-tabellen.
  17. End If
  18. stdset.MoveNext 'Hopper til neste oppføring i databasen (Denne er _viktig_)
  19. Loop
  20. End If
  21.  
  22. If studEksisterer = False Then
  23. MsgBox ("Studenten er ikke registrert. Er stud.nr. skrevet korrekt?")
  24. Exit Sub 'Avslutter koden.
  25. End If