IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Connaitre version Access


Sujet :

VB.NET

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2009
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Connaitre version Access
    Bonjour,

    j'ai un programme qui pilote Access. Le problème, c'est que ce n'est pas tous les postes qui ont Access et la même version. Je cherche une façon de savoir si
    A- Access est installé
    B- Si oui, quel version ?

    Merci de vos suggestion.

  2. #2
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut
    je voi pas l'intérêt....
    tu parle de Access que ce soit 2003 ou 2007,
    mais u va être obligé de travaillé avec une extension identique (.mbd de 2003) non?

    2007 va être également capable de travailler sur ce format, donc c'est bon

  3. #3
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2009
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Oui je comprend ce que tu dis, mais j'ai des problèmes de compatibilité entre les versions. Je développe sur un poste avec Access 2003. Pour automatiser access j'utilise la référence à Access 2003, un petit exemple:
    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
     
    Dim appAccess2003 As Microsoft.Office.Interop.Access.Application
     
            Try
                appAccess2003 = New Microsoft.Office.Interop.Access.Application
                IconeAccess2003.Image = My.Resources.AccessOn
                lblAccess2003.Text = appAccess2003.SysCmd(AcSysCmdAction.acSysCmdAccessVer)
                appAccess2003.Quit()
            Catch ex As Exception
                IconeAccess2003.Image = My.Resources.AccessOff
                lblAccess2003.Text = "Erreur"
                MessageBox.Show(ex.Message)
            Finally
                appAccess2003 = Nothing
            End Try
    quand je roule ce code sur un poste avec Access2007 j'ai le code d'erreur suivant :
    La récupération de la fabrique de la classe com ... à échoué en raison de l'erreur suivante : 80040154.
    Avant j'utilisais une liaison tardive pour contourner ces problèmes:

    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
     
    Dim LateAccess As Object
     
            Try
                LateAccess = CreateObject("Access.Application")
                IconeLateAccess.Image = My.Resources.AccessOn
                lblLateAccess.Text = LateAccess.SysCmd(AcSysCmdAction.acSysCmdAccessVer)
                LateAccess.Quit()
            Catch ex As Exception
                IconeLateAccess.Image = My.Resources.AccessOff
                lblLateAccess.Text = "Erreur"
                MessageBox.Show(ex.Message)
            Finally
                LateAccess = Nothing
            End Try
    encore une fois, sous 2007 j'ai l'erreur suivante :
    Impossible de créer le composant ActiveX.
    Les postes équipé de office2007 tourne sous Win7 version 64 bits, peut-être une source de mon problème? Si vous pouviez me remettre sur les rails, car j'ai l'impression de rouler dans la broussaille

  4. #4
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut
    ah ...

    ton poste équipé de Access 2003 tourne sur un OS 64 bit ?
    attention aux applications 32 bit et 64 bit *sa peut venir de la aussi ...*

    Quel méthode tu utilise pour te connecter a une Base?

  5. #5
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2009
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    voici la procedure ou ça coince
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    Public Sub PrintRapport(ByVal MonImprimante As String, ByVal CodeUsager As String, ByVal DateDebut As Date, ByVal DateFin As Date, Optional ByVal CodeClient As String = "", Optional ByVal TypeClient As String = "Tous")
     
            Dim objAccess As New Mon.Access9.Interop.Application
            objAccess.Visible = False
            Try
                objImprimante.ImprimanteParDefaut = MonImprimante
     
                'Code qui sert à ouvrir une base de données Access inférieur à 2003 qui est protégée par mot de passe
                'http://msdn.microsoft.com/en-us/library/aa167790(office.11).aspx
                Dim objDbEngine As dao.DBEngine
                objDbEngine = objAccess.DBEngine
                Dim objDB As dao.Database
     
                objDB = objDbEngine.OpenDatabase(MyBase.AdresseDBAccess, False, False, ";PWD=" & MyBase.PasswordDBAccess)
     
     
                objAccess.OpenCurrentDatabase(MyBase.AdresseDBAccess, False)
     
     
                objDB.Close()
                System.Runtime.InteropServices.Marshal.ReleaseComObject(objDB)
                objDB = Nothing
                System.Runtime.InteropServices.Marshal.ReleaseComObject(objDbEngine)
                objDbEngine = Nothing
                'Fin du code d'ouverture ****************************************************************************
     
     
                If CodeClient = "" Then CodeClient = "%"
                If TypeClient = "Tous" Then TypeClient = "%"
     
                        Dim qu_Rapport As New dao.QueryDef
                        qu_Rapport = objAccess.CurrentDb.QueryDefs("Rapport")
                        Dim stractVente_ActivitesVentes As String = "Ma chaine SQL"
     
                        qu_Rapport.SQL = stractVente_ActivitesVentes
                        qu_Rapport = Nothing
                        objAccess.DoCmd.OpenReport("MonEtat", Mon.Access9.Interop.AcView.acViewDesign)
                        objAccess.DoCmd.Close(Mon.Access9.Interop.AcObjectType.acReport, "MonEtat", Mon.Access9.Interop.AcCloseSave.acSaveYes)
                        objAccess.DoCmd.OpenReport("MonEtat", Mon.Access9.Interop.AcView.acViewNormal)
     
     
                objImprimante.RestoreDefaultPrinter()
                objAccess.DoCmd.Quit()
            Catch ex As Exception
                Mess.ShowAlert(ex, "", ex.Message)
            End Try
     
            objAccess = Nothing
        End Sub
    ce que je voulais faire, c'est d'ouvrir un fichier Access, modifier une requete, ensuite imprimer un Etat sur l'imprimante choisi. Encore une fois le code devais fonctionné avec Access 2000 ( ce qui n'est plus le cas maintenant ).

    Les postes équipés de 2007 sont en 64 bits. Les autres ( 2003 ) sont en 32 bits. Les autres parties du programme fonctionnent très bien, j'utilise sql server. Mes états sont en access par souci d'économie, je sais que ce n'est pas l'idéal mais jusqu'à maintenant ça fonctionnait.

  6. #6
    Membre éclairé Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Points : 813
    Points
    813

  7. #7
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2009
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    à l'origine je voulais savoir si c'était possible de connaitre la version de Access installé sur le PC. Je suis sur que ça peut se faire mais je ne sais pas comment, et je n'avais rien trouvé sur le sujet dans la FAQ. Donc est-ce possible ou non

  8. #8
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2009
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    J'ai trouvé ma solution, le problème venait du fait que les postes avec office 2007 sont en 64 bits. Dans les propriétés de compilation du programme, je lui ai dit de compiler pour une plateforme x86 au lieu de "AnyCpu". Maintenant, en utilisant un liaison tardive, ça fonctionne sur chacun des postes:

    Configurer la plateforme
    Pour le faire en VB Express
    Un autre lien sur le sujet

    Merci de vos réponses

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Connaitre version JVM de l'appli
    Par visiwi dans le forum Langage
    Réponses: 2
    Dernier message: 18/03/2009, 11h47
  2. [A-03] Version Access en Langue différente
    Par the_6L20 dans le forum Access
    Réponses: 6
    Dernier message: 11/12/2008, 16h01
  3. Deux versions Access dans un même windows xp
    Par sami117 dans le forum Runtime
    Réponses: 3
    Dernier message: 03/12/2008, 13h24
  4. sql version Access
    Par gerald57 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/05/2008, 15h01
  5. Error ds fonction pour version access allemande
    Par tiopan dans le forum Access
    Réponses: 9
    Dernier message: 28/04/2006, 20h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo