2017-07-31 38 views
0

私はAccessデータベースに接続するC#でASP.NETアプリケーションを作成していますが、今はレポートをPDFとしてエクスポートします。ここで私のコードはAccessに接続するだけですが、私はアクセスマクロを実行したり、Microsoft.Office.Interop.Access.Application DoCmd.OutputToでコマンドを実行しようと考えていましたが、正確に使用する方法はわかりません。どんな助け?私は自動化と私の問題を解決しAccessレポートをPDF形式でエクスポートする

string user = "myUser"; 
string pass = "myPass"; 
string host = "myHost"; 
OleDbConnection connection = new OleDbConnection(@"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = myPath"); 
string _command = ...; //I don't know what put here 

try 
{ 
    OleDbCommand command = new OleDbCommand(_command, connection); 
    command.CommandText = ...; //I don't know what put here 
    int temp = command.ExecuteNonQuery(); 
    Console.WriteLine("PDF created!"); 
} 
+0

あなたはここで間違ったパスにいます。レポートはPDFに印刷できますが、アプリケーションではなく、Accessデータベース(テーブル、クエリ、データマクロは処理しますが、レポート、フォーム、VBAおよび通常のマクロは処理しません)に接続するため、レポートをPDFに出力できます。これは、https://support.microsoft.com/en-us/help/317114/how-to-automate-microsoft-access-by-using-visual-cは、COMを使用してAccessアプリケーションを操作するための優れたスターターです、そしてデータベースではありません。しかし、Accessで最初に動作するPDFへの印刷物を取得してから、C#で実装しようとしてください。 –

+0

RDLCレポートを使用してみませんか?それはユーザーにプレビューせずにPDFまたは他のフォーマットとしてレポートをエクスポートするための内蔵機能を提供します。 –

+0

ありがとうございます、私は自動化Accessを検索しますが、私はRDLCレポートが何であるか分かりませんし、Accessでどのように使用するのか分かりません。 –

答えて

0

、私はこのhttps://support.microsoft.com/en-us/help/317114/how-to-automate-microsoft-access-by-using-visual-cに続く(エリック・フォン・Asmuthによって私を提案し)、今私はPDFで私のレポートをエクスポートすることができます。私のコードは今すぐ:

using Microsoft.Office.Interop.Access; 

Application access = new Microsoft.Office.Interop.Access.Application(); 
access.OpenCurrentDatabase(@"C:\Desktop\MyDB.accdb", false); 

access.DoCmd.OutputTo(AcOutputObjectType.acOutputReport, 
    "Dati", //ReportName 
    ".pdf", //OutputType 
    @"C:\Desktop\Test.pdf", //outupuFile 
    System.Reflection.Missing.Value, 
    System.Reflection.Missing.Value, 
    System.Reflection.Missing.Value, 
    AcExportQuality.acExportQualityPrint 
); 
関連する問題