powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как в Report подпихнуть другой Recordset?
15 сообщений из 15, страница 1 из 1
Как в Report подпихнуть другой Recordset?
    #40082739
LightN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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
Как в Report подпихнуть другой Recordset?
    #40082748
LightN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
Set Me.Recordset = RS  ' даёт ошибку ... 
...
Рейтинг: 0 / 0
Как в Report подпихнуть другой Recordset?
    #40082761
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LightN
Как выкрутиться?
таким образом никак
...
Рейтинг: 0 / 0
Как в Report подпихнуть другой Recordset?
    #40082764
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Как в Report подпихнуть другой Recordset?
    #40082765
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
удалено
...
Рейтинг: 0 / 0
Как в Report подпихнуть другой Recordset?
    #40082766
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в отчете должно быть 6 свободных полей с именами сtl0...ctl5
...
Рейтинг: 0 / 0
Как в Report подпихнуть другой Recordset?
    #40082769
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
Как-то так.....
пробовал?
...
Рейтинг: 0 / 0
Как в Report подпихнуть другой Recordset?
    #40082774
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург,
именно это нет- делалось для отчета с изменяемым к-вом столбцов(не указал что отчет перекрестный и может с ошибками "урезал"
Вот рабочий файл-а уж "допилить"
Спасение утопающих-дело рук самих утопающих
...
Рейтинг: 0 / 0
Как в Report подпихнуть другой Recordset?
    #40082777
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
именно это нет

Кстати, о птичках.
у нас в деревне был онологичный случай - поп с колокольни навернулся, два раза чирикнул, а колоши как новые.
...
Рейтинг: 0 / 0
Как в Report подпихнуть другой Recordset?
    #40082778
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LightN, в твоём случае можно воспользоваться методом реализованным в "Отчёт 3" . Если не лень. И переводить твой массив в рекордсет ненужно, печатать можно из массива.
Но проще данные запихнуть в табличку и на ней организовать отчёт (первые два отчёта)
...
Рейтинг: 0 / 0
Как в Report подпихнуть другой Recordset?
    #40082779
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что-то файл не приложился...
...
Рейтинг: 0 / 0
Как в Report подпихнуть другой Recordset?
    #40082793
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург,
Я,в принципе, не понимаю чем,в данном случае, одномерный массив отличается от перекрестного запроса и зачем нужны "телодвижения" ТСа если все решается таким запросом (если надо с параметрами)
Может ТС или Вы поясните.
Кстати, создавать RS имеет смысл если в отчете переменное количество столбцов-иначе зачем ??
Сдуру опять приложил этот файл,а как удалить не знаю
...
Рейтинг: 0 / 0
Как в Report подпихнуть другой Recordset?
    #40082830
Фотография 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 '******
'***************************
...
Рейтинг: 0 / 0
Как в Report подпихнуть другой Recordset?
    #40082835
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
court
Код: vbnet
1.
"union all "

есть ограничение на количество объединений, сколько не помню. но не очень много. И получишь - "Query is too complex"
...
Рейтинг: 0 / 0
Как в Report подпихнуть другой Recordset?
    #40083318
LightN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как в Report подпихнуть другой Recordset?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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