Отчеты на основании запроса

igor701
Дата: 12.11.2009 13:09:22
Private Sub Êíîïêà54_Click()
Dim strSQL As String
DoCmd.OpenReport "otc_Otchet po Otpravitely", acViewPreview, Reports![otc_Otchet po Otpravitely]![P_otc_Proplati po datam]![Data proplati]Between Me.[Ïîëå33] , Me.[Ïîëå35] AND Reports![otc_Otchet po Otpravitely]![P_otc_Otgruzki po datam Otpravitel]![Data otgruzki]Between Me.[Ïîëå33] , Me.[Ïîëå35]AND Me.[Kod_Clients]=[Kod_Otpravitelia], "", acNormal

End Sub
Пишет ошибка синтеза
Вообще надо открыть отчет с двумя подочетами чтоб Главный открылся по условию отбора код клиента а подочеты отфильтровались по дате как сделать незнаю. помогите.
Владимир Саныч
Дата: 12.11.2009 13:41:43
Не синтеза, а синтаксиса. Условие для фильтра надо передавать как стринг, чтобы сам отчет его проверял для каждой записи, а не вычислять один раз перед открытием отчета, как делаете Вы.
Rivkin Dmitry
Дата: 12.11.2009 13:54:28
Один из вариантов: пишем процедуры на открытии каждого подотчета и самого отчета. В процедурах составляем запрос для отчета (саботчета). Например,
В самом отчете:
Private Sub Report_Open(Cancel As Integer)
    Me.Recordsource = "select ID, fld1, fld2, ... from MyTbl1 where id_klient = " & Forms!MainForm.cbClients

В сабах свои процедуры:
Private Sub Report_Open(Cancel As Integer)
Me.Recordsource = "select .... from tbl1 where Dt1 between '" & Forms!MainForm.Dt1 & "' and '" & Forms!MainForm.Dt2 & "'"
End Sub

Private Sub Report_Open(Cancel As Integer)
    Me.Recordsource = "select .... from tbl2 where Dt1 between '" & Forms!MainForm.Dt1 & "' and '" & Forms!MainForm.Dt2 & "'"
End Sub
Могут быть и другие, более эффективные варианты. Зависит от задачи