Utiliser un module Access via VB.NET [Résolu]

Shaegal 117 Messages postés vendredi 1 février 2008Date d'inscription 21 mars 2018 Dernière intervention - 31 août 2017 à 14:35 - Dernière réponse :  ShaeGal
- 13 sept. 2017 à 10:43
Bonjour à toutes et tous,

J'ai créé un module paramétré dans Access (VBA) et j'aimerai pouvoir l'utiliser/piloter via VB.NET.

Quelqu'un aurait-il une idée?

Merci par avance.
--
Afficher la suite 

Votre réponse

2 réponses

OhmProd 1 Messages postés vendredi 10 juin 2016Date d'inscription 12 septembre 2017 Dernière intervention - 12 sept. 2017 à 19:45
0
Merci
Sois plus claire quel module ? Qui permet de ?

RS
Commenter la réponse de OhmProd
0
Merci
Bonjour ohmProd,

J'ai une BDD Access dans laquelle j'ai créé un état lié à une requête au sein même de la BDD.

Nous sommes une bonne dizaine à devoir accéder à cette BDD et le coût d'Access étant assez élevé, la direction à décidé que je serait le seul à l'avoir, d'où l'idée de passer par une application tierce que je développe sous VB Express 2012 (gratuit).

Donc, mon objectif était de pouvoir imprimer l'état (report) via VB grace à la commande DoCmd.OpenReport, mais je me suis heurté à l'impossibilité d'y passer un paramètre.

Après avoir posé la question ici même, j'ai continué mes recherches et j'ai trouvé un moyen détourné de passer mes paramètres dans la requête: passer par un module Access. Mais ils ne passaient toujours pas.
J'ai fini par trouver le moyen d'y arriver: réécrire la requête en dur dans Access par VB. Et là, tout fonctionne comme je le souhaitais.

Voici les codes.
Dans Access:
Sub ApercuAvancements(NumDos)
  req = "SELECT <champsl> from <table> WHERE ID_DOSSIERS = NumDos;"
  Set rq = CurrentDb.QueryDefs("requête Access")
  
  rq.SQL = Replace(req, "NumDos", NumDos)
  rq.Close
  CurrentDb.QueryDefs.Refresh
End Sub


Dans VB:
Dim appAccess As Object = CreateObject("Access.Application")
    Try
      appAccess.OpenCurrentDatabase(PathDBB)
      appAccess.Run("ApercuAvancements", CInt(_IdDossier))
      appAccess.DoCmd.OpenReport("Nom de l'état à imprimer")
      appAccess.visible = True
    Catch ex As Exception
      MsgBox(ex.Message, MsgBoxStyle.Exclamation)
    Finally
      appAccess.Quit()
      appAccess = Nothing
    End Try


Voilà l'astuce trouvée et qui fonctionne bien.

Je met résolu mais si quelqu'un connaît une façon plus simple et élégante, qu'il n'hésite pas à poster.

Merci.
Commenter la réponse de ShaeGal

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.