1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mai 2015
    Messages : 31
    Points : 15
    Points
    15

    Par défaut Auto update - Front/Back versions accdb/accde - BLOB

    Bonjour à tous,

    J'ai essayé de mettre le titre le plus clair possible mais il s'agit d'un concept que je maîtrise très mal et qui me pose actuellement problème. Je vais donc essayer de décrire ce problème du mieux possible:

    J'ai au sein de mon entreprise une base Access qui permet à toute une partie de la société d'enregistrer des informations. Lorsqu'ils rentrent leurs informations via des formulaires, celles-ci sont envoyées (et donc récupérées quand ils veulent les consulter) sur un serveur (Sybase). Voila pour le fonctionnement général rapidement décris.

    Afin de permettre le développement et l'amélioration de cette base Access, nous avons une version accdb stockée sur le serveur de la société afin de faire les modifications que nous souhaitons faire, et nous postons une version compilée (accde) zippée sur l'intranet de la société afin que les utilisateurs puissent la télécharger et l'utiliser. Nous laissons également cette nouvelle version accde au même endroit sur l'intranet que la version accdb. A chaque nouveau déploiement, une macro au sein de la base permet également de générer un fichier .txt contenant le numéro de version de la base qui sert a référence pour savoir la version actuelle de l'utilisateur. Ce fichier .txt contient uniquement un numéro indiquant la version de la base et est également téléchargé sur l'intranet à chaque nouveau déploiement avec la version accde de la base. Ce numéro est également présent au sein d'une table directement au sein de la base Access. J'espère avoir été assez clair sur l'organisation et le process de déploiement d'une nouvelle version (la dernière version accdb est bien entendue recompilée à chaque nouveau déploiement pour créer un nouveau fichier accde qui est le fichier sauvegardé au meme endroit sur le serveur et zippé puis téléchargé sur l'intranet pour les utilisateurs). Ainsi lors de l'ouverture par les utilisateurs de leur version accde préalablement téléchargée, la base reconnait qu'il y a eu un nouveau déploiement et met à jour automatiquement la base.

    J'en arrive enfin à mon problème: récemment, ma société a changé le site internet hébergeant l'intranet. J'ai donc voulu modifier dans la base Access le lien entre celle-ci et le site intranet pour qu'elle puisse se mettre à jour proprement à chaque nouveau déploiement. J'ai donc trouvé une variable globale ayant l'adresse URL de l'intranet et ai remplacé celui-ci par l'URL du nouvel intranet ou est hébergée la nouvelle version. Cependant, lorsque je télécharge ensuite la nouvelle version sur l'intranet et que je lance celle-ci, elle effectue une mise à jour et semble récupérer l'ancienne version située sur l'ancien intranet. Et je ne comprend pas comment cela est possible sachant que j'ai bien modifié l'adresse URL au sein de la base.

    En exécutant le code manuellement sur la version accdb, (après avoir modifié le numéro de version au sein de la base Access pour qu'il simule une mise à jour), il semblerait que le programme aille bien chercher le nouveau fichier .txt sur le nouvel intranet pour comparer les 2 versions et détecte bien le changement de version avec le réel nouveau numéro situé sur le nouvel intranet mais lorsqu'il commence la mise à jour, il semblerait qu'il utilise l'ancienne version toujours hébergée sur l'ancien intranet en .zip. Lors de l'exécution en pas à pas, j'ai également remarqué qu'une base .accde nommée dans le code updater était générée et semble être utilisée pour la mise à jour mais je n'ai aucune idée de ce qu'elle contient ni de comment elle est générée (il semblerait que ça soit via des BLOB, mais c'est une notion qui m'est totalement étrangère et ou je suis totalement perdu).

    J'espère avoir été le plus clair possible et si quelqu'un a une idée de comment mettre à jour ce lien pour que la bonne version soit récupérée lors du déploiement et de la mise à jour automatique des versions des utilisateurs ça me serait d'une grande aide!!

    N'hésitez pas si vous avez besoin d'éclaircissements, je ferais de mon mieux.

    Yann

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    11 834
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 11 834
    Points : 17 900
    Points
    17 900

    Par défaut

    Bonjour.

    En exécutant le code manuellement sur la version accdb, (après avoir modifié le numéro de version au sein de la base Access pour qu'il simule une mise à jour), il semblerait que le programme aille bien chercher le nouveau fichier .txt sur le nouvel intranet pour comparer les 2 versions et détecte bien le changement de version avec le réel nouveau numéro situé sur le nouvel intranet mais lorsqu'il commence la mise à jour, il semblerait qu'il utilise l'ancienne version toujours hébergée sur l'ancien intranet en .zip. Lors de l'exécution en pas à pas, j'ai également remarqué qu'une base .accde nommée dans le code updater était générée et semble être utilisée pour la mise à jour mais je n'ai aucune idée de ce qu'elle contient ni de comment elle est générée (il semblerait que ça via des BLOB, mais c'est une notion qui m'ai totalement étrangère et ou je suis totalement perdu).
    Peux-tu poster cette portion de code ?

    Si c'est un BLOB, il est possible que ton appli soit stockée dans la BD SyBase).

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mai 2015
    Messages : 31
    Points : 15
    Points
    15

    Par défaut

    Bonjour marot_r,

    Je ne peux malheureusement poster aucun code car le site est bloque par mon entreprise et je ne peux pas m'envoyer d'emails contenant ce genre d'informations sur ma boite perso.

    Saurais-tu m'indiquer ce que je dois rechercher ?

    Merci beaucoup,

    Yann

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    11 834
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 11 834
    Points : 17 900
    Points
    17 900

    Par défaut

    Désolé pas vraiment.

    lorsqu'il commence la mise à jour, il semblerait qu'il utilise l'ancienne version toujours hébergée sur l'ancien intranet
    Quel est l'instruction utilisée à ce moment là ? FileCopy ? Shell ? un appel à la BD ?

    Sans le code cela va vraiment être difficile de t'aider.

    Une solution serait de changer le code actuel par du code entièrement écrit par toi.
    C'est un sujet qui revient régulièrement sur le forum donc il y a pas mal d'exemple, du plus simple au plus complexe.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mai 2015
    Messages : 31
    Points : 15
    Points
    15

    Par défaut

    Bonjour Marot,

    Desole pour le delais mais j'etais partis en conges quelques jours: le code qui est utilise au debut de la mise a jour est ci-dessous.
    J'ai cette histoire de BLOB qui genere une base de donnes aui sert a la mise a jour il semblerait mais auquel je ne connais rien et qui semble etre generee avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      intFileNum = FreeFile
                    Open strOutPath & strFile For Binary As intFileNum
     
                    ReDim bytBuffer(.Fields("blob").FieldSize)
                    bytBuffer = .Fields("blob").GetChunk(0, _
                        .Fields("blob").FieldSize)
                    Put intFileNum, , bytBuffer()
    Est-ce que cela aide ?

    Encore merci pour votre aide !

    Yann

    ADD: La base updater.accde qui sert a mettre a jour mon application semble etre stockee dans un BLOB. Mon probleme est que ce concept m'ai totalement inconnu. Sauriez vous comment ces BLOB fonctionnent ? Comment y acceder et les modifier?

    Merci beaucoup !!

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    11 834
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 11 834
    Points : 17 900
    Points
    17 900

    Par défaut

    Bonjour.

    Le blob (Binary Large Object) est un type de champ) qui te permet de mettre directement des octets dans une BD.
    En gros c'est un champ foure tout où tu peux mettre n'importe quoi comme par exemple : un fichier Access.

    Le code que tu utilises prend ce "machin" du champ et le copie dans un fichier (strOutPath & strFile).

    Donc à priori, il faudrait que ce champ nommé ("blob") dans ta BD contienne le fichier Access.

    Aucune idée de comment on fait cela mais tu peux poser la question sur un forum dédié à ta BD (pas Acces l'autre :-).
    Ce n'est pas spécifique à Access mais à la BD que tu utilises.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  7. #7
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    5 116
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : septembre 2003
    Messages : 5 116
    Points : 11 346
    Points
    11 346

    Par défaut

    marot_r, ce n'est pas la base applicative qui dans un blob.
    C'est une base qui sert uniquement à la mise à jour.
    Dans cette base, il y a probablement le lien en dur vers la dernière version de la base applicative.

    En théorie, il devrait y avoir des explications dans la spécification technique de l'outil. Et une procédure pour importer/exporter l'"updater". Ce n'est pas du standard Access/Vba.
    En tout cas ça passe par du code vba de lecture/écriture de fichier binaire.

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    11 834
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 11 834
    Points : 17 900
    Points
    17 900

    Par défaut

    Bonjour.

    Citation Envoyé par Arkham46
    marot_r, ce n'est pas la base applicative qui dans un blob.
    Je n'ai peut-être pas été clair mais je suis d'accord avec toi c'est la frontale (probablement) mise à jour qui est dans le BLOB.

    Elle est lue du BLOB par la lecture binaire et écrite sous forme de fichier ici : strOutPath & strFile.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  9. #9
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    5 116
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : septembre 2003
    Messages : 5 116
    Points : 11 346
    Points
    11 346

    Par défaut

    Citation Envoyé par marot_r Voir le message
    Je n'ai peut-être pas été clair mais je suis d'accord avec toi c'est la frontale (probablement) mise à jour qui est dans le BLOB.
    Je ne suis pas clair non plus alors.
    Je pense avoir compris qu'il y a dans blob une base spéciale dont le but est d'aller chercher la dernière version de la frontale pour remplacer celle de l'utilisateur. C'est le terme "updater" qui me fait penser à ce mécanisme.

  10. #10
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    11 834
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 11 834
    Points : 17 900
    Points
    17 900

    Par défaut

    Bonjour.

    D'après le code posté le blob est la BD frontale mais peut-être qu'après il exécute ce qui a été extrait.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mai 2015
    Messages : 31
    Points : 15
    Points
    15

    Par défaut

    Bonjour a tous les 2,

    Merci beaucoup pour votre aide precieuse. En recherchant en parallele sur internet egalement en fin de semaine derniere j'en etais arrive a une conclusion similaire et votre avis m'aide beaucoup a confirmer tout cela car ca n'etait que des suppositions.

    Comme vous l'avez dit et en executant le code en step by step, la partie de code que je vous ai postee sert effectivement simplement a extraire la base qui est dans le BLOB. Et comme l'a dit Arkham, ca n'est effectivement pas la base frontale mais une base compile (accde) qui sert a mettre a jour la base frontale. Il y a donc effectivement un lien dans cette base qui est dans le BLOB et qui fait reference a l'endroit ou l'updater est suppose aller chercher la nouvelle version de la base.

    Ma base applicative contenant le BLOB tout comme cette base permettant la mise a jour sont toutes 2 des bases access. J'ai donc compris qu'il me fallait trouver la version accdb qui a initialement permis de creer la version compilee accde aui a ete inseree dans le BLOB (c'est un premier probleme car il semblerait que la personne s'etant occuppe de ce sujet a l'epoque n'en a pas vraiement laisse de trace) mais il me reste surtout un 2eme sujet :

    comment modifier ce BLOB pour retirer l'ancienne base accde et y inserer la nouvelle base accde une fois que je l'aurais modifiee ?

    En théorie, il devrait y avoir des explications dans la spécification technique de l'outil. Et une procédure pour importer/exporter l'"updater". Ce n'est pas du standard Access/Vba.
    En tout cas ça passe par du code vba de lecture/écriture de fichier binaire.
    C'est effectivement ce qui me manque: il n'y a aucune information sur ce sujet dans la specification technique de l'outil ni aucune procedure malheureusement... La personne ayant fait ce travail initialement n'en a laisse aucune trace ...

    Encore merci beaucoup a vous pour votre aide !

    Yann

  12. #12
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    11 834
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 11 834
    Points : 17 900
    Points
    17 900

    Par défaut

    Bonjour.

    Vu que tu fais .Fields("blob").GetChunk, il y a peut-être une méthode PutChunk disponible.

    Si oui, le code suivant pourrait peut-être fonctionner pour pousser la nouvelle BD dans le BLOB.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                    intFileNum = FreeFile
                    Open strOutPath & strFile For Binary As intFileNum
     
                    ReDim bytBuffer(lof(intFileNum)) 'Dimentionne le buffer à la taille du fichier
                    get intFileNum, , bytBuffer() 'Lit le fichier du disque
                    .edit
                    .Fields("blob").PutChunk( ... ) 'Ici la syntaxe qui va bien pour écrire bytBuffer() dans le BLOB
                    .update
    À tester sur un bd Sybase de test. Tu ne veux pas endommager tes données de prod !

    Sinon tes recherches sur les BLOB sur Sybase n'ont rien données ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  13. #13
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mai 2015
    Messages : 31
    Points : 15
    Points
    15

    Par défaut

    Bonjour marot_r,

    Merci beaucoup pour ton aide. Arkham egalement.

    J'ai fait quelques test et finis par utiliser le code suivant pour important mon BLOB:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        intFileNum = FreeFile
        Open strFile For Binary As intFileNum
        ReDim bytBuffer(LOF(intFileNum))
        Get intFileNum, , bytBuffer
        rst.Fields("blob").AppendChunk bytBuffer
    Tout semble fonctionner correctement desormais donc encore merci pour votre aide !

    Yann

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

Discussions similaires

  1. Opengl en C front back et ....
    Par chipryot dans le forum OpenGL
    Réponses: 2
    Dernier message: 17/02/2006, 11h05
  2. Update de masse version 2
    Par GuyLafleur dans le forum MS SQL-Server
    Réponses: 2
    Dernier message: 18/10/2005, 14h09
  3. CullFace (Front / Back Face)
    Par Finch dans le forum OpenGL
    Réponses: 5
    Dernier message: 27/04/2005, 15h16
  4. [DirectPlay] Auto update ??
    Par k'n1 dans le forum DirectX
    Réponses: 11
    Dernier message: 28/02/2005, 03h09
  5. [version] Requete Update avec différentes versions de mySQL
    Par regbegpower dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/01/2004, 17h19

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