2016-01-25 5 views
1

У меня есть набор объектов объектов employees, я могу перемещаться с использованием методов .MoveX. Однако я хотел бы знать, как я могу создать объект employee с текущей записью набора записей employees.Получить текущую запись набора записей

Dim employees As DAO.Recordset 
Dim employee As DAO.Recordset 

Set employees = database.OpenRecordset("SELECT * FROM EMPLOYEES", dbOpenDynaset) 
Do While Not employees.EOF 

    // Some magic function 'GetCurrentRecord' 
    employee = employees.GetCurrentRecord 
    // I can do stuff with 'employee' 
    MsgBox "Name: " & employee.Fields("Name").Value 

    employees.MoveNext 
Loop 

ответ

1

Из примера не понятно, почему вам нужен employee объекта, вы можете использовать employees записи для доступа к данным в текущей записи на каждом шаге цикла, но если вы хотите, например, чтобы найти какие-то набор записей строк в цикле, а затем доступ к этим строкам, вы можете использовать свойство записей Bookmark для хранения/восстановления текущей позиции набора записей.

0

Как вы упоминаете себя, очевидный метод, чтобы создать новый набор записей с этой одной текущей записи:

Dim employees As DAO.Recordset 
Dim employee As DAO.Recordset 

Set employees = database.OpenRecordset("SELECT * FROM EMPLOYEES", dbOpenDynaset) 
Do While Not employees.EOF 
    ' Specify condition when to extract the current record. 
    If SomeCondition = True Then 
     employees.Filter = "Id = " & employees!Id.Value & "" 
     Set employee = employees.OpenRecordset 
     Exit Do 
    End If 
    employees.MoveNext 
Loop 

If Not employee Is Nothing Then 
    ' I can do stuff with 'employee' 
    MsgBox "Name: " & employee.Fields("Name").Value 
End If 
+0

Я часто вижу, что переход к первой записи ('employees.movefirst') считается хорошей практикой ; это было бы необходимо здесь? если нет, то почему? – LiamH

+1

Набор записей всегда открывается на первой записи - если есть. Если записей нет, EOF будет True. – Gustav