WebサーバーにAccessのインストールと設定
帳票定義、SQL Serverとの接続等があるので Office 2016 professional の x86x64対応版をWebサーバー(IIS)にインストールしてみた。
WebサーバーにAccessのインストールとバージョン確認
どちらがインストールされた?32ビット? 64ビット? 確認してみた
Accessを起動して「ファイル」「アカウント」から確認した
32ビット版だった。指定しなかったと思うがVisual Studio 2017が32ビットなのでその関係?
まず、ASP.NETなしのAccess単体では帳票設計 PDF印刷OK
帳票の元データは SQL Server 2012 EXPRESS にある。
Accessから ODBC接続でリンクテーブルを作成した。
PDF作成方法はフリーの「PDF24」というPDF作成ソフトをWEBサーバーにインストールして このPDFプリンターに対して印刷すれば印刷できる。
Access単体では問題なく帳票作成からPDFファイル作成印刷までOK。
次にVisual Studio 側の設定
ASP.NETからAccessの機能を使うには Visual Studio にCOM の参照設定が必要。
「プロジェクト」「プロパティ」「参照」「追加」「COM」で「参照マネージャー – プロジェクト名」を開く
AccessをインストールするとMicrofoft Office 関係の2つのライブラリーが追加された
「プロジェクト」「プロパティ」「参照」「追加」「COM」で「参照マネージャー – プロジェクト名」を開く
「Microsoft Access 16.0 Object Library」を追加
その他の4個のCOMも自動的に追加された。
PDF作成のコーディング(ASP.NET VB)
いよいよASP.NET側のプログラムコーディングだが、次のサイトを参考にさせていただいた。
Visual C# を使用して Microsoft Access を自動化する方法
実際に動作しているASP.NET(VB) のPDF作成保存部分のコード
Imports Microsoft.Office.Interop 'Access.Application Imports Microsoft.Office.Interop.Access 'Access.Application Imports System.Runtime.InteropServices 'Marshal.ReleaseComObject Public Class ASPNET-ACCESS-SAMPLE '////////////////////////////////// ' AccessレポートからPDF作成 '////////////////////////////////// Function SAMPLE() Dim oAccess As Access.Application = Nothing Try oAccess = New Access.Application oAccess.OpenCurrentDatabase("SAMPLE.accdb", False) oAccess.DoCmd.OutputTo(AcOutputObjectType.acOutputReport, RepName, ".pdf", "C:\PDFPATH\pdf_file", System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, AcExportQuality.acExportQualityPrint) Catch ex As Exception Debug.WriteLine(ex.Message) Finally Try oAccess.Quit(Access.AcQuitOption.acQuitSaveNone) Catch End Try Try Marshal.ReleaseComObject(oAccess) Catch ex As Exception End Try oAccess = Nothing End Try Catch ex As Exception End Try End Class
上の oAccess = New Access.Application でエラー
PDFファイルの保存に失敗する
試しにWindows Formアプリでは問題なく保存できる。それが webアプリケーションでは保存できない。webアプリケーションではセキュリティが高いので偽装アカウントを使用している。
対策:ファイル名を指定して実行 DCOMCNFG (GUI では「コンポーネントサービス」)
Accessの帳票設定
PDFプリンタのインストール(PDF24)
ここを見ると実行webサーバーのプリンタにADOBE PDFを設定してしなければならない、とある。有償のacrobatが必要とのこと。ライセンス的にacrobatのサーバー版が必要では?価格が!
他の開発でも実績のあるフリーの「PDF24」で代用する。
帳票の向きがおかしい
DoCmd.OutputTo でPDFファイルに出力したが AccessレポートがLANDSCAPE(横向き)で指定しても横向きにならない。
AccessインストールWEBサーバーにて「レポートデザイン ツール」「ページ設定」「ページ設定」「ページ」で「その他のプリンター」「プリンターの設定」をクリック
コメント