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 :

[base] Ouverture d'une base Distante par une autre Base


Sujet :

Access

  1. #1
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut [base] Ouverture d'une base Distante par une autre Base
    Bonjour à tous,

    Je suis en train de développer une application Frontale-Dorsale avec un 100 d'utilisateurs sur PC différents (10 connexions maxi en même temps) et j'aimerais integrer une fonction de mise à jour automatique. Pour cela je dois ouvrire une autre base (pas de problème).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            Dim appAccess As New Access.Application
     
            appAccess.OpenCurrentDatabase "\\Serveur\mabase.mdb"
    Mon soucis est qu'elle s'ouvre dans une fenêtre. J'aimerais savoir si c'est possible de l'ouvre sur la largeur de l'écran.

    Merci d'avance.

  2. #2
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    Dolphy35 a ecrit:
    Je suis en train de développer une application Frontale-Dorsale...
    or il me semble que ton code ouvre la dorsale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim appAccess As New Access.Application 
     
            appAccess.OpenCurrentDatabase "\\Serveur\mabase.mdb"
    suggestion:
    1/Ta frontale devrait contenir les tables de ta dorsale en "tables_liées"
    2/c'est ta frontale que tu installes sur differents PCs
    j'espere t'avoir compris
    @+

  3. #3
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Salut Keita,

    Je me suis mal exprimé. En fait j'ai mon appli en Frontale-Dorsale (avec mes tables liées). Mon soucis est que j'ai beaucoup d'utilisateurs potentiels de cette base et pour le mise à jour j'ai soit envoi par mail (base trop lourde), soit envoi par mail d'un fichier *.bat (cela fonctionne mais la liste de destinataires est longue) donc je me suis décidé à créer une fonction mise à jour de ma base dans ma base.

    A l'ouverture de ma base je vient contrôler la version de ma base frontale et celle dorsale (dans un table) et si je suis différent et bien je lance la mise à jour.

    1-J'ouvre une base appelée MAJ.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim appAccess As New Access.Application 
     
            appAccess.OpenCurrentDatabase "\\Serveur\mabase.mdb"
    2-J'éxeute un FileCopy des fichiers.

    3-Après contrôle présence fichiers, j'ouvre ma base avec la bonne version.

    Tout cela Fonctionne à merveilles mais mon soucis est lorsque j'ouvre ma deuxième base (MAJ) elle s'ouvre en petite fenêtre au milieu de mon écran (pour celle là ce n'est pas genant) par contre à la fin des copies quand j'ouvre ma Base elle aussi est dans un petit fenâtre (dialogue) et là c'est genant.

    Ma question => Peut-on mettre par défaut l'ouverture en plein écran. Merci

  4. #4
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Ouh là, je ne crois pas que l'utilisation d'automation Access (Access Application se justifie ici) C'est vraiment trés peu performant. Ne pourrait tu pas stocker la version de ton application dans une table sur la frontale et lire cette valeur avec DAO ?

  5. #5
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Citation Envoyé par Tofalu
    Ouh là, je ne crois pas que l'utilisation d'automation Access (Access Application se justifie ici) C'est vraiment trés peu performant. Ne pourrait tu pas stocker la version de ton application dans une table sur la frontale et lire cette valeur avec DAO ?
    C'est ce que je fais j'ai une table comportant la version du Frontale (non liées) et un autre table comprtant la nouvelle Version (liées) si les deux versions son t différentes, j'ouvre une base qui copie tous les fichiers nécéssaires du serveur vers le Poste_utilisateur et en fin j'ouvre la base Frontale (nouvelle version) et c'est là que j'ai mon soucis (esthétique) Access s'ouvre dans un fenêtre type dialogue, je vaudrais qu'elle s'ouvre en plein écran.

    Merci

  6. #6
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Re,

    J'ai recupérer ce bout code de Morsi dans la FAQ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
           Set objAccess = New Access.Application
            With objAccess
                lngRet = apiSetForegroundWindow(.hWndAccessApp)
                lngRet = apiShowWindow(.hWndAccessApp, SW_MAXIMIZE)
                'le premier appel à  ShowWindow semble rester sans effet
                lngRet = apiShowWindow(.hWndAccessApp, SW_MAXIMIZE)
                .OpenCurrentDatabase strMDB
             End With
    Je pense que cela peut m'aider mais j'ai une erreure lors de la compilation sur les lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    lngRet = apiSetForegroundWindow(.hWndAccessApp)
    lngRet = apiShowWindow(.hWndAccessApp, SW_MAXIMIZE)
    Msg => Erreure Compilation. Sub ou Function non définie.

    Y'a t'il une rèférences ?

    Développement sous Access 2002.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Salut,

    Dans l'exemple de ton code tu dois avoir deux fonctions :
    apiSetForegroundWindow()
    apiShowWindow()
    qui doivent être mises sans un module, regarde ta source

    Starec

  8. #8
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    salut Dolphy35
    Peut etre que je ne te comprendstoujours pas; mais moi, pour ouvrir une BD autre à partir de ma frontale, je fais simplement ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim bds as DAO.Database
    set bds = Opendatabase(CheminComplet\NomDeLaBD.extDeLaBD)
    'Je fais ce que j'ai à faire 
    'puis je detruis la variable objet dbs
    set bds=Nothing
    Peut etre que j'ai encore rien compris à ton pb.
    @+

  9. #9
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Salut à tous,

    Citation Envoyé par Starec
    Dans l'exemple de ton code tu dois avoir deux fonctions :
    apiSetForegroundWindow()
    apiShowWindow()
    qui doivent être mises sans un module, regarde ta source
    Starec
    Starec
    il faut déclarer les deux fonctions hors module, car dans l'exemple Morsi il les a déclaré tel quel (Source)

    Citation Envoyé par keita
    salut Dolphy35
    Peut etre que je ne te comprendstoujours pas; mais moi, pour ouvrir une BD autre à partir de ma frontale, je fais simplement ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim bds as DAO.Database
    set bds = Opendatabase(CheminComplet\NomDeLaBD.extDeLaBD)
    'Je fais ce que j'ai à faire 
    'puis je detruis la variable objet dbs
    set bds=Nothing
    Peut etre que j'ai encore rien compris à ton pb.
    @+
    Keita
    en fait j'ouvre une deuxième Bdd pas pour recupérer des données mais pour copier une base sur un Serveur et la mettre à la place de ma Frontale, donc je sui obbliger de fermer ma frontale. Cette manip je le faisait par fichier *.bat (obliger de l'envoyer par Mail) et ce que je veux maintenant c'est que sur ma base Frontale je détecte si une nouvelle version est disponible sur le serveur et la j'effectue une mise à jour en ouvrant ma deuxième base qui en fait copie celle qui est sur le serveur sur le disque de l'utilisateur à la place de l'autre et à la fin de la copie j'ouvre la frontale. Mon soucis est q'access s'ouvre dans un petite fenêtre et au niveau esthétique c'est moyen. J'aimerais l'ouvrir en plein Ecran.

    Merci à tous.

  10. #10
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Bonjour à tous,

    je reviens à la charge. Quelqu'un pourrait m'expliquer ces deux lignes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    lngRet = apiSetForegroundWindow(.hWndAccessApp) 
    lngRet = apiShowWindow(.hWndAccessApp, SW_MAXIMIZE)
    je pense que c'est la solution à mon problème mais je n'arrive pas à voir l'erreur.

    Merci

  11. #11
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Bonjour à tous,

    Quelqu'un aurait une autre idée peut être là je sèche complétement.

    Merci d'avance.

  12. #12
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set objAccess = New Access.Application
    Tu ouvres Access
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            With objAccess
                lngRet = apiSetForegroundWindow(.hWndAccessApp)
                lngRet = apiShowWindow(.hWndAccessApp, SW_MAXIMIZE)
    Les 2 API fonctionnent avec le handle du process. Pour le récupérer de l'objet access définit auparavant, c'est avec ".hWndAccessApp"
    La première API affiche Access en premier plan, la 2nde le maximise.
    Ensuite, dans le code, il y a l'ouverture de la base passée en paramêtre de la fonction.
    [Access] Les bases du débogage => ici

  13. #13
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Salut à toi Kloun,

    Voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            Set objAccess = New Access.Application
            With objAccess
                lngRet = apiSetForegroundWindow(.hWndAccessApp)
                lngRet = apiShowWindow(.hWndAccessApp, SW_MAXIMIZE)
                'le premier appel à  ShowWindow semble rester sans effet
                lngRet = apiShowWindow(.hWndAccessApp, SW_MAXIMIZE)
                .OpenCurrentDatabase strMDB
             End With
    Lors de la compilation j'ai des erreurs sur ces deux lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    lngRet = apiSetForegroundWindow(.hWndAccessApp)
                lngRet = apiShowWindow(.hWndAccessApp, SW_MAXIMIZE)
    Y a t'il un référence à cocher ou autre. Je ne connais pas les API et je bloque.

  14. #14
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    salut Dolphy35
    juste une ptite question?
    Au moment ou tu lances ton code, une autre session d'access serait elle deja en cours?
    @+

  15. #15
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Citation Envoyé par keita
    salut Dolphy35
    juste une ptite question?
    Au moment ou tu lances ton code, une autre session d'access serait elle deja en cours?
    @+
    Salut Keita,

    Oui j'ai la première base qui est ouverte. En gros avec mla première base j'ouvre un edeuxième base qui ferme la premièrec, cette base exécute la copy des fichiers puis si tout est Ok réouvre la première base pour que la deuxième se ferme.

  16. #16
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    Est-ce que tu as déclaré les API dans ton module (ou ailleurs) ?
    Tu dois avoir ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Declare Function apiSetForegroundWindow Lib "user32" _
                Alias "SetForegroundWindow" _
                (ByVal hwnd As Long) _
                As Long
     
    Private Declare Function apiShowWindow Lib "user32" _
                Alias "ShowWindow" _
                (ByVal hwnd As Long, _
                ByVal nCmdShow As Long) _
                As Long
     
    Private Const SW_MAXIMIZE = 3
    Private Const SW_NORMAL = 1
    dans ton module.
    [Access] Les bases du débogage => ici

  17. #17
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    J'esseye et je vous tiens au courant.

    Merci Kloun

  18. #18
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Un grand Merci à Kloun,

    C'était bien la déclaration qu'il me manquait.

    Voici le code en entier :

    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
    Private Declare Function apiSetForegroundWindow Lib "user32" _
                Alias "SetForegroundWindow" _
                (ByVal hwnd As Long) _
                As Long
     
    Private Declare Function apiShowWindow Lib "user32" _
                Alias "ShowWindow" _
                (ByVal hwnd As Long, _
                ByVal nCmdShow As Long) _
                As Long
     
    Private Const SW_MAXIMIZE = 3
    Private Const SW_NORMAL = 1
     
    Function MAJ_Base()
     
        ' Initialise la chaîne au chemin d'accès à la base de données.
        ' Crée une nouvelle instance de Microsoft Access.
     
            Set objAccess = New Access.Application
            With objAccess
                lngRet = apiSetForegroundWindow(.hWndAccessApp)
                lngRet = apiShowWindow(.hWndAccessApp, SW_NORMAL)
                lngRet = apiShowWindow(.hWndAccessApp, SW_MAXIMIZE)
                .OpenCurrentDatabase "D:\MaBase.mdb"
                .DoCmd.OpenForm "Formulaire1"
            End With
     
        DoCmd.Quit
     
    End Function
    Cela fonctionne à Merveille.

    info => j'utilise Access 2002.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 05/04/2011, 08h06
  2. Réponses: 4
    Dernier message: 24/07/2007, 12h12
  3. Recuperer une base mySQL d'un site distant via une application Java
    Par tchoukapi dans le forum Persistance des données
    Réponses: 2
    Dernier message: 02/07/2007, 15h26
  4. Réponses: 2
    Dernier message: 27/06/2006, 09h15
  5. Réponses: 6
    Dernier message: 05/05/2006, 19h11

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