Office
Logga in

Egenskapen Recordset

Gäller för

ComboBox-objekt

Form-objekt

ListBox-objekt

Report-objekt

Returnerar eller anger ADO Recordset- eller DAO Recordset-objektet som representerar datakällan för det angivna formuläret, rapporten, listrutekontrollen eller kombinationsrutekontrollen. Läsning/skrivning.

uttryck.Recordset

uttryck är obligatoriskt. Ett uttryck som returnerar ett av objekten i listan Gäller för.

Kommentarer

Egenskapen Recordset returnerar det Recordset-objekt som tillhandahåller de data som visas i ett formulär, en rapport, en listrutekontroll eller en kombinationsrutekontroll. Om ett formulär till exempel baseras på en fråga är det samma sak att referera till egenskapen Recordset som att klona ett Recordset-objekt med hjälp av samma fråga. En skillnad mot att använda egenskapen RecordsetClone är dock att den aktuella posten i formuläret också ändras när du ändrar vilken post som är aktuell i postuppsättningen som returneras med egenskapen Recordset för formuläret.

Den här egenskapen är bara tillgänglig via VBA-kod (Visual Basic for Applications).

Läs-/skrivbeteendet för egenskapen Recordset avgörs av typen av postuppsättning (ADO eller DAO) och vilken typ av data (Access eller SQL) som finns i postuppsättningen som identifieras av egenskapen.

Typ av postuppsättning

Baserad på SQL-data

Baserad på Access-data

ADO

Läsning/skrivning

Läsning/skrivning

DAO

EJ TILLÄMPLIGT

Läsning/skrivning

I följande exempel öppnas ett formulär och en postuppsättning, och sedan binds formuläret till postuppsättning genom att ange egenskapen Recordset för formuläret till det Recordset-objekt som nyss skapades.

Global rstSuppliers As ADODB.RecordsetSub MakeRW()DoCmd.OpenForm "Suppliers"Set rstSuppliers = New ADODB.RecordsetrstSuppliers.CursorLocation = adUseClientrstSuppliers.Open "Select * From Suppliers", _CurrentProject.Connection, adOpenKeyset, adLockOptimisticSet Forms("Suppliers").Recordset = rstSuppliersEnd Sub

Använd egenskapen Recordset till följande:

  • Att binda flera formulär till en gemensam datamängd. På så sätt kan du synkronisera flera formulär. Exempel:

    Set Me.Recordset = Forms!Form1.Recordset

  • Att använda metoder med Recordset-objektet som inte stöds direkt i formulär. Du kan till exempel använda egenskapen Recordset med ADO-metoden Find eller DAO-metoden Find i en anpassad dialogruta för att söka efter en post.

  • Att omsluta en transaktion (som kan lyftas tillbaka) runt en uppsättning redigeringar som påverkar flera formulär.

Om du ändrar egenskapen Recordset för ett formulär kan även egenskaperna RecordSource, RecordsetType och RecordLocks ändras. Dessutom kan vissa datarelaterade egenskaper åsidosättas, till exempel egenskaperna Filter, FilterOn, OrderBy och OrderByOn.

När du anropar metoden Requery för ett formulärs postuppsättning (till exempel Forms(0).Recordset.Requery) kan formuläret bli obundet. Om du vill uppdatera data i ett formulär som är bundet till en postuppsättning ska du sätta egenskapen RecordSource för formuläret till formuläret självt (Forms(0).RecordSource = Forms(0).RecordSource).

När ett formulär är bundet till en postuppsättning uppstår ett fel om du använder kommandot Filtrera enligt formulär.

Exempel

I följande exempel används egenskapen Recordset till att skapa en ny kopia av Recordset-objektet från det aktuella formuläret, och sedan skrivs fältnamnen ut i felsökningsfönstret.

Sub Print_Field_Names()
Dim rst As DAO.Recordset, intI As Integer
Dim fld As Field
Set rst = Me.Recordset
For Each fld in rst.Fields
' Print field names.
Debug.Print fld.Name
Next
End Sub

I nästa exempel används egenskapen Recordset och Recordset-objektet till att synkronisera en postuppsättning med formulärets aktuella post. När ett företagsnamn väljs i en kombinationsruta används metoden FindFirst till att leta upp posten för företaget, så att posten visas i formuläret.

Sub SupplierID_AfterUpdate()
Dim rst As DAO.Recordset
Dim strSearchName As String
Set rst = Me.Recordset
strSearchName = CStr(Me!SupplierID)
rst.FindFirst "SupplierID = " & strSearchName
If rst.NoMatch Then
MsgBox "Record not found"
End If
rst.Close
End Sub

Följande kod hjälper till att avgöra vilken typ av postuppsättning som returneras av egenskapen Recordset i olika situationer.

Sub CheckRSType()
Dim rs as Object
Set rs=Forms(0).Recordset
If TypeOf rs Is DAO.Recordset Then
MsgBox "DAO Recordset"
ElseIf TypeOf rs is ADODB.Recordset Then
MsgBox "ADO Recordset"
End If
End Sub
Utöka dina Office-kunskaper
Utforska utbildning
Få nya funktioner först
Anslut till Office Insiders

Hade du nytta av den här informationen?

Tack för din feedback!

Tack för din feedback! Det låter som att det kan vara bra att koppla dig till en av våra Office-supportrepresentanter.

×