Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Отчеты за определенный промежуток времяни / 6 сообщений из 6, страница 1 из 1
24.01.2005, 11:03:14
    #32879469
Deliya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчеты за определенный промежуток времяни
Утро доброе всем!

Есть таблица Проекты, в ней, по мимо всего разного, есть столбцы: Начальная дата проекта и Дата окончания.
Подскажите как зделать отчет, так чтобы перед выводом его на экран, появлялся запросик, в который можно было бы вводить промежуток дат за который надо быдать список действующих проектов... Например с 01.02.2005 по 01.06.2005 и отчет выдает только проекты Начальная или Конечная дата которых поподает в Этот промежуток. Но чтобы промежутки можно было задовать разные, и без особых хлопот...

То же самое и с ценой если перед открытием отчета задавать промежуток цены, например 120000 и 250000 и получить проекты стоимость которых попадает в этот промежутом....

У кого есть время, прошу подсказать. Если что не понятно я поясню...
Спасибо!
...
Рейтинг: 0 / 0
24.01.2005, 11:10:53
    #32879489
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчеты за определенный промежуток времяни
Сделать форму, разместив на ней все условия выбора. При нажатии сформировать условие WHERE в виде строки и открыть отчет.
...
Рейтинг: 0 / 0
24.01.2005, 11:44:55
    #32879598
Deliya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчеты за определенный промежуток времяни
А можно мне как-нить выслать эту формочку.... Я там покапаюсь :)
...
Рейтинг: 0 / 0
24.01.2005, 11:52:02
    #32879623
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчеты за определенный промежуток времяни
Отчего же нет, ежели настаиваете. Единственное, что она связана я другими формами и отчетами, выковырять ее из приложения невозможно. В остальном - ковыряейтесь.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
418.
419.
420.
421.
422.
423.
424.
425.
426.
427.
428.
429.
430.
431.
432.
433.
434.
435.
436.
437.
438.
439.
440.
441.
442.
443.
444.
445.
VERSION  1 . 0  CLASS
BEGIN
  MultiUse = - 1   'True
END
Attribute VB_Name = "Form_dlgPersonReportOption"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Compare Database
Option Explicit

Public bPrintOK
Public iPersonID

Dim tbl As Form_tblPerson
Dim gr As Form_grPerson
Dim sFrom As String, sWhere As String, sOrderBy As String
Dim sRecordsource As String

Private Sub Form_Open(Cancel As Integer)

    Set tbl = Forms("tblPerson")
    Set gr = tbl.grPerson.Form
    
    Me!iMonth.Enabled = False
    Me!nDays.Enabled = False
    Me!iDayFrom.Enabled = False
    Me!iMonthFrom.Enabled = False
    Me!iDayTo.Enabled = False
    Me!iMonthTo.Enabled = False
    Me!bPrintAge = True
    Me!nPersonAge =  8 
    If Month(Now) =  12  Then
        Me!iMonth =  1 
    Else
        Me!iMonth = Month(Now) +  1 
    End If
    Me!iMonthFrom = Month(Now)
    Me!iDayFrom =  1 
    Me!iMonthTo = Month(Now)
    Me!iDayTo = DFirst("nDays", "tbMonth", "iMonth=" & CStr(Me!iMonthTo))
    
    Me!optPrintFilter1.Enabled = False
    Me!optPrintFilter =  2 
    If Len(Me.OpenArgs) >  0  Then
        iPersonID = CInt(Me.OpenArgs)
        Me!optPrintFilter1.Enabled = True
        Me!optPrintFilter =  1 
    End If

End Sub

Private Sub optPrintFilter_AfterUpdate()

    Me!nDays.Enabled = False
    Me!iMonth.Enabled = False
    Me!iDayFrom.Enabled = False
    Me!iMonthFrom.Enabled = False
    Me!iDayTo.Enabled = False
    Me!iMonthTo.Enabled = False
    If Me!optPrintFilter =  3  Then
        Me!iMonth.Enabled = True
        Me!iMonth.SetFocus
    ElseIf Me!optPrintFilter =  6  Then
        Me!nDays.Enabled = True
        Me!nDays.SetFocus
    ElseIf Me!optPrintFilter =  7  Then
        Me!iDayFrom.Enabled = True
        Me!iMonthFrom.Enabled = True
        Me!iDayTo.Enabled = True
        Me!iMonthTo.Enabled = True
        Me!iDayFrom.SetFocus
    End If
    
End Sub

Private Sub iDayFrom_AfterUpdate()

    If IsNull(Me!iDayFrom) Then
        Exit Sub
    End If
    If CInt(Me!iDayFrom) <  1  Then
        Beep
        MsgBox _
            "Неправильно задана дата ""от"".", _
            vbExclamation + vbOKOnly
        Me!iDayFrom =  1 
        Exit Sub
    End If
    If _
        Not IsNull(Me!iMonthFrom) And _
        CInt(Me!iDayFrom) > DFirst("nDays", "tbMonth", "iMonth=" & CInt(Me!iMonthFrom)) _
    Then
        Beep
        MsgBox _
            "Неправильно задана дата ""от"".", _
            vbExclamation + vbOKOnly
        Me!iDayFrom.SetFocus
        Exit Sub
    End If
    If _
        Not IsNull(Me!iMonthTo) And _
        Not IsNull(Me!iDayTo) And _
        Not IsNull(Me!iMonthFrom) And _
        Me!iMonthFrom = Me!iMonthTo And CInt(Me!iDayFrom) > CInt(Me!iDayTo) _
    Then
        Beep
        MsgBox _
            "Дата ""от"" должна предшествовать дате ""до"" .", _
            vbExclamation + vbOKOnly
        Me!iDayFrom.SetFocus
        Exit Sub
    End If

End Sub

Private Sub iDayTo_AfterUpdate()

    If IsNull(Me!iDayTo) Then
        Exit Sub
    End If
    If CInt(Me!iDayTo) <  1  Then
        Beep
        MsgBox _
            "Неправильно задана дата ""от"".", _
            vbExclamation + vbOKOnly
        Me!iDayTo =  1 
        Exit Sub
    End If
    If _
        Not IsNull(Me!iMonthTo) And _
        CInt(Me!iDayTo) > DFirst("nDays", "tbMonth", "iMonth=" & CStr(Me!iMonthTo)) _
    Then
        Beep
        MsgBox _
            "Неправильно задана дата ""от"".", _
            vbExclamation + vbOKOnly
        Me!iDayTo.SetFocus
        Exit Sub
    End If
    If _
        Not IsNull(Me!iMonthFrom) And _
        Not IsNull(Me!iDayFrom) And _
        Not IsNull(Me!iMonthTo) And _
        CInt(Me!iMonthFrom) = CInt(Me!iMonthTo) And CInt(Me!iDayFrom) > CInt(Me!iDayTo) _
    Then
        Beep
        MsgBox _
            "Дата ""от"" должна предшествовать дате ""до"" .", _
            vbExclamation + vbOKOnly
        Me!iDayTo.SetFocus
        Exit Sub
    End If

End Sub

Private Sub iMonthFrom_AfterUpdate()
    
    If IsNull(Me!iDayFrom) Then
        Me!iDayFrom =  1 
    End If
    If _
        CInt(Me!iDayFrom) > DFirst("nDays", "tbMonth", "iMonth=" & CInt(Me!iMonthFrom)) _
    Then
        Me!iDayFrom = DFirst("nDays", "tbMonth", "iMonth=" & CInt(Me!iMonthFrom))
        Beep
        MsgBox _
            "Неправильно задана дата ""до"".", _
            vbExclamation + vbOKOnly
    End If
    If Not IsNull(Me!iMonthTo) And CInt(Me!iMonthFrom) > CInt(Me!iMonthTo) Then
        Beep
        MsgBox _
            "Дата ""от"" должна предшествовать дате ""до"" .", _
            vbExclamation + vbOKOnly
        Me!iDayTo.SetFocus
        Exit Sub
    End If
    If _
        Not IsNull(Me!iMonthFrom) And Not IsNull(Me!iDayFrom) And _
        Not IsNull(Me!iMonthTo) And Not IsNull(Me!iDayTo) And _
        ( _
            CInt(Me!iMonthFrom) > CInt(Me!iMonthTo) Or _
            CInt(Me!iMonthFrom) = CInt(Me!iMonthTo) And CInt(Me!iDayFrom) > CInt(Me!iDayTo) _
        ) _
    Then
        Beep
        MsgBox _
            "Дата ""от"" должна предшествовать дате ""до"" .", _
            vbExclamation + vbOKOnly
        Me!iDayTo.SetFocus
        Exit Sub
    End If

End Sub

