Суть проблемы:
Есть форма Access в которую выводяться данные. В одно из полей нужно подгрузить значение, которое считается через два запроса. Но т.к. через макрос - Задать значение этого сделать не получается (или я не знаю как правильно сделать) я пишу следующий код:
- Код: Выделить всё
Private Sub EmitNameCondin_AfterUpdate()
Dim rs, pt, pt1 As DAO.Recordset
Dim strSql, r1, ptSql, pSql, p1 As String
r1 = CStr([Forms]![PayTabInfo]![EmitNameCondin])
p1 = CStr([Forms]![MainForm]![TodayDate])
strSql = ("SELECT Securities.EmitNameCondin, Securities.Nominal, Securities.DateVipusk, Securities.DateEnd, " _
& "Securities.CurNominal, Securities.NumberReg FROM Securities WHERE (((Securities.EmitNameCondin)='" & [r1] & "'));")
Set rs = CurrentDb.OpenRecordset(strSql)
If rs.Fields("Nominal") <> 0 Then
Forms!PayTabInfo!Nominal = rs.Fields("Nominal")
Forms!PayTabInfo!SDate = rs.Fields("DateVipusk")
Forms!PayTabInfo!EDate = rs.Fields("DateEnd")
Forms!PayTabInfo!Cur = rs.Fields("CurNominal")
Forms!PayTabInfo!NumberReg = rs.Fields("NumberReg")
Forms!PayTabInfo!DateR = Forms!PayTabInfo!EDate - Forms!PayTabInfo!SDate
End If
pSql = ("SELECT PayTab.EmitNameCondin, PayTab.Pay_Date, PayTab.Pogash_Value " _
& "FROM PayTab GROUP BY PayTab.EmitNameCondin, PayTab.Pay_Date, PayTab.Pogash_Value " _
& "HAVING (((PayTab.EmitNameCondin)='" & [r1] & "') AND ((PayTab.Pay_Date)<= CVDate('" & [p1] & "')));")
Set pt1 = CurrentDb.OpenRecordset(pSql)
ptSql = ("SELECT pt1.Fields(EmitNameCondin), Max(pt1.Fields(Pay_Date) AS [Max-Pay_Date], " _
& "Sum(pt1.Fields(Pogash_Value) AS [SumPogash_Value], Securities.Nominal, Securities.Nominal-[Sum-Pogash_Value] AS Dlt " _
& "FROM Securities INNER JOIN pt1 ON Securities.EmitNameCondin = pt1.Fields(EmitNameCondin); " _
& "GROUP BY pt1.Fields(EmitNameCondin), Securities.Nominal;")
Set pt = CurrentDb.OpenRecordset(ptSql)
Forms!PayTabInfo!TNominal = pt.Fields("Dlt")
End Sub
pSql - это порвый запрос где идет выборка и группировка по полям.
ptSql - тот запрос в котором и делается расчетное значение. Построение он над первым запросом. Избавиться от первого не получается.
Так вот: подскажите как заставить всю эту конструкцию работать? То что я изобразил в "ptSql " это уже миллиоа попытка все запустить, но безрезультатная.
pt1.Fields(EmitNameCondin) - вот с этой конструкцией как я понимаю что-то нет так. Но как она должна быть написана правильно не знаю. Вот и прошу помощи.
Спасибо.