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

Access Discussion :

Comment comparer la version du fichier ? [AC-2003]


Sujet :

Access

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2006
    Messages : 110
    Points : 79
    Points
    79
    Par défaut Comment comparer la version du fichier ?
    Bonjour à tous. Je vais essayer de me faire comprendre pour expliquer mon soucis.
    Je suis le responsable de la mise à jour d'un fichier access. Ensuite, je dois la transformer en .mde puis l'envoyer par mail aux utilisateurs.
    Pour faciliter les mises à jour, je souhaiterais faire une comparaison de la version utilisée (en local) par rapport à la dernière version sur le serveur. (par exemple, la version utilisée MEF-V1 par l'utilisateur et la version mise à jour sur le serveur MEF-V2).
    Dès que la comparaison est faite, si les versions sont différentes, exécuter le module COPY sinon, ouvrir le programme tout simplement
    Mon module COPY fonctionne très bien mais je n'arrive pas à extraire les derniers chiffres des versions pour en faire la comparaison.
    En vous remerciant
    Francis

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 286
    Points
    34 286
    Par défaut


    cette version dont tu parles, c'est une donnée que tu peux stocker dans une table de paramètres par exemple. Il s'agirait de lire la donnée et de déclencher en conséquence la mise à jour

    Cette solution est-elle envisageable ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2006
    Messages : 110
    Points : 79
    Points
    79
    Par défaut
    Je viens de créer 2 tables. Une sur la base de données dorsale qui donnera la dernière version sur le serveur et une table, en local, pour la comparaison.
    Donc, tous les utilisateurs auront pour la comparaison, 2 valeurs. La valeur pour la mise à jour et la version utilisée actuellement sur leur PC.
    Il ne me reste plus qu'à faire la condition IF THEN ELSE.
    Avec votre aide
    Merci

  4. #4
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2006
    Messages : 110
    Points : 79
    Points
    79
    Par défaut
    J'avance doucement mais je suis devant un os de taille.
    je dois mémoriser le chemin pour arriver sur le desktop, là où la nouvelle version sera mise.
    MAIS, j'ai des pc en Xp et d'autres en Seven. Le chemin du desktop est différent. Pour Xp, c:\documents and settings\user\desktop par contre pour Seven, c'est c:\users\user\desktop.
    Je dois trouver le code qui va me déterminer la version de l'OS utilisé.
    Suivi la valeur que j'aurai, je dirigerai mon code vers Xp ou vers seven.
    Encore besoin de votre aide.
    merci.

  5. #5
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 286
    Points
    34 286
    Par défaut
    Solution disponible dans la
    http://access.developpez.com/sources...=Windows#NomOS
    Notamment le lien en bas d'item pour les versions les plus récentes de Windows
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  6. #6
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2006
    Messages : 110
    Points : 79
    Points
    79
    Par défaut
    @ jpcheck, merci pour le lien mais pour Win7, quelle est la valeur pour "dwMajorVersion" ? Pour moi, ce serait 7, mais pas certain. La valeur 6 étant pour Vista.
    En te remerciant.

  7. #7
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 286
    Points
    34 286
    Par défaut
    le mieux reste d'utiliser les moteurs de recherche dans ces cas là
    http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
    http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  8. #8
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2006
    Messages : 110
    Points : 79
    Points
    79
    Par défaut
    un code tout simple qui me donne la version de l'OS

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Declare Function GetVersion Lib "kernel32" () As Long
     
    Public Function WindowVersion() As String
    Dim Version As Long
    Version = GetVersion() And &HFFFF&
    WindowVersion = (Version Mod 256) & "." & (Version \ 256)
    End Function
    En sachant que :

    Windows 7 6.1
    Windows Server 2008 R2 6.1
    Windows Server 2008 6.0
    Windows Vista 6.0
    Windows Server 2003 R2 5.2
    Windows Home Server 5.2
    Windows Server 2003 5.2
    Windows XP Professional x64 Edition 5.2
    Windows XP 5.1

    maintenant, je dois extraire le 1er chiffre qui me donnera soit 5, soit 6 et suivant ce nombre, lancer le code XP si c'est 5 ou le code Seven si c'est 6.

    Une idée ?
    Merci

  9. #9
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 286
    Points
    34 286
    Par défaut
    Hum, pourquoi vouloir l'extraire alors que tu le génères toi même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    WindowVersion = (Version Mod 256) & "." & (Version \ 256)
    Debug.Print "Premier Chiffre " & (Version Mod 256)
    Debug.Print "Second Chiffre " & (Version \ 256)
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  10. #10
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2006
    Messages : 110
    Points : 79
    Points
    79
    Par défaut
    la réponse est simple.
    Je dois copier un fichier du réseau vers le desktop de l'utilisateur, mais suivant la version de l'OS, le chemin est différent.
    Donc, si la 1ère valeur de l'OS est 5 (pour XP), je lance avec un IF le code correspondant, ELSE, le code pour Seven

    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    IF left(windowsversion,1)=5 then [code XP]
    else
    [code seven]
     
    End IF

  11. #11
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 286
    Points
    34 286
    Par défaut
    Oui, ca j'ai compris, mais pourquoi demandes-tu alors :
    Une idée ?
    tu as toi même le code, de quelle idée as-tu besoin maintenant ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  12. #12
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2006
    Messages : 110
    Points : 79
    Points
    79
    Par défaut
    voici le code complet, mais je ne l'ai pas encore essayé.


    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    Option Compare Database
    Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
                                 (ByVal lpBuffer As String, nSize As Long) As Long
    Private Declare Function GetVersion Lib "kernel32" () As Long
     
    Option Explicit
     
    Public Function copy()
        Dim FSO As Scripting.FileSystemObject
        Set FSO = New Scripting.FileSystemObject
        Dim f As Scripting.File
        Dim Newf As Scripting.File
        Dim strDbNouvVersion As String
        Dim accNewApp As Access.Application
        Dim Path_intervention As String
        Dim Path_new_version As String
        Dim stTmp As String, lgTmp As Long
        Dim setOldBdd As String
        Dim Current As String ' récupération de la valeur de la version actuelle
        Dim Network As String 'récupération de la valeur de la nouvelle version
        Dim UserName As String
        Dim Version As Long
            Version = GetVersion() And &HFFFF&
            windowsversiontmp = (Version Mod 256) & "." & (Version \ 256)
            WindowVersion = Left(windowsversiontmp, 1)
            stTmp = Space$(250)
            lgTmp = 251
            Call GetUserName(stTmp, lgTmp)
            UserName = Left$(stTmp, lgTmp - 1)
     
        'ouverture du recordset de la table Tb_version
        Dim rs As DAO.Recordset
        Set rs = CurrentDb.OpenRecordset("Tb_version_unit", dbOpenDynaset)
     
        ' récupération de la valeur du champ vNetwork
        Network = rs!vNetwork.Value
        rs.MoveFirst
     
        Set FSO = CreateObject("Scripting.FileSystemObject")
     
        'ci-dessous récupération du chemin + nom de la version Network
        Path_new_version = "\\meffile001\amt\amt\mxxxxxn.f\UNIT_AMT_MEF-V"
        Path_intervention = Path_new_version & Network & ".mde"
        Set f = FSO.GetFile(Path_intervention)
     
        'Copie du logiciel nouvelle version à l'endroit où se trouve l'actuel executable suivant la version de l'OS utilisé
        If windowsVersion = 5 Then
            strDbNouvVersion = "C:\Documents and Settings\" & UserName & "\desktop\UNIT_AMT_MEF-V" & Network & ".mde"
            f.copy (strDbNouvVersion)
        Else
            strDbNouvVersion = "C:\users\" & UserName & "\desktop\UNIT_AMT_MEF-V" & Network & ".mde"
            f.copy (strDbNouvVersion)
        End If
     
         ' Création d'une nouvelle instance d'Access
         Set accNewApp = New Access.Application
         accNewApp.Visible = True
         accNewApp.UserControl = True
     
         ' Ouverture Base Nouvelle Version
         accNewApp.OpenCurrentDatabase strDbNouvVersion
         DoCmd.Maximize
     
         ' Ouverture du formulaire qui va supprimer la version en cours
         accNewApp.DoCmd.OpenForm "F-fmMajBDD", , , , , acHidden
     
         ' On donne au formulaire le chemin complet de la base à détruire
         accNewApp.Forms("F-fmMajBDD").setOldBdd CurrentProject.FullName
     
         ' On quitte la base en cours
         Application.Quit acQuitSaveNone
         ' Après cette ligne, plus aucune ligne de code n'est exécutée)
     
    DoCmd.OpenForm "FM-SRT", acNormal 'affichage du 1er formulaire de mon application
    DoCmd.Maximize
     
    End Function
    Le but de ce code, que j'ai trouvé sur ce site, sert à copier une version d'un fichier .mde qui est sur un serveur et qui va le mettre sur le desktop de l'utilisateur. Ensuite, la nouvelle version s'ouvre et va fermer l'ancienne. Tout ça, automatiquement.

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

Discussions similaires

  1. [WD12] Comparer 2 versions de fichiers
    Par zouzoukha dans le forum WinDev
    Réponses: 6
    Dernier message: 15/06/2010, 08h41
  2. Comparer deux versions d'un fichier
    Par smartys dans le forum Langage
    Réponses: 2
    Dernier message: 15/04/2009, 16h44
  3. Comment connaitre à quelle version correspond un fichier jar ?
    Par Pierre8r dans le forum Général Java
    Réponses: 1
    Dernier message: 25/06/2007, 10h51
  4. Comment comparer des fichiers sur Windows?
    Par programmerPhil dans le forum Autres Logiciels
    Réponses: 9
    Dernier message: 22/02/2006, 20h47
  5. Comment comparer le contenu de 2 fichiers ?
    Par steph_1 dans le forum Langage
    Réponses: 4
    Dernier message: 17/06/2005, 18h38

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