Dim aa As Variant
Dim bb As Variant
aa = GetHireDate(4, bb)
If aa = SUCCESS Then
MsgBox "All oK " & vbLf & bb
Else
MsgBox "NotGood"
End If
End Sub
___________________________________________________________________
Function GetHireDate(StudKey As Long, varHireDate As Variant) As Integer
Dim rstStud As Recordset, dbs As Database
Dim path As String
path = ActiveWorkbook.path
On Error GoTo ErrorHandler
Set dbs = OpenDatabase(path + "\DBproba2.mdb")
Set rstStud = dbs.OpenRecordset("stud", dbOpenTable)
rstStud.Index = "key_stud"
rstStud.Seek "=", StudKey
If rstStud.NoMatch Then
varHireDate = Null
GetHireDate = ERR_NOMATCH
Exit Function
Else
varHireDate = rstStud!birthday_stud
GetHireDate = SUCCESS
Exit Function
End If
ErrorHandler:
Select Case Err
Case 0
Exit Function
Case Else
varHireDate = Null
GetHireDate = FAILD
MsgBox "Error " & Err & ": " & Error, vbOKOnly, "ERROR"
Exit Function
End Select
End Function
Свойство Index должно быть установлено до начала использования метода Seek
Создание набора при помощи запроса
Можно создать набор записей при помощи хранимого запроса на выборку (типа SELECT)
Dim dbs As Database, rstProducts As Recordset
Set dbs = OpenDatabase("Northwind.mdb")
Set rstProducts = dbs.OpenRecordset("Текущий перечень изделий")
Если хранимого запроса нет, то вместо имени запроса воспринимается строка SQL
|
|
Dim dbs As Database, rstProducts As Recordset
Set dbs = OpenDatabase("Northwind.mdb")
strQuerySQL = "SELECT * FROM Изделия " _
& "WHERE Прекращен = No " _
& "ORDER BY НазваниеИзделия;"
Set rstProducts = dbs.OpenRecordset(StrQuerySQL)
Недостаток - строка запроса должна компилироваться при каждом исполнении
Пример исключения данного недостатка
Dim dbs As Database
Dim rstProducts As Recordset
Dim qdf As QueryDef
Set dbs = OpenDatabase("Northwind.mdb")
Set qdf = dbs.CreateQueryDef("SalesRepQuery")
qdf.SQL = "SELECT * FROM Служащие " _
& "WHERE Должность = 'Торговый агент' "
Set rstProducts = dbs.OpenRecordset(SalesRepQuery)
_________________________________________________________