Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос с двумя параметрами / 25 сообщений из 28, страница 1 из 2
29.03.2016, 12:11
    #39203041
Ser Artur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с двумя параметрами
В топике http://www.sql.ru/forum/1206911/eksport-poley-zaprosa-v-list-eexcel был вопрос про экспорт в Excel.
Задачка была решена при помощи добрых людей. Создал я макросом код для экспорта в Excel который берет 2 заданные даты из формы, формирует отчет и экспортирует данные из ЗАПРОСА по начальными и конечными датами в Excel.
Teперь получается что надо еще и по филиалам, то есть:
- если на форме ReportTotal, в поле Filial выбрать филиал А то отчет выводил только Баланс по датам и филиалу
- если ничего не брать то выводил суммированный отчет по датам без филиалов








"Бухгалтера можно уподобить пчеловоду, ибо от его труда - учетной информации - извлекают пользу очень многие, но трудится он один. М.Ф. Ван Бреда"
...
Рейтинг: 0 / 0
29.03.2016, 12:19
    #39203055
Ser Artur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с двумя параметрами
Решение моего предыдущего топика таков
Код: vbnet
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.
Private Sub Command23_Click()
    Dim Amsativ, a, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 As Variant
    Dim p, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 As Variant
    Dim db As DAO.Database
    Dim rst, rst1 As DAO.Recordset
    Dim qdf, qdf1 As DAO.QueryDef
    Dim prm As Parameter
    Dim objXL As Object
    Dim objWB As Object
    Dim objWS As Object
    FileCopy "C:\Templates\FORM1.xlsx", "C:\Templates\Balance.xlsx"

    Set objXL = CreateObject("Excel.Application")
    Set objWB = objXL.Workbooks.Open("C:\Templates\Balance.xlsx")
    Set objWS = objWB.Worksheets("Balance_Total")
    objXL.Visible = True

    Set db = CurrentDb
    Set qdf = db.QueryDefs("QueryTotalEnd")
    Set qdf1 = db.QueryDefs("QueryTotalStart")
    
    For Each prm In qdf.Parameters
        Debug.Print prm.Name
        prm.Value = Eval(prm.Name)
    Next prm
    Set rst = qdf.OpenRecordset(dbOpenDynaset)
rst.MoveLast
rst.MoveFirst

a = rst("SumOfA_001")
a1 = rst("SumOfA_005")
a2 = rst("SumOfA_007")
a3 = rst("SumOfA_011")
a4 = rst("SumOfA_019")
a5 = rst("SumOfA_020")
a6 = rst("SumOfA_022")
a7 = rst("SumOfA_023")
a8 = rst("SumOfA_024")
a9 = rst("SumOfA_025")
a10 = rst("SumOfA_026")
a11 = rst("SumOfA_027")
a12 = rst("SumOfA_029")
a13 = rst("SumOfA_030")
a14 = rst("SumOfA_031")
a15 = rst("SumOfA_034")
a16 = rst("SumOfA_035")
p = rst("SumOfP_043")
p1 = rst("SumOfP_044")
p2 = rst("SumOfP_045")
p3 = rst("SumOfP_051")
p4 = rst("SumOfP_052")
p5 = rst("SumOfP_053")
p6 = rst("SumOfP_054")
p7 = rst("SumOfP_058")
p8 = rst("SumOfP_059")
p9 = rst("SumOfP_060")
p10 = rst("SumOfP_061")
p11 = rst("SumOfP_062")
p12 = rst("SumOfP_064")
p13 = rst("SumOfP_067")
p14 = rst("SumOfP_070")

With objWS
.Cells(32, 3).Value = a
.Cells(33, 3).Value = a
.Cells(34, 3).Value = a1 + a2
.Cells(35, 3).Value = a1
.Cells(36, 3).Value = a2
.Cells(37, 3).Value = a3 + a4 + a5 + a6 + a7
.Cells(38, 3).Value = a3
.Cells(39, 3).Value = a4
.Cells(40, 3).Value = a5
.Cells(41, 3).Value = a6
.Cells(42, 3).Value = a7
.Cells(43, 3).Value = a8 + a9 + a10 + a11 + a12 + a13
.Cells(44, 3).Value = a8
.Cells(45, 3).Value = a9
.Cells(46, 3).Value = a10
.Cells(47, 3).Value = a11
.Cells(48, 3).Value = a12
.Cells(49, 3).Value = a13
.Cells(50, 3).Value = a14 + a15 + a16
.Cells(51, 3).Value = a14
.Cells(52, 3).Value = a15
.Cells(53, 3).Value = a16
.Cells(54, 3).Value = a + a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + a11 + a12 + a13 + a14 + a15 + a16
.Cells(32, 8).Value = p + p1 + p2
.Cells(33, 8).Value = p
.Cells(34, 8).Value = p1
.Cells(35, 8).Value = p2
.Cells(36, 8).Value = p3 + p4 + p5 + p6
.Cells(37, 8).Value = p3
.Cells(38, 8).Value = p4
.Cells(39, 8).Value = p5
.Cells(40, 8).Value = p6
.Cells(41, 8).Value = p7 + p8 + p9 + p10 + p11 + p12 + p13 + p14
.Cells(42, 8).Value = p7
.Cells(43, 8).Value = p8
.Cells(44, 8).Value = p9
.Cells(45, 8).Value = p10
.Cells(46, 8).Value = p11
.Cells(47, 8).Value = p12
.Cells(48, 8).Value = p13
.Cells(49, 8).Value = p14
.Cells(50, 8).Value = p + p1 + p2 + p3 + p4 + p5 + p6 + p7 + p8 + p9 + p10 + p11 + p12 + p13 + p14
End With

For Each prm In qdf1.Parameters
        Debug.Print prm.Name
        prm.Value = Eval(prm.Name)
    Next prm
    Set rst1 = qdf1.OpenRecordset(dbOpenDynaset)
rst1.MoveLast
rst1.MoveFirst
Amsativ = rst1("Amsativ")
a = rst1("SumOfA_001")
a1 = rst1("SumOfA_005")
a2 = rst1("SumOfA_007")
a3 = rst1("SumOfA_011")
a4 = rst1("SumOfA_019")
a5 = rst1("SumOfA_020")
a6 = rst1("SumOfA_022")
a7 = rst1("SumOfA_023")
a8 = rst1("SumOfA_024")
a9 = rst1("SumOfA_025")
a10 = rst1("SumOfA_026")
a11 = rst1("SumOfA_027")
a12 = rst1("SumOfA_029")
a13 = rst1("SumOfA_030")
a14 = rst1("SumOfA_031")
a15 = rst1("SumOfA_034")
a16 = rst1("SumOfA_035")
p = rst1("SumOfP_043")
p1 = rst1("SumOfP_044")
p2 = rst1("SumOfP_045")
p3 = rst1("SumOfP_051")
p4 = rst1("SumOfP_052")
p5 = rst1("SumOfP_053")
p6 = rst1("SumOfP_054")
p7 = rst1("SumOfP_058")
p8 = rst1("SumOfP_059")
p9 = rst1("SumOfP_060")
p10 = rst1("SumOfP_061")
p11 = rst1("SumOfP_062")
p12 = rst1("SumOfP_064")
p13 = rst1("SumOfP_067")
p14 = rst1("SumOfP_070")

With objWS
.Cells(14, 1).Value = Amsativ
.Cells(32, 4).Value = a
.Cells(33, 4).Value = a
.Cells(34, 4).Value = a1 + a2
.Cells(35, 4).Value = a1
.Cells(36, 4).Value = a2
.Cells(37, 4).Value = a3 + a4 + a5 + a6 + a7
.Cells(38, 4).Value = a3
.Cells(39, 4).Value = a4
.Cells(40, 4).Value = a5
.Cells(41, 4).Value = a6
.Cells(42, 4).Value = a7
.Cells(43, 4).Value = a8 + a9 + a10 + a11 + a12 + a13
.Cells(44, 4).Value = a8
.Cells(45, 4).Value = a9
.Cells(46, 4).Value = a10
.Cells(47, 4).Value = a11
.Cells(48, 4).Value = a12
.Cells(49, 4).Value = a13
.Cells(50, 4).Value = a14 + a15 + a16
.Cells(51, 4).Value = a14
.Cells(52, 4).Value = a15
.Cells(53, 4).Value = a16
.Cells(54, 4).Value = a + a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + a11 + a12 + a13 + a14 + a15 + a16
.Cells(32, 9).Value = p + p1 + p2
.Cells(33, 9).Value = p
.Cells(34, 9).Value = p1
.Cells(35, 9).Value = p2
.Cells(36, 9).Value = p3 + p4 + p5 + p6
.Cells(37, 9).Value = p3
.Cells(38, 9).Value = p4
.Cells(39, 9).Value = p5
.Cells(40, 9).Value = p6
.Cells(41, 9).Value = p7 + p8 + p9 + p10 + p11 + p12 + p13 + p14
.Cells(42, 9).Value = p7
.Cells(43, 9).Value = p8
.Cells(44, 9).Value = p9
.Cells(45, 9).Value = p10
.Cells(46, 9).Value = p11
.Cells(47, 9).Value = p12
.Cells(48, 9).Value = p13
.Cells(49, 9).Value = p14
.Cells(50, 9).Value = p + p1 + p2 + p3 + p4 + p5 + p6 + p7 + p8 + p9 + p10 + p11 + p12 + p13 + p14
End With

rst.Close
rst1.Close
Set rst = Nothing
Set rst1 = Nothing
Set objWB = Nothing

objXL.ScreenUpdating = True

'Do Until rst.EOF
'        MsgBox qdf.Name & " - " & rst!Amsativ
'    rst.MoveNext
'    Loop

End Sub


где в роли параметров служит
Код: vbnet
1.
2.
3.
4.
For Each prm In qdf1.Parameters
        Debug.Print prm.Name
        prm.Value = Eval(prm.Name)
    Next prm


Но как быть с ТРЕТИМ ПАРАМЕТРОМ если он будет равно НУЛЮ упс осенила мысль использовать OR Сейчас попробую
...
Рейтинг: 0 / 0
29.03.2016, 12:24
    #39203064
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с двумя параметрами
Ser Artur,

МОЖЕТ и базу выложите , где применяете этот запрос
цифровые данные могут быть условные, название желательно на русском
...
Рейтинг: 0 / 0
29.03.2016, 12:26
    #39203067
Ser Artur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с двумя параметрами
нет оператор OR не покатил выдает 0 или только по филиалу
...
Рейтинг: 0 / 0
29.03.2016, 12:35
    #39203077
Ser Artur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с двумя параметрами
Модератор: Вложение удалено.
...
Рейтинг: 0 / 0
29.03.2016, 12:36
    #39203078
Ser Artur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с двумя параметрами
Там файл FORM1 скопируйте в C:\Templates\
...
Рейтинг: 0 / 0
29.03.2016, 13:35
    #39203159
Запрос с двумя параметрами
Например...
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
If IsNull(Forms![ИмяФормы]![Филиал]) Then
    Set qdf = db.QueryDefs("QueryTotalEnd")
    Set qdf1 = db.QueryDefs("QueryTotalStart")
Else
    Set qdf = db.CreateQueryDef("", "SELECT * FROM QueryTotalEnd WHERE [Филиал] = " & Forms![ИмяФормы]![Филиал]) 'Это если "Филиал" - числовое поле, если текстовое, то добавить кавычки.
    Set qdf1 = ... 'аналогично
End If

Интересно, а чем у вас отличаются запросы?
...
Рейтинг: 0 / 0
29.03.2016, 13:53
    #39203185
Ser Artur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с двумя параметрами
1-й запрос на начальную дату 2-й на предыдущую. А что можно и одним запросом?????
...
Рейтинг: 0 / 0
29.03.2016, 13:55
    #39203187
Ser Artur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с двумя параметрами
блин не догадался сразу конечно же можно через if сейчас же попробую
...
Рейтинг: 0 / 0
29.03.2016, 14:03
    #39203198
Ser Artur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с двумя параметрами
Код: vbnet
1.
2.
 Set qdf = db.CreateQueryDef("", "SELECT * FROM QueryTotalEnd WHERE [Филиал] = " & Forms![ИмяФормы]![Филиал]) 'Это если "Филиал" - числовое поле, если текстовое, то добавить кавычки.
    Set qdf1 = ... 'аналогично


здесь указывать имя запроса?
Код: vbnet
1.
db.CreateQueryDef(""...
...
Рейтинг: 0 / 0
29.03.2016, 14:04
    #39203199
Ser Artur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с двумя параметрами
упс там же ясно видно имя запроса простите
...
Рейтинг: 0 / 0
29.03.2016, 14:12
    #39203212
Ser Artur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с двумя параметрами
запрос экспортирует первый филиал и на втором виснет
Код: vbnet
1.
Ошибка 2482 MS Access cannot the name ID_filial you entered the expression
...
Рейтинг: 0 / 0
29.03.2016, 14:22
    #39203229
Ser Artur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с двумя параметрами
A нет здесь другое
1 случай когда надо суммировать по датам не включая филиал например на 01.01.2016............01.04.2016
2 случай когда надо по филиалу и по датам например Филиал..........на 01.01.2016........01.04.2016
тогда не подходит
...
Рейтинг: 0 / 0
29.03.2016, 14:24
    #39203234
Ser Artur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с двумя параметрами
Вот файл
...
Рейтинг: 0 / 0
29.03.2016, 14:24
    #39203235
Ser Artur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с двумя параметрами
эээ
...
Рейтинг: 0 / 0
29.03.2016, 14:46
    #39203269
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с двумя параметрами
Ser Artur,

ВАМ видимо намного легче было бы работать с такой схемой(с поиском)
...
Рейтинг: 0 / 0
29.03.2016, 14:47
    #39203271
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с двумя параметрами
Ser Artur,
файл
...
Рейтинг: 0 / 0
29.03.2016, 15:15
    #39203304
Ser Artur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с двумя параметрами
Ну возможно легче но отчет же выадает толко выбранную дату а за предыдущую надо еще поискать и вывести на бумагу. Как то не правильно получается заморочек много.
...
Рейтинг: 0 / 0
29.03.2016, 15:17
    #39203307
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с двумя параметрами
Ser Artur,

итоги --не проблема
...
Рейтинг: 0 / 0
29.03.2016, 15:23
    #39203312
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с двумя параметрами
Ser Artur,

невозможно было понять схему ваших таблиц, а итоги понадобятся разные

сводные итоги

1кв2кв1полугодие3к4к2пгодфирма1фирма2фирма3

итоги по видам статей для всех
1кв2кв1полугодие3к4к2пгодст1ст2ст3

и еще 999 сочетаний
...
Рейтинг: 0 / 0
29.03.2016, 15:23
    #39203313
Ser Artur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с двумя параметрами
так что ли
Анатолий ( Киев )
Код: vbnet
1.
2.
Set qdf = db.CreateQueryDef("", "SELECT * FROM QueryTotalEnd WHERE [ID_filial] = " & Forms![ReportTotal]![Organization])
  Set qdf1 = db.CreateQueryDef("", "SELECT * FROM QueryTotalStart WHERE [ID_filial] = " & Forms![ReportTotal]![Organization])
...
Рейтинг: 0 / 0
29.03.2016, 15:32
    #39203321
Ser Artur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с двумя параметрами
Надо из этого получить
...
Рейтинг: 0 / 0
29.03.2016, 15:37
    #39203326
Ser Artur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с двумя параметрами
Вот это
...
Рейтинг: 0 / 0
29.03.2016, 15:40
    #39203331
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с двумя параметрами
Ser Artur,
столбиков в аксесс может быть только 256 ---это вам не ексель
другие законы

и напечатать таблицу гармошкой тоже не получится(максимальная ширина отчета55 см)
...
Рейтинг: 0 / 0
29.03.2016, 15:45
    #39203336
Ser Artur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с двумя параметрами
я знаю поэтому не хочется ее через отчет выводить, а что касается столбцов то там будет меньше 50
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос с двумя параметрами / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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