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

Sondages et Débats Discussion :

Table liée ou connexion DAO ?


Sujet :

Sondages et Débats

  1. #1
    Invité
    Invité(e)
    Par défaut Table liée ou connexion DAO ?
    Bonjour à tous

    Je voudrais lancer un petit débat sur vos expériences sur le sujet évoqué en titre.

    Vous connaissez sûrement l'excellent tuto de mon ami Morgan : Comment utiliser une application en mode multi-utilisateurs

    Où on vous explique l'utilisation des tables liées pour une application Multi-Utilisateurs.

    Cependant en faisant des essais sur deux trois trucs, je me suis aperçu d'un temps de réponse qui peut-être considérable entre les tables liées à une base sur un serveur et à une connection DAO sur cette même table.

    J'ai donc crée un table avec 3 champs dans une base sur un serveur.
    J'ai ensuite crée une base, dans laquelle j'ai réalisé une liaison sur cette table.
    A la suite de quoi, j'ai tout simplement crée un formulaire lié à cette table.
    Ensuite, j'ai crée un second formulaire, qui lui est rempli grâce à un recordset avec un code de ce style (pour cela faite une copie du premier formulaire, et supprimer la source).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Form_Load()
     
      Dim db As DAO.Database
      Dim rst As DAO.Recordset
      Dim strSql As String
     
      strSql = "SELECT Table1.N°, Table1.Champ1, Table1.Champ2, Table1.Champ3 FROM Table1;"
      Set db = OpenDatabase("Z:\testreseau\Dorsale.accdb")
      Set rst = db.OpenRecordset(strSql)
      Set Me.Recordset = rst
     
     
    End Sub
    Maintenant faites le test chez vous (la table doit quand même avoir un nombre conséquent de données), et vous constaterez que le formulaire avec une liaison DAO s'affiche plus rapidement que le formulaire avec la table liée.

    Je n'ai pas d'explications techniques, si vous en avez une, n'hésitez pas à donner cette information et à mes donner le résultat de vos propres tests.

    Merci

    Philippe

  2. #2
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    Par défaut Optimisation réseau ?
    Bonjour, Philippe,

    excellente question que tu soulèves là

    J'aimerais aussi faire le test pour déterminer si une liaison est + rapide que l'autre, mais je vais commencer par émettre un doute ( aïe, pour un test, c'est pas un bon début, ça)

    Je suggère de "compliquer" le test avec 3 formulaires :
    1- avec table attachée,
    2- avec table attachée dans l'évènement Form_Load : Me.recordSource = "Table1"
    3- avec table liée par DAO, comme tu l'as fait.

    Je soupçonne que la différence que tu as trouvée entre tes 2 formulaires vient plutôt du moment où la table est liée que du type de liaison.

    Bien sûr, seul le test le dira, mais si j'avance cette hypothèse, c'est que tu touches là à une grande faiblesse congénitale d'Access, assez facile à régler :
    - plus l'accès réseau est difficile, plus le temps de chargement des formulaires est lent (rien de bien génial là dedans, on s'en serait douté ), mais surtout, plus on peut l'accélérer en chargeant les sources une par une.

    L'exemple le plus frappant est une application de 2004, compatible Access 2000 à 2010, pour laquelle, dans des conditions de réseau médiocres (mais courantes), on constatait +/- 2,5 minutes pour ouvrir un formulaire + ses 5 sous-formulaires.
    Rien que de vider les sous-formulaires et de ne les charger que un par un, on a ramené cela à moins de 10 secondes (tests moyen autour de 6 secondes !).

    De nombreux collègues pratiquent cela pour les sous-formulaires. Dans la nouvelle version de cette même application, je vais un petit cran plus loin :
    - chargement de l'objet sous-formulaire (SourceObject) au plus tard (clic sur l'onglet ou autre),
    - chargement de la source de données (RecordSource) dans la foulée, après le SourceObject.

    Le gain est minime, mais appréciable dans les pires cas de réseau.

    Dernier bonus : idem pour toutes les combos, listes et tous autres accès aux
    données. Là aussi, gain minime, mais non négligeable. Par contre, nettement plus complexe à mettre en oeuvre : quand mettre la bonne source, surtout s'il y en a plusieurs possibles... ?
    Développement Office, support technique, assistance, sur place (Loire atlantique, Vendée, Maine et Loire) ou à distance.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut Etienne

    Je vais tester avec les 3 formulaires dans la semaine.

    Philippe

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/05/2015, 14h29
  2. [AC-2003] Consultation tables liées hors connexion
    Par lito74 dans le forum Access
    Réponses: 2
    Dernier message: 28/08/2010, 04h21
  3. ajout enregistrement sur table liée en DAO
    Par pedro91 dans le forum VBA Access
    Réponses: 3
    Dernier message: 25/08/2008, 23h04
  4. Réponses: 5
    Dernier message: 30/03/2006, 13h38
  5. Réponses: 1
    Dernier message: 08/02/2006, 21h31

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