Utiliser un module Access via VB.NET

Résolu
Shaegal Messages postés 110 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 12 mai 2021 - 31 août 2017 à 14:35
 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.
--

2 réponses

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

RS
0
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.
0
Rejoignez-nous