Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/10/2011, 10h30   #1
Membre du Club
 
Inscription : septembre 2006
Messages : 143
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 143
Points : 44
Points : 44
Par défaut Lecture table access selon clé primaire

Bonjour,
Je débute avec access et vba 2003.
J'ai une table qui possède une clé primaire composée d'un numéro (num) et d'une année (an).
Je voudrais la lire dans cet ordre mais, mais elle est lue, quels que soient mes différents essais, dans l'ordre de création.
Voici mon code (enfin une des multiples versions qui ne fonctionnent pas ...)
Code :
1
2
3
4
5
6
7
8
9
10
11
 
Set rs = db.OpenRecordset("TabStat", dbOpenDynaset)
rs.Index = "num;an"
With rs
   If .RecordCount <> 0 Then
      .MoveFirst
      Do While Not .EOF 
        MsgBox .Fields("an")
        .MoveNext
      Loop
   End If
Je suppose que c'est très simple pour un spécialiste de VBA Access. Aussi, si quelqu'un veut bien me donner un petit coup de pouce, qu'il en soit remercié d'avance.
Kim
kimlee est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 20h22   #2
Membre Expert
 
Avatar de nico84
 
Homme Nicolas Guimbal
Consultant/développeur ERP
Inscription : mai 2008
Messages : 1 256
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Guimbal
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant/développeur ERP
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2008
Messages : 1 256
Points : 1 872
Points : 1 872
Bonsoir,

Je ne connais pas .Index... En général je fais comme ça :
Code :
1
2
3
4
5
Set rs = db.OpenRecordset("select * from TabStat order by num,an", dbOpenDynaset)
While Not rs.EOF 
    MsgBox rs!an
    rs.MoveNext
wend
nico84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2011, 00h05   #3
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 895
Points : 3 895
salut kimlee et nico84,

Citation:
Envoyé par F1
Les enregistrements renvoyés d'un objet Recordset de type table peuvent être classés uniquement par les index définis pour l'objet TableDef sous-jacent. Pour classer les enregistrements dans un autre ordre, vous pouvez ouvrir un objet Recordset de type feuille de réponse dynamique, instantané ou avant uniquement à l'aide d'une instruction SQL (instruction/chaîne SQL : expression qui définit une commande SQL, telles que SELECT, UPDATE ou DELETE, et qui inclut des clauses telles que WHERE et ORDER BY. Les instructions/chaînes SQL sont généralement utilisées dans des requêtes et dans des fonctions de regroupement.) avec une clause ORDER BY.
comprendre:
"de type table" : dbOpenTable + index
"de type feuille de réponse dynamique, instantané ou avant uniquement" : dbOpenDynaset, dbOpenSnapshot, dbOpenForwardOnly + "ORDER BY"

vodiem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2011, 18h35   #4
Membre actif
 
Avatar de robyseb
 
Homme Sébastien
Développeur indépendant
Inscription : juillet 2011
Messages : 178
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Localisation : Canada

Informations professionnelles :
Activité : Développeur indépendant

Informations forums :
Inscription : juillet 2011
Messages : 178
Points : 193
Points : 193
est-ce ce dont tu voulais faire ....
Code :
1
2
3
4
5
6
7
8
9
10
Set rs = db.OpenRecordset("TabStat", dbOpenDynaset)
rs.Index = "num;an"
With rs
   If .RecordCount <> 0 Then
      .Movelast
      Do While Not .BOF 
        MsgBox .Fields("an")
        .Moveprevious
      Loop
   End If
robyseb est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h12.


 
 
 
 
Partenaires

Hébergement Web