powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Разворот отчета в VB
14 сообщений из 14, страница 1 из 1
Разворот отчета в VB
    #32138036
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть следующая идея: при малом количестве записей печатать отчет на формат А5, при больщом на формат А4. В первом случае размещаем два экземпляра отчета на одном листе А4, во втором на двух отдельных листах.
Вопрос: кто-нибуть пытался развернуть отчет с VB на лету ? На первый взгляд задача простая, но как оказалось возникают трудности...
Буду благодарен за любые предложения.
...
Рейтинг: 0 / 0
Разворот отчета в VB
    #32138041
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
У меня есть работающая программа, которая это делает. Но я до нее доеду только в воскресенье (как известно, в Израиле выходные пятница и суббота).
...
Рейтинг: 0 / 0
Разворот отчета в VB
    #32138043
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир Саныч, приятных Вам выходных. В выходные мне как правило приходят идеи, и как наступают будни, пробую воплотить их в жизнь. Отчеты мне в Accessе немножко не нравятся, что-то они по сравнению с формами кажутся более неуклюжими.
...
Рейтинг: 0 / 0
Разворот отчета в VB
    #32138046
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Там по сравнению с формами кое-что убрано, например TabOrder или AfterUpdate, что плавно вытекает из специфики отчета. И кое-что добавлено, например Grouping. А что именно Вам не нравится? Я другой такой среды не знаю, где отчеты давали бы столько возможностей.

А насчет разворачивания - идея следующая:

у отчета есть какое-то свойство структурного типа (как звать, не помню), и в нем один из элементов отвечает за Portrait/Landscape;


описывается своя переменная того же структурного типа, присваивается ей значение этого свойства, заменяется значение нужного элемента и присваивается обратно в свойство.
...
Рейтинг: 0 / 0
Разворот отчета в VB
    #32138336
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть там свойство Printer.Orientation (Portrait/Landscape), только после открытия отчета сменить его невозможно, да и со сменной источника данных в отчетах посложнее. В частности если создать отчет посредством
Set rpt=New Report, то в отличии от форм дальнейшие действия ограничены.
Что касается класического использования, то отчеты в Access действительно создаются легко при всех своих возможностях. Насчет событий, то в отчетах, к примеру, убрано события OnLoad.
...
Рейтинг: 0 / 0
Разворот отчета в VB
    #32138393
Хам трамвайный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Set rpt = Reports("Хамы")
With rpt.Printer
.BottomMargin = 2 * 567
.TopMargin = 1 * 567
.LeftMargin = 1 * 567
.RightMargin = 2 * 567
.PaperSize = acPRPSA3
End With
DoCmd.OpenReport "Хамы", acPreview
...
Рейтинг: 0 / 0
Разворот отчета в VB
    #32138404
Хам трамвайный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пардон, не докопировал

Dim rpt As Report
DoCmd.OpenReport "Хамы", acPreview, , , acHidden
Set rpt = Reports("Хамы")
With rpt.Printer
.BottomMargin = 2 * 567
.TopMargin = 1 * 567
.LeftMargin = 1 * 567
.RightMargin = 2 * 567
.PaperSize = acPRPSA3
End With
DoCmd.OpenReport "Хамы", acPreview
...
Рейтинг: 0 / 0
Разворот отчета в VB
    #32139002
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извините, незнаю как в "трамваях" принято благодарить.
Вот что получилось:

Код: plaintext
1.
2.
3.
4.
Dim rpt As Report
DoCmd.OpenReport  "Тест" , acPreview, , , acHidden
Set rpt = Reports( "Тест" )
rpt.Printer.Orientation = acPRORPortrait
DoCmd.OpenReport  "Тест" , acPreview
...
Рейтинг: 0 / 0
Разворот отчета в VB
    #32139489
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Вот то, что я имел в виду:

Код: 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.
Type str_DEVMODE
    RGB As String *  94 
End Type
Type type_DEVMODE
    strDeviceName As String *  16 
    intSpecVersion As Integer
    intDriverVersion As Integer
    intSize As Integer
    intDriverExtra As Integer
    lngFields As Long
    intOrientation As Integer
    intPaperSize As Integer
    intPaperLength As Integer
    intPaperWidth As Integer
    intScale As Integer
    intCopies As Integer
    intDefaultSource As Integer
    intPrintQuality As Integer
    intColor As Integer
    intDuplex As Integer
    intResolution As Integer
    intTTOption As Integer
    intCollate As Integer
    strFormName As String *  16 
    lngPad As Long
    lngBits As Long
    lngPW As Long
    lngPH As Long
    lngDFI As Long
    lngDFr As Long
End Type

Private Sub SwitchOrient(rpt As Report, bLandscape As Boolean)

Dim DevString As str_DEVMODE, DM As type_DEVMODE, strDevModeExtra As String

strDevModeExtra = rpt.PrtDevMode
DevString.RGB = strDevModeExtra
LSet DM = DevString
DM.lngFields = DM.lngFields Or DM.intOrientation
DM.intOrientation = IIf(bLandscape,  2 ,  1 )
LSet DevString = DM
Mid(strDevModeExtra,  1 ,  94 ) = DevString.RGB
rpt.PrtDevMode = strDevModeExtra

End Sub


P.S. Возможно, в новых версиях Аксесса это делается проще. :^)
...
Рейтинг: 0 / 0
Разворот отчета в VB
    #32139526
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, Саныч. Я пошел немножко по другому пути. Очень полезной оказалась возможность открыть отчет в скрытом окне. Возможно также открыть скрытый отчет в режиме конструктора, ну а там и карты в руки...
...
Рейтинг: 0 / 0
Разворот отчета в VB
    #32139633
Хам трамвайный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
окрывать отчет в режиме конснтруктора в mde файлах и устанавливать там параметры страницы вряд ли получится, а вот в А2002 уже задавать эти параметры можно и в mde безо всякого конструктора. Жизня меняется. Пора бы менять привычки.
...
Рейтинг: 0 / 0
Разворот отчета в VB
    #32140086
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, действительно, в MDE конструктор не катит.
...
Рейтинг: 0 / 0
Разворот отчета в VB
    #32140118
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так отлично работа в MDP:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Public Sub PrintDocument(Rpt_A5 As String)
Dim Rpt As Report
Dim tmpl As String
DoCmd.OpenReport Rpt_A5, acViewPreview, , , acHidden
If Reports(Rpt_A5).Страниц >  1  Then tmpl =  "tmpl_Portrait"  Else tmpl =  "tmpl_Landscape" 
DoCmd.Close acReport, Rpt_A5
DoCmd.OpenReport tmpl, acViewPreview, , , acHidden
Set Rpt = Reports(tmpl)
Rpt.Копия1.SourceObject =  "Отчет."  & Rpt_A5
Rpt.Копия2.SourceObject =  "Отчет."  & Rpt_A5
DoCmd.OpenReport tmpl, acViewNormal, , , acHidden
DoCmd.Close acReport, tmpl, acSaveNo
End Sub

где: tmpl_Portrait и tmpl_Landscape пустые заготовки с двумя подчиненными отчетами

Какие будут предложения по изменению, чтоб работало в MDE?
...
Рейтинг: 0 / 0
Разворот отчета в VB
    #32140375
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал и в MDE.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Разворот отчета в VB
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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