Uygulandığı öğe
AçılanKutu Nesnesi |
Form Nesnesi |
ListeKutusu Nesnesi |
Rapor Nesnesi |
Belirtilen form, rapor, liste kutusu denetimi veya birleşik giriş kutusu denetimi içinkayıt kaynağını temsil eden ADO KayıtKümesi veya DAO KayıtKümesi nesnesini döndürür veya ayarlar. Okuma/yazma.
ifade.Recordset
ifade Gerekli. Uygulandığı Öğe listesindeki nesnelerden birini döndüren ifade.
Notlar
Recordset özelliği, bir form, rapor, liste kutusu denetimi veya birleşik giriş kutusu denetiminde göz atılan değerleri sağlayan kayıt kümesi nesnesini döndürür. Örneğin form bir sorguyu temel alıyorsa, Recordset özelliğine başvurmak aynı sorguyu kullanarak Recordset nesnesini kopyalamakla eşdeğerdir. Öte yandan, RecordsetClone özelliğini kullanmaktan farklı olarak, formun Recordset özelliğinde döndürülen kayıt kümesi içinde geçerli kaydın değiştirilmesi, formun geçerli kaydını da ayarlar.
Bu özellik yalnızca Visual Basic for Applications (VBA) kodu kullanılarak ayarlanabilir.
Recordset özelliğinin okuma/yazma davranışı, özellik tarafından tanımlanan kayıt kümesinin türü (ADO veya DAO) ve kayıt kümesi içinde yer alan verilerin türü (Access veya SQL) ile belirlenir.
Recordset türü |
SQL verileri temelinde |
Access verileri temelinde |
ADO |
Okuma/Yazma |
Okuma/Yazma |
DAO |
Yok |
Okuma/Yazma |
Aşağıdaki örnekte form açılır, kayıt kümesi açılır ve ardından formun Recordset özelliği yeni oluşturulan KayıtKümesi nesnesine ayarlanarak form kayıt kümesiyle ilişkilendirilir.
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
Recordset özelliğini kullanarak:
-
Birden çok formu ortak bir veri kümesiyle ilişkilendirebilirsiniz. Bu, birden çok formun eşitlenmesini sağlar. Örneğin,
Set Me.Recordset = Forms!Form1.Recordset
-
formlarda doğrudan desteklenmeyen yöntemleri KayıtKümesi nesnesiyle kullanabilirsiniz. Örneğin, bir kaydı bulmaya yönelik özel bir iletişim kutusunda Recordset özelliğini ADO Find veya DAO Find yöntemleriyle kullanabilirsiniz.
-
Geri alınabilen bir işlemi birden çok formu etkileyen bir dizi düzenleme çevresinde kaydırabilirsiniz.
Formun Recordset özelliğinin değiştirilmesi RecordSource, RecordsetType ve RecordLocks özelliklerinin de değiştirilmesine neden olabilir. Ayrıca, Filter, FilterOn, OrderBy ve OrderByOn özellikleri gibi verilerle ilgili bazı özellikler de geçersiz kılınabilir.
Formun kayıt kümesine ait Requery yönteminin çağrılması (örneğin, Forms(0).Recordset.Requery) formun ilişkisiz duruma gelmesine neden olabilir. Kayıt kümesiyle ilişkili bir formdaki verileri yenilemek için, formun RecordSource özelliğini kendisine ayarlayın (Forms(0).RecordSource = Forms(0).RecordSource).
Form bir kayıt kümesiyle ilişkili olduğunda, Forma Göre Filtre Uygula komutunu kullanırsanız hata oluşur.
Örnek
Aşağıdaki örnekte, geçerli formdan KayıtKümesi nesnesinin yeni bir kopyasını oluşturmak için Recordset özelliği kullanılır ve ardından Hata Ayıkla penceresindeki alanları adları yazdırılır.
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
Sonraki örnekte, bir kayıt kümesini formun geçerli kaydıyla eşitlemek için Recordset özelliği ve KayıtKümesi nesnesi kullanılır. Birleşik giriş kutusundan bir şirket adı seçildiğinde, söz konusu şirkete ait kaydı bulmak için FindFirst yöntemi kullanılır ve bu da formun bulunan kaydı görüntülemesine neden olur.
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
Aşağıdaki kod, farklı koşullar altında Recordset özelliği tarafından döndürülen kayıt kümesinin türünü saptamaya yardımcı olur.
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