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

VBA Access Discussion :

Recorset et index table fractionnée [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre habitué
    Homme Profil pro
    Apprendre
    Inscrit en
    Avril 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Canada

    Informations professionnelles :
    Activité : Apprendre
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 147
    Points : 175
    Points
    175
    Par défaut Recorset et index table fractionnée
    Bonjour,

    Problème que je n'avais pas vu venir.

    J'ai un formulaire sur lequel j'ai un Gannt qui fonctionne quand ma base n'est pas fractionnée. Par contre, lorsque fractionnée, je n'arrive pas à ouvrir un recordset pour y appliquer un tri:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ' Ouvrir le recordset de projets
    Set rs = CurrentDb.OpenRecordset("Projets", dbOpenTable)
     
    ' Classer par date de start-up
    rs.Index = "DateStartup"
    J'arrive à éviter l'erreur du recordset en y appliquant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rs = CurrentDb.OpenRecordset("Projets", dbOpenDynaset)
    Mais l'erreur passe alors sur mon rs.index.

    ici, on m'indique qu'un index ne peut se faire sur un dynaset:
    http://warin.developpez.com/access/d...=partie_5#L5.2

    quelqu'un à une idée comment régler ce problème?

    Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 052
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 052
    Points : 24 645
    Points
    24 645
    Par défaut
    Bonjour,

    dbOpenTable ne fonctionne pas avec des tables attachées.

    Tu dois ouvrir la base de données contenant les tables pour utiliser cette instruction. Cf MSDN :
    http://msdn.microsoft.com/fr-fr/libr.../ff194103.aspx

    Tu souhaites faire quoi avec ce montage ?

    Cordialement,

  3. #3
    Membre habitué
    Homme Profil pro
    Apprendre
    Inscrit en
    Avril 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Canada

    Informations professionnelles :
    Activité : Apprendre
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 147
    Points : 175
    Points
    175
    Par défaut
    Bonjour,

    L'objectif est le suivant:

    À partir d'une table qui contient des projets et leurs date de début, fin et diverses autres informations, je produis un diagramme de Gannt, un peu comme celui-ci:

    http://www.besoindaide.com/ccm/projet/gantt.htm

    Donc, organisation de projets et de tâches dans un tableau selon une échelle de temps.

    Le problème, c'est que si je navigue dans mon recordset sans index, je ne peux pas ordonnancer les projets dans un genre de cascade qui débute du plus ancien vers le plus récent et je me retrouve avec des barres dispersées un peu partout.

    Donc, la fonction Index me permettait de le faire dans une version non-fractionnée de la base.

    Je précise également que ma base est pour plusieurs utilisateurs, ce qui fait que mes projets, date ou autres peuvent être modifier tout en utilisant le Gannt et ce par deux utilisateurs en même temps. J'aimerais évité d'avoir à refaire une bonne partie de mon code, je trouvais l'index très rapide comme solution

    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 : 41
    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
    Utilisez simplement une clause ORDER BY dans la requête source du recordset. De cette sorte vous pourrez trier les données comme bon vous semble.

  5. #5
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 052
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 052
    Points : 24 645
    Points
    24 645
    Par défaut
    Citation Envoyé par Tofalu Voir le message
    Utilisez simplement une clause ORDER BY dans la requête source du recordset. De cette sorte vous pourrez trier les données comme bon vous semble.
    C'est bien ce qu'il me semblait...

    ...je trouvais l'index très rapide comme solution
    C'est que tu n'as pas mis en pratique le SQL.

  6. #6
    Membre habitué
    Homme Profil pro
    Apprendre
    Inscrit en
    Avril 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Canada

    Informations professionnelles :
    Activité : Apprendre
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 147
    Points : 175
    Points
    175
    Par défaut
    Bonjour,

    J'invoquerais de nouveau votre aide.

    Donc, si je comprends bien la séquence, j'y vais avec un SQL ORDER BY dans mon appel de table:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ' Ouvrir le recordset de projets
    Set rs = CurrentDb.OpenRecordset("SELECT [IdProjet] FROM Projets ORDER BY [DateStartup]", dbOpenTable)
    Mais...Je deviens soudainement humble, comment puis-je faire pour récupérer la valeur du champ IDProjet?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ' Aller au Premier enregistrement
    rs.MoveFirst
     
    ' Tant que la fin de la table n'est pas atteinte
    While Not rs.EOF
     
        ' Récupérer les champs pertinents
        ValeurChamp = rs.Fields("IDProjet")
    Mais j'imagine que mon appel de champ se fait différemment?

    Même après 1 an et demi à faire de la programmation, je me rend compte que j'ai un long chemin encore à faire...

    Humilité, quand tu me tiens

    Merci!

  7. #7
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 052
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 052
    Points : 24 645
    Points
    24 645
    Par défaut
    Pourquoi différemment ? Tu travailles toujours avec un recordset, c'est donc la même méthode à appeler.

  8. #8
    Membre habitué
    Homme Profil pro
    Apprendre
    Inscrit en
    Avril 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Canada

    Informations professionnelles :
    Activité : Apprendre
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 147
    Points : 175
    Points
    175
    Par défaut
    Effectivement, simple erreur de syntaxe de ma part

    Merci

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

Discussions similaires

  1. Temps de création index table InnoDB trop long
    Par ctobini dans le forum SQL Procédural
    Réponses: 0
    Dernier message: 22/02/2008, 09h23
  2. [XMLTYPE] - Index - TABLE ACCESS FULL
    Par jacquesh dans le forum SQL
    Réponses: 10
    Dernier message: 16/01/2008, 22h51
  3. [INDEX] table de références
    Par tux2005 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 16/10/2007, 11h01
  4. doclect.db corrupt index table header
    Par westpc dans le forum Paradox
    Réponses: 2
    Dernier message: 14/06/2007, 17h55
  5. table fractionnée
    Par noname_971 dans le forum Access
    Réponses: 4
    Dernier message: 08/03/2006, 22h12

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