2017-07-31 8 views
0

Je crée une application ASP.NET en C# qui se connecte à une base de données Access et je souhaite maintenant qu'elle exporte un rapport au format PDF. Voici mon code qui se connecte uniquement à Access, je pensais lancer une macro d'accès ou exécuter une commande avec Microsoft.Office.Interop.Access.Application DoCmd.OutputTo mais je ne sais pas comment l'utiliser exactement. De l'aide?Exporter le rapport d'accès au format 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

Vous êtes sur la mauvaise voie ici. Vous pouvez imprimer des rapports au format PDF, mais vous ne pouvez pas accéder aux rapports à l'aide de OleDb car il se connecte à la base de données Access (qui gère les tables, requêtes et macros de données, mais pas les rapports, formulaires, VBA et macros normales). Cela: https://support.microsoft.com/en-us/help/317114/how-to-automate-microsoft-access-by-using-visual-c est un bon début sur l'utilisation de COM et fonctionne avec l'application Access et pas la base de données. Mais essayez d'abord d'imprimer l'impression au format PDF dans Access, puis essayez de l'implémenter en C#. –

+0

Pourquoi n'utilisez-vous pas le rapport RDLC? Il fournit une fonctionnalité intégrée pour exporter le rapport au format PDF ou autre format sans prévisualiser l'utilisateur. –

+0

Merci, je vais chercher à automatiser l'accès mais je ne sais pas ce qui est rapport RDLC et je ne sais pas comment l'utiliser avec Access. –

Répondre

0

Je résolu mon problème avec l'automatisation, je suivais ce https://support.microsoft.com/en-us/help/317114/how-to-automate-microsoft-access-by-using-visual-c (m'a suggéré par Erik von Asmuth) et maintenant je peux exporter mon rapport en format PDF. Mon code maintenant:

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 
);