IT Fjernundervisning

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:

  1. Table
  2. Dynaset
  3. Snapshot
  4. Forward-only
  5. 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 →