Здравствуйте.
В базе данных имеется форма с некоторыми полями. Хочу открыть эту форму из другой (по нажатию соответствующей кнопки) и присвоить открытой форме рекордсет сформированный на основе значений полей в первой форме.
Код для рекордсета довольно громоздкий получился - но проверенный - отдельно как запрос работает.
Привожу код по нажатию кнопки в первой форме полностью (в том виде как есть на текущий момент), сильно можно не вникать, главное что в конце:
Private Sub btnCost_Click()
Dim rs As ADODB.Recordset
Dim dtDate As String
Dim strEquipment As String
Dim strCondition As String
Dim strSource As String
Dim strQry As String
strEquipment = Me.fldEquipment
dtDate = "#" & Month(Me.fldDate) & "/" & Day(Me.fldDate) & "/" & Year(Me.fldDate) & "#"
strCondition = "iEquipment =" & strEquipment & " And (dtDate <= " & dtDate & " Or IsNull(dtDate))"
If Me.gswMaxPriceDate = 1 Then
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open "SELECT iEquipment, QC.iComponent, iAssembly, dAmount, iItem, dKoef, iInvoice, dPrice, dCost, strNumber, dtDate, iSupplier " & _
"FROM qryCost as QC INNER JOIN " & _
"(SELECT iComponent, MAX(dtDate) as dt2Date " & _
"FROM qryCost " & _
"WHERE dtDate <= " & dtDate & _
"AND iEquipment = " & Me.fldEquipment & _
" GROUP BY iComponent " & _
")AS SQC " & _
"ON QC.iComponent = SQC.iComponent And QC.dtDate = SQC.dt2Date " & _
"UNION " & _
"SELECT iEquipment, iComponent, iAssembly, dAmount, iItem, dKoef, iInvoice, dPrice, dCost, strNumber, dtDate, iSupplier " & _
"FROM qryCost " & _
"WHERE iEquipment = " & Me.fldEquipment, CurrentProject.Connection, adOpenDynamic, adLockOptimistic
DoCmd.OpenForm "subCost", acFormDS, , , acFormReadOnly, acHidden
Set Forms("subCost").Recordset = rs
Forms("subCost").Visible = True
Set rs = Nothing
End If
End Sub
После открытия второй формы при попытке присвоить ей рекордсет, на строке
Set Forms("subCost").Recordset = rs
Акцесс вылетает. Подскажите пожалуйста, что я делаю не так?
Спасибо
http://www.sql.ru/forum/1235072/recordset-dlya-formy