У меня есть функция, которую я только что сделал, чтобы я мог параметризовать свои запросы.
Ниже приводится используемая функция:
Public Function getLOTSRSTparam(strSQL As String, paramValue As Variant, _
Optional skip As Boolean) As ADODB.Recordset
Dim Cn As ADODB.Connection
Dim Cm As ADODB.Command
Dim Pm As ADODB.parameter
Dim RS As ADODB.Recordset
Set db = CurrentDb
Set Cn = New ADODB.Connection
Cn.Open Right(LCon, Len(LCon) - 5)
Set Cm = New ADODB.Command
With Cm
.ActiveConnection = Cn
.CommandText = strSQL
.CommandType = adCmdText
For i = LBound(paramValue) To UBound(paramValue)
.Parameters.Append .CreateParameter("ChemID", GetParameterType(paramValue(i)), adParamInput, Len(Nz(paramValue(i), " ")), paramValue(i))
Next i
Set getLOTSRSTparam = .Execute
End With
End Function
Я буду использовать эту функцию по многим причинам и для большого количества запросов, однако, возвращенный набор записей ADODB получает ошибку, когда используется как reocrdset формы.
strSQL = "SELECT * FROM Person WHERE person.firstname LIKE ? AND person.lastname LIKE ? Order by person.lastname asc, person.firstname asc"
Dim arrValue As Variant
Dim qStrLastName As String
Dim qStrFirstName As String
qStrLastName = strLastName & "%"
qStrFirstName = strFirstName & "%"
arrValue = Array(qStrFirstName, qStrLastName)
Set lotsRS = getLOTSRSTparam(strSQL, arrValue)
If lotsRS.EOF Then
MsgBox "No patients found, try again", vbExclamation, "Error"
Forms!frmMediDrop.NavigationSubform.Form.txtpatient.SetFocus
DoCmd.Close acForm, "frmPxSearch"
Exit Sub
Else
Do Until lotsRS.EOF
Debug.Print lotsRS!firstName & " " & lotsRS!lastName
lotsRS.MoveNext
Loop
Set Me.subfrmPxSearchList.Form.Recordset = lotsRS
end if
Как вы можете видеть, я выполняю l oop и отлаживаю, и да, набор записей возвращается, так как все имена всплывают в ближайшем окне ... однако, когда я добираюсь до последней строки, я получаю:
Введенный вами объект не является допустимым свойством Recordset (7965)
Я не знаю, куда отсюда go, так как у меня больше опыта работы с наборами записей DAO, однако они не могут иметь параметризованные запросы с использованием MYSQL и ODB C passthrough.
Любой совет был бы великолепен, спасибо