Bonjour,

J'ai un soucis avec la dll Interop.Access.

En effet, sous Access j'ai crée un état (report) afin de pouvoir imprimer mes données.

Dans mon code C# je dois ouvrir et modifier cet état pour y rajouter dynamiquement des champs textes,des cadres etc... J'ai donc pour cela intégré cette dll Access.

J'arrive à ouvrir mon état Access, à affecter des valeurs dans les champs,mais je n'arrive pas à créer de nouveaux champs.

Voici le code d'ouverture de l'état Access :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// Instance Access
Access.Application m_AccessApp = new Access.ApplicationClass();
 
// Ouverture de la BDD
DAO._DBEngine engine = m_AccessApp.DBEngine;
DAO.Database database = engine.OpenDatabase(...);
m_AccessApp.OpenCurrentDatabase(...);
 
// Ouverture de l'état
DoCmd accessCommand = m_AccessApp.DoCmd;
accessCommand.OpenReport("MonEtat", ...);
 
// Récupération du bon état
Access.Report dtcReport = null;
foreach(Access.Report currentReport in m_AccessApp.Reports) 
{ 
    if (currentReport.Name == reportName) 
    { 
        dtcReport = currentReport;
    } 
}
Tout ce code fonctionne par contre lorsque je veux ajouter un nouvel état, je tombe dans une exception COMException (Le type ne correspond pas).

Voici le code qui génère cette exception :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
// Création d'un TextBox Access à rattacher à mon état.
Access._Control newControl = m_AccessApp.CreateControl("MonEtat", Access.AcControlType.acTextBox, Access.AcSection.acDetail, dtcReport, null, left, top, width, height);
Si quelqu'un connaissant un peu l'interopérabilité avec Access peut m'aider, ce serait sympa.

Merci d'avance.