ник: dimonicss
Уже голову всю сломал, не пойму почему не работает.
Есть форма "ОтчетыПоЗаказам", в ней Список "ВыборВодителя", источник строк:
SELECT Водители.Водитель
FROM Водители
ORDER BY Водители.Водитель;
При выборе одной из записей жмем кнопку "Просмотр" или кнопку "Печать" - должен открыться отчет по Водителю. Если ни одной из строк не выбрано должен открыться отчет по всем Водителям.
Вот код закрепленный за формой.
Option Compare Database
Option Explicit
Sub ПечатьОтчетов(PrintMode As Integer)
On Error GoTo Err_Просмотр_Click
Dim strWhereCategory As String
strWhereCategory = "Водитель = [forms]![ОтчетыПоЗаказам]![ВыборВодителя]"
If IsNull([Data1]) Or IsNull([Data1]) Then
MsgBox "Необходимо ввести начальную и конечную даты."
DoCmd.GoToControl "Data1"
Exit Sub
Else
If [Data1] > [Data2] Then
MsgBox "Конечная дата должна превосходить начальную дату."
DoCmd.GoToControl "Data2"
Exit Sub
Else
Me.Visible = False
End If
End If
Select Case Me!ВыборТипа
Case 1
If IsNull(Forms![ОтчетыПоЗаказам]!ВыборВодителя) Then
DoCmd.OpenReport "ОтчетВодители", PrintMode
Else
DoCmd.OpenReport "ОтчетВодители", PrintMode, , strWhereCategory
End If
Case 2
DoCmd.OpenReport "ОтчетДиспетчера", PrintMode
Case 3
DoCmd.OpenReport "СлужебныеОтчеты", PrintMode
End Select
DoCmd.Close acForm, "ОтчетыПоЗаказам"
Exit_Просмотр_Click:
Exit Sub
Err_Просмотр_Click:
Resume Exit_Просмотр_Click
Private Sub Отмена_Click()
On Error GoTo Err_Отмена_Click
DoCmd.Close
Exit_Отмена_Click:
Exit Sub
Err_Отмена_Click:
MsgBox Err.Description
Resume Exit_Отмена_Click
End Sub
Private Sub Просмотр_Click()
ПечатьОтчетов acPreview
End Sub
Private Sub Печать_Click()
ПечатьОтчетов acNormal
End Sub
Private Sub ВыборТипа_AfterUpdate()
Const conSalesByCategory = 1
If Me!ВыборТипа.Value = conSalesByCategory Then
Me!ВыборВодителя.Enabled = True
Else
Me!ВыборВодителя.Enabled = False
End If
End Sub
Отчет открывается на основании запроса
SELECT Водители.Водитель, Заказы.ДатаПринятияЗак, [ГородОткудаЗак]+" "+[УлицаОткудаЗак]+" "+[ДомПодъездОткудаЗак] AS Откуда, [ГородКудаЗак]+" "+[РайонКудаЗак] AS Куда, Заказы.КоличПассЗак AS Чел, Заказы.ФормаНачЗак AS Форма, Заказы.ДиспетчерЗак AS Диспетчер
FROM Водители INNER JOIN Заказы ON Водители.Позывной = Заказы.ВодительЗак
WHERE (((Заказы.ДатаПринятияЗак)>=[forms]![ОтчетыПоЗаказам]![Data1] And (Заказы.ДатаПринятияЗак)<[forms]![ОтчетыПоЗаказам]![Data2]) AND ((Заказы.ПринятиеЗаказаЗак)=True) AND ((Заказы.ВыполнениеЗаказаЗак)=True))
ORDER BY Водители.Водитель, Заказы.ДатаПринятияЗак;
И при открытии запроса Водитель не передается из Формы в Отчет.
То ли здесь
DoCmd.OpenReport "ОтчетВодители", PrintMode, , strWhereCategory
что не так, то ли еще где.