Private Sub iMonthTo_AfterUpdate()

    If IsNull(Me!iDayTo) Then
        Me!iDayTo = DFirst("nDays", "tbMonth", "iMonth=" & CStr(Me!iMonthTo))
    End If
    If _
        CInt(Me!iDayTo) > DFirst("nDays", "tbMonth", "iMonth=" & CStr(Me!iMonthTo)) _
    Then
        Beep
        MsgBox _
            "Неправильно задана дата ""до"".", _
            vbExclamation + vbOKOnly
    End If
    If Not IsNull(Me!iMonthTo) And CInt(Me!iMonthFrom) > CInt(Me!iMonthTo) Then
        Beep
        MsgBox _
            "Дата ""от"" должна предшествовать дате ""до"" .", _
            vbExclamation + vbOKOnly
        Me!iDayTo.SetFocus
        Exit Sub
    End If
    If _
        Not IsNull(Me!iMonthFrom) And Not IsNull(Me!iDayFrom) And _
        Not IsNull(Me!iMonthTo) And Not IsNull(Me!iDayTo) And _
        ( _
            CInt(Me!iMonthFrom) > CInt(Me!iMonthTo) Or _
            CInt(Me!iMonthFrom) = CInt(Me!iMonthTo) And CInt(Me!iDayFrom) > CInt(Me!iDayTo) _
        ) _
    Then
        Beep
        MsgBox _
            "Дата ""от"" должна предшествовать дате ""до"" .", _
            vbExclamation + vbOKOnly
        Me!iDayTo.SetFocus
        Exit Sub
    End If

End Sub

Private Sub bPrintAge_AfterUpdate()
    If Me!bPrintAge Then
        Me!nPersonAge.Enabled = True
    Else
        Me!nPersonAge.Enabled = False
    End If
End Sub

Private Sub btnOK_Click()
On Error GoTo Err_Label

    If Me!optPrintFilter =  3  Then
        If IsNull(Me!iMonth) Then
            Beep
            MsgBox _
                "Для отбора по условиям заданния месяца " & _
                "выберите любой месяц из списка", _
                vbExclamation + vbOKOnly
            Me!iMonth.SetFocus
            Exit Sub
        End If
    End If
    If Me!optPrintFilter =  6  Then
        If Not IsNull(Me!nDays) Then
            If IsNumeric(Me!nDays) Then
                If CInt(Me!nDays) >=  0  And CInt(nDays) <=  366  Then
                    GoTo FILTER_OK
                End If
            End If
        End If
        Beep
        MsgBox _
            "Для отбора по условиям даты задайте число дней.", _
            vbExclamation + vbOKOnly
        Me!nDays.SetFocus
        Exit Sub
    End If
    If Me!optPrintFilter =  7  Then
        If _
            IsNull(Me!iMonthFrom) Or IsNull(Me!iDayFrom) Or _
            IsNull(Me!iMonthTo) Or IsNull(Me!iDayTo) _
        Then
            Beep
            MsgBox _
                "Для отбора по условиям диапазона дат задайте даты от и до.", _
                vbExclamation + vbOKOnly
            Exit Sub
        End If
        If _
            CInt(Me!iDayFrom) <  1  Or _
            CInt(Me!iDayFrom) > DFirst("nDays", "tbMonth", "iMonth=" & CInt(Me!iMonthFrom)) _
        Then
            Beep
            MsgBox _
                "Неправильно задана дата ""от"".", _
                vbExclamation + vbOKOnly
            Exit Sub
        End If
        If _
            CInt(Me!iDayTo) <  1  Or _
            CInt(Me!iDayTo) > DFirst("nDays", "tbMonth", "iMonth=" & CStr(Me!iMonthTo)) _
        Then
            Beep
            MsgBox _
                "Неправильно задана дата ""до"".", _
                vbExclamation + vbOKOnly
            Exit Sub
        End If
        If _
            Me!iMonthFrom > Me!iMonthTo Or _
            Me!iMonthFrom = CInt(Me!iMonthTo) And CInt(Me!iDayFrom) > CInt(Me!iDayTo) _
        Then
            Beep
            MsgBox _
                "Дата ""от"" должна предшествовать дате ""до"" .", _
                vbExclamation + vbOKOnly
            Exit Sub
        End If
    End If
    If Me!bPrintAge Then
        If IsNull(Me!nPersonAge) Then
            Beep
            MsgBox _
                "Для включения возрастных ограничений задайте минимальный возраст, " & _
                "начиная с которого клиент будет попадать в список рассылки.", _
                vbExclamation + vbOKOnly
            Me!nPersonAge.SetFocus
            Exit Sub
        End If
    End If
    
