2015-08-31 3 views
0

У меня есть вопрос относительно MS-Access. Я создаю отчет, основанный на материалах пользователя. Таким образом, новый отчет создается каждый раз, когда выполняется запрос (поскольку вход может измениться). Я хочу отформатировать мой отчет, чтобы я мог легко экспортировать его без редактирования.Форматирование динамических отчетов в MS-Access

То, что я хочу, чтобы достичь являются (среди прочего)

  1. Изменение размера отчет A3/A4, по горизонтали/вертикали
  2. переименовывать Auto_Title
  3. Маржа/Borders
  4. Column Width Авто размер.

Я нашел следующее link Но у меня нет доступа к отчету до его создания. Поэтому я в недоумении. Я создаю отчет, используя функцию acCmdNewObjectAutoReport. Есть ли другой подход, который я должен принять?

В настоящее время мое решение состоит в том, чтобы отформатировать отдельные отчеты после их создания, что является громоздким (существует более 20 возможных комбинаций .. также можно создать 20 возможных отчетов).

ответ

1

Посмотрите на VBA Printer Object. Вам потребуется динамически составлять отчет «на лету» после ввода пользователем для настройки параметров. Добавьте условное значение if/then или select/case для настройки.

Ниже открывает отчет в режиме конструктора в скрытом режиме:

DoCmd.OpenReport "reportName", acViewDesign, , , acHidden 

With Reports("reportName").Printer 

    .TopMargin = 1440  '1 inch = 1 * 1440 
    .BottomMargin = 1440 
    .LeftMargin = 1440 
    .RightMargin = 1440 

    .ColumnSpacing = 360 

    .Orientation = acPRORLandscape 'or acPRORPortrait 
    .PaperSize = acPRPSA4    'or acPRPSA3 

End With 

'Adjust to AutoTitle's control name 
Reports("reportName").LabelName.Caption = "New Title"  

'Saves new design 
DoCmd.Close acReport, "reportName", acSaveYes 

'Prints report 
DoCmd.OpenReport "reportName", acViewNormal