Érvényesség
ComboBox objektum |
Form objektum |
ListBox objektum |
Report objektum |
Az adott űrlap (Form), jelentés (Report), lista (ListBox) vezérlő vagy kombinált lista (ComboBox) vezérlő rekordforrását jelentő ADO-rekordhalmaz vagy DAO-rekordhalmaz visszatérítésére vagy beállítására szolgál. Olvasható/írható.
kifejezés.Recordset
Kifejezés Megadása kötelező. Egy kifejezés, amely a Hatókör listában szereplő objektumok egyikét adja vissza.
Megjegyzések
A Recordset (Rekordhalmaz) tulajdonság az űrlapról, listapanel-vezérlőből vagy kombinált lista-vezérlőből böngészett adatokat biztosító rekordhalmaz-objektumot téríti vissza. Lekérdezésen alapuló űrlap esetén a Recordset tulajdonság megadása például egyenértékű a rekordhalmaz-objektum ugyanazon lekérdezéssel történő ismételt előállításával (klónozásával). A RecordsetClone tulajdonság használatától eltérően azonban, az űrlap Recordset tulajdonsága által visszatérített rekordhalmaz aktuális rekordjának megváltoztatása beállítja az űrlap aktuális rekordját is.
Ez a tulajdonság csak Visual Basic for Applications (VBA) kód használatával érhető el.
A Recordset olvasási/írási viselkedése a rekordhalmaz típusától (ADO vagy DAO), és a tulajdonság által azonosított rekordhalmazban szereplő adatok típusától (Access vagy SQL) függ.
Rekordhalmaz típusa |
SQL-adatok alapján |
Access-adatok alapján |
ADO |
Olvasható/írható |
Olvasható/írható |
DAO |
– |
Olvasható/írható |
Az alábbi példában szereplő kód megnyit egy űrlapot, majd az űrlapot a rekordhalmazhoz köti úgy, hogy az űrlap Recordset tulajdonságát az újonnan létrehozott rekordhalmaz-objektumra állítja.
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
A Recordset tulajdonságot az alábbi esetekben érdemes használni:
-
Ha szeretne több űrlapot egyetlen közös adatkészlethez kötni. Ez lehetővé teszi több űrlap szinkronizálását. Például:
Set Me.Recordset = Forms!Form1.Recordset
-
Ha olyan módszereket szeretne a rekordhalmaz-objektumon alkalmazni, melyek közvetlenül űrlapon történő alkalmazását nem támogatja a rendszer. Használhatja például a Recordset tulajdonságot egyéni párbeszédablakból indított ADO keresés vagy DAO keresés végrehajtásához, egy rekord megkereséséhez.
-
Ha szeretné a tranzakciókat (melyek visszagörgethetők) több űrlapot érintő szerkesztések mentén tördelni.
Egy űrlap Recordset tulajdonságának módosítása a RecordSource (Rekordforrás), RecordsetType (Rekordtípus), és RecordLocks (Rekordzárolás) tulajdonságokra is hatással lehet. Ezenkívül elképzelhető, hogy a rendszer felülír néhány adatokkal kapcsolatos tulajdonságot, például a Filter (Szűrő), FilterOn, OrderBy (Rendezés), és OrderByOn tulajdonságokat.
Az űrlap rekordhalmazának Requery metódusának meghívása (például Forms(0).Recordset.Requery) kötetlenné teheti az űrlapot. Egy rekordhalmazhoz kötött űrlap adatainak frissítéséhez állítsa az űrlap RecordSource tulajdonságát önmagára (Forms(0).RecordSource = Forms(0).RecordSource).
Ha egy űrlap rekordkészlethez kötött, a Szűrés űrlappal parancs kiadásakor hibát fog jelezni a rendszer.
Példa
Az alábbi példában szereplő kód futtatásakor a rendszer létrehozza a rekordhalmaz-objektum egy új másolatát a Recordset tulajdonságot használva, majd a kiírja a mezők neveit a Debug (Hibakeresés) ablakba.
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
A következő példa a Recordset tulajdonságot és a rekordhalmaz-objektumot használva szinkronizálja a rekordhalmazt az űrlap aktuális rekordjával. Amikor a kombinált listából a felhasználó kiválaszt egy cégnevet, a rendszer a FindFirst (Első találat) módszerrel megkeresi az adott céghez tartozó rekordot, aminek eredményeképpen az űrlap ezt a rekordot fogja megjeleníteni.
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
Az alábbi kód segítségével megállapíthatja, hogy a Recordset tulajdonság hatására milyen rekordhalmazt térít vissza a rendszer különböző feltételek teljesülése esetén.
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