FILTER_OK:
    
'   SELECT *
'   FROM qrPersonBirthdayAddress
'   WHERE
'       iPersonID=1 AND
'       nPersonAge>8 AND
'       bPersonIsVipClient=True
'   ORDER BY iMonth, iDay;
    
    sFrom = "qrPersonBirthdayAddress"
    sWhere = MakeWhere
    sOrderBy = MakeOrderBy
    sRecordsource = "SELECT * " & _
        "FROM " & sFrom & " " & _
        "WHERE " & sWhere & " " & _
        "ORDER BY " & sOrderBy
    DoCmd.OpenForm _
        "dlgPersonReportList", acNormal, , , _
        acFormEdit, acWindowNormal, sRecordsource
    Me.Visible = False
    Forms!dlgPersonReportList.SetFocus

EXIT_LABEL:
    Exit Sub

Err_Label:
    MsgBox Err.Description
    Resume EXIT_LABEL
    
End Sub

Private Sub btnCancel_Click()
On Error GoTo Err_Label

    DoCmd.Close acForm, Me.Name

EXIT_LABEL:
    Exit Sub

Err_Label:
    MsgBox Err.Description
    Resume EXIT_LABEL
    
End Sub

Public Function MakeWhere()

    Dim s As String: s = ""
    Dim i As Integer: i = Month(Now)
    
    Select Case optPrintFilter
    Case  1 
        s = "iPersonID=" & CStr(iPersonID)
    Case  2 
        s = ""
    Case  3 
        i = Me!iMonth
        s = "Month(dtPersonBirthday)=" & CStr(i)
    Case  4 
        i = Month(Now)
        s = "Month(dtPersonBirthday)=" & CStr(i)
    Case  5 
        i = Month(Now) +  1 : If i =  13  Then i =  1 
        s = "Month(dtPersonBirthday)=" & CStr(i)
    Case  6 
        nDays = CInt(Me!nDays)
        s = "nPersonBirthdayDiff<" & CStr(CInt(Me!nDays))
    Case  7 
        s = _
            "(" & _
                "iMonth=" & CInt(Me!iMonthFrom) & " AND " & _
                "iDay>=" & CStr(CInt(Me!iDayFrom)) & _
                " OR " & _
                "iMonth>" & CInt(Me!iMonthFrom) & _
            ") AND (" & _
                "iMonth=" & CStr(Me!iMonthTo) & " AND " & _
                "iDay<=" & CStr(CInt(CInt(Me!iDayTo))) & _
                " OR " & _
                "iMonth<" & CStr(Me!iMonthTo) & _
            ")"
    End Select
    
    If Me!bPrintAge Then
        If Len(s) >  0  Then
            s = s & " AND "
        End If
        s = s & "nPersonAge>" & CStr(Me!nPersonAge)
    End If
    If tbl.bPersonIsClient And Not tbl.bPersonIsVipClient Then
        If Len(s) >  0  Then
            s = s & " AND "
        End If
        s = s & "bPersonIsClient=True"
    End If
    If tbl.bPersonIsClient And tbl.bPersonIsVipClient Then
        If Len(s) >  0  Then
            s = s & " AND "
        End If
        s = s & "bPersonIsVipClient=True"
    End If
    
    MakeWhere = s

End Function

Public Function MakeOrderBy()

    Dim s As String: s = ""
    
    Select Case Me!optOrderBy
    Case  1 : s = "sPersonAlias, iMonth, iDay"
    Case  2 : s = "iMonth, iDay, sPersonAlias"
    End Select
    
    MakeOrderBy = s

End Function
...
Рейтинг: 0 / 0
24.01.2005, 12:24:01
    #32879718
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчеты за определенный промежуток времяни
2 Программист-Любитель
Имхо это можно было приложенным файлом сделать
Мышка скроллить устала
...
Рейтинг: 0 / 0
24.01.2005, 13:32:37
    #32879950
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчеты за определенный промежуток времяни
В следующий раз исправлюсь. Жалко нельзя собственные сообщения редактировать, как в некоторых форумах.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Отчеты за определенный промежуток времяни / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]