Recordset
Beskrivelse
Recordset
Først et lille eksempel på, hvordan man åbner en tabel:
Public Sub AabningAfRecordSet() Dim db As Database Dim rs As Recordset Dim intAntal As Integer Set db = CurrentDb() Set rs = db.OpenRecordset("Kunder") intAntal = rs.RecordCount MsgBox "Der er " & intAntal & " poster i kundetabellen" rs.Close
Set rs = Nothing End Sub Koden skal indtastes i et modul.
Forskellige typer af recordset
Der er 5 forskellige typer af recordset:
- Table
- Dynaset
- Snapshot
- Forward-only
- Dynamic
Table
Er standard recordset typen - den man får, hvis man ikke specificerer noget når man åbner recordsettet:
Set rs = db.OprenRecordset("Kunder") Når man bruger denne type recordset er informationerne i tabellen opdaterbare.
Dynaset
Et dynaset recordset kan være baseret på enten en lokal eller en tilknyttet tabel. Der er to vigtige egenskaber ved et Dynaset recordset:
- Du kan redigere i indholdet i et dynaset og ændringerne vil slå igennem i de underliggende tabeller
- Når et dynaset er åbent vil Access sørge for at opdatere indholdet i dynasettet i henhold til ændringer andre personer har lavet på de underliggende tabeller.
Set rs = db.OpenRecordset("Kunder", dbOpenDynaset) Du skal bruge dynaset hvis
- du har brug for at opdatere posterne i recordset objektet
- du vil se ændringer som andre laver på posterne
- recordset objektet er meget stort
- recordset objektet indeholder OLE objekter som billeder, Word dokumenter eller lign.
Snapshot
Et snapshot recordset er ikke opdaterbart og afspejler ikke ændringer, som andre brugere har lavet på posterne. Du skal bruge snapshot typen, hvis du ikke ønsker at opdatere dine data og hvis der ikke er mere end omkring 500 poster i tabellen.
Forward-only
Forward-only minder meget om snapshot - men i modsætning til snapshots kan man kun gennemløbe posterne i én retning. Det gør det til en hurtig metode til at gennemløbe et dataset.
Dynamic
Er egentlig ikke en del af JET men i stedet en del af ODBCDirect. De bruges til at skabe forbindelse med externe ODBC databaser - vi vil ikke behandle dem nærmere her.
Øvelse
Tag en kopi af databasen fra forrige lektion og kald den "Recordset.mdb"
Test ovenstående kode.
Kan du også finde ud af, hvornår tabellen blev oprettet?
Hvor mange postnumre er der i DK?
Pak databasen sammen eller omdøb den og send den til mig.
Løsning
Du kan hente mit forslag til løsningen her.
Jeg har hygget mig med at smide en formular på, hvor fra brugeren kan aktivere mine 3 makroer, der ser sådan her ud:
Public Sub AntalKunder() Dim db As Database Dim rs As Recordset Dim intAntal As Integer Set db = CurrentDb() Set rs = db.OpenRecordset("Kunder") intAntal = rs.RecordCount MsgBox "Der er " & intAntal & " poster i kundetabellen" rs.Close Set rs = Nothing End Sub Public Sub OprettetDato() Dim db As Database Dim rs As Recordset Dim intAntal As Integer Set db = CurrentDb() Set rs = db.OpenRecordset("Kunder") MsgBox "Tabellen blev oprettet den " & rs.DateCreated rs.Close Set rs = Nothing End Sub Public Sub AntalPostnumre() Dim db As Database Dim rs As Recordset Dim intAntal As Integer Set db = CurrentDb() Set rs = db.OpenRecordset("PostNrTabel") MsgBox "Antal postnumre " & rs.RecordCount rs.Close Set rs = Nothing End Sub Brug for hjælp til VBA, VSTO eller SQL?
Scient Data tilbyder professionel IT-konsulentbistand
Kontakt Scient Data →