Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как в Report подпихнуть другой Recordset? / 15 сообщений из 15, страница 1 из 1
08.07.2021, 17:20
    #40082739
LightN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Report подпихнуть другой Recordset?
Код: 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.
Private Sub Report_Open(Cancel As Integer)
Dim Maas             ' Этот массив нужно положить в отчет
Dim I As Integer
Dim SS
Dim RS

Set RS = New Recordset

RS.CursorLocation = adUseClient
RS.Fields.Append "Cantry", adVarWChar, 30, adFldIsNullable
RS.Fields.Append "Deklar", adVarWChar, 30, adFldIsNullable
RS.Fields.Append "QTY", adInteger, adFldIsNullable
RS.Open
 
SS=fGTD(ID)
'Пришел ответ от функции:
'SS = "США;10702070/170620/0127862/46;1;Китай;10013160/271220/0758511;3;Корея;10702070/040421/0090244;3;"
 
Maas = Split(SS, ";", 1000)
    For I = LBound(Maas) To UBound(Maas) - 1 Step 3
     RS.AddNew
     RS.Fields(0) = Maas(I)
     RS.Fields(1) = Maas(I + 1)
     RS.Fields(2) = Int(Maas(I + 2))
    Next
'***************************
Set Me.Recordset = RS    '******
'***************************
End Sub


Как выкрутиться?
...
Рейтинг: 0 / 0
08.07.2021, 17:30
    #40082748
LightN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Report подпихнуть другой Recordset?
Код: sql
1.
Set Me.Recordset = RS  ' даёт ошибку ... 
...
Рейтинг: 0 / 0
08.07.2021, 18:13
    #40082761
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Report подпихнуть другой Recordset?
LightN
Как выкрутиться?
таким образом никак
...
Рейтинг: 0 / 0
08.07.2021, 18:45
    #40082764
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Report подпихнуть другой Recordset?
Код: vbnet
1.
Dim rstReport As Recordset 'в области определений модуля

Код: vbnet
1.
2.
3.
Private Sub Report_Open(Cancel As Integer)
 Set rstReport = CurrentDb.OpenRecordset("ИмяЗапросаДляОтчета") 'открываем рекордсет отчета
 End Sub

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Private Sub ОбластьДанных_Format(Cancel As Integer, FormatCount As Integer)
Dim intX As Integer
         For intX = 0 To 5'число столбцов rstReport-1
            Me("ctl" + Format(intX)) = rstReport(intX) 'задание значений полей в разделе
        Next intX
rstReport.MoveNext 'переход к следующей строке набора
End Sub

Как-то так.....
...
Рейтинг: 0 / 0
08.07.2021, 18:51
    #40082765
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Report подпихнуть другой Recordset?
удалено
...
Рейтинг: 0 / 0
08.07.2021, 18:53
    #40082766
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Report подпихнуть другой Recordset?
в отчете должно быть 6 свободных полей с именами сtl0...ctl5
...
Рейтинг: 0 / 0
08.07.2021, 19:37
    #40082769
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Report подпихнуть другой Recordset?
sdku
Как-то так.....
пробовал?
...
Рейтинг: 0 / 0
08.07.2021, 20:14
    #40082774
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Report подпихнуть другой Recordset?
Панург,
именно это нет- делалось для отчета с изменяемым к-вом столбцов(не указал что отчет перекрестный и может с ошибками "урезал"
Вот рабочий файл-а уж "допилить"
Спасение утопающих-дело рук самих утопающих
...
Рейтинг: 0 / 0
08.07.2021, 20:33
    #40082777
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Report подпихнуть другой Recordset?
sdku
именно это нет

Кстати, о птичках.
у нас в деревне был онологичный случай - поп с колокольни навернулся, два раза чирикнул, а колоши как новые.
...
Рейтинг: 0 / 0
08.07.2021, 20:41
    #40082778
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Report подпихнуть другой Recordset?
LightN, в твоём случае можно воспользоваться методом реализованным в "Отчёт 3" . Если не лень. И переводить твой массив в рекордсет ненужно, печатать можно из массива.
Но проще данные запихнуть в табличку и на ней организовать отчёт (первые два отчёта)
...
Рейтинг: 0 / 0
08.07.2021, 20:42
    #40082779
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Report подпихнуть другой Recordset?
что-то файл не приложился...
...
Рейтинг: 0 / 0
08.07.2021, 21:56
    #40082793
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Report подпихнуть другой Recordset?
Панург,
Я,в принципе, не понимаю чем,в данном случае, одномерный массив отличается от перекрестного запроса и зачем нужны "телодвижения" ТСа если все решается таким запросом (если надо с параметрами)
Может ТС или Вы поясните.
Кстати, создавать RS имеет смысл если в отчете переменное количество столбцов-иначе зачем ??
Сдуру опять приложил этот файл,а как удалить не знаю
...
Рейтинг: 0 / 0
09.07.2021, 07:06
    #40082830
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Report подпихнуть другой Recordset?
LightN,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
'Пришел ответ от функции:
'SS = "США;10702070/170620/0127862/46;1;Китай;10013160/271220/0758511;3;Корея;10702070/040421/0090244;3;"
 
Maas = Split(SS, ";", 1000)
    For I = LBound(Maas) To UBound(Maas) - 1 Step 3
       strSQL = strSQL & "select top 1 '" & Maas(I) & "' as Cantry, '" & _
                     Maas(I + 1) &"' as Deklar, " & _
                     Maas(I + 2) & " as QTY from [ЛюбаяНеПустаяТаблица] " 
       if I <= UBound(Maas) - 3 then strSQL = strSQL & "union all " 
    Next
'***************************
'Set Me.Recordset = RS    '******
Me.RecordSource = strSQL '******
'***************************
...
Рейтинг: 0 / 0
09.07.2021, 07:29
    #40082835
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Report подпихнуть другой Recordset?
court
Код: vbnet
1.
"union all "

есть ограничение на количество объединений, сколько не помню. но не очень много. И получишь - "Query is too complex"
...
Рейтинг: 0 / 0
12.07.2021, 10:47
    #40083318
LightN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Report подпихнуть другой Recordset?
court
LightN,
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
'Пришел ответ от функции:
'SS = "США;10702070/170620/0127862/46;1;Китай;10013160/271220/0758511;3;Корея;10702070/040421/0090244;3;"
 
Maas = Split(SS, ";", 1000)
    For I = LBound(Maas) To UBound(Maas) - 1 Step 3
       strSQL = strSQL & "select top 1 '" & Maas(I) & "' as Cantry, '" & _
                     Maas(I + 1) &"' as Deklar, " & _
                     Maas(I + 2) & " as QTY from [ЛюбаяНеПустаяТаблица] " 
       if I <= UBound(Maas) - 3 then strSQL = strSQL & "union all " 
    Next
'***************************
'Set Me.Recordset = RS    '******
Me.RecordSource = strSQL '******
'***************************


На практике - это то, что нужно!
Цикл крутится от 1-3 в 99% случаев. Случаи, когда цикл больше 5 уже большая редкость.
Поэтому Union решает. Сделать max число Union <10 и ОК.
Спасибо за решение !!!
Почему это не реализовано у MS, да ещё и за столько лет ... ?
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как в Report подпихнуть другой Recordset? / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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