Access VBA Recordset.eof
Fermé
ultwee
Messages postés
4
Date d'inscription
mardi 9 juin 2009
Statut
Membre
Dernière intervention
9 octobre 2009
-
9 oct. 2009 à 13:46
blux Messages postés 26488 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 novembre 2024 - 9 oct. 2009 à 18:28
blux Messages postés 26488 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 novembre 2024 - 9 oct. 2009 à 18:28
A voir également:
- Recordset eof
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Acer quick access - Forum Logiciels
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Access appdata - Guide
- Access runtime ✓ - Forum Access
4 réponses
blux
Messages postés
26488
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
18 novembre 2024
3 315
9 oct. 2009 à 14:01
9 oct. 2009 à 14:01
Salut,
en l'absence de critère spécifique, les données sont renvoyées dans un ordre indéfini lors du parcours d'un recordset (comme dans tout sgbd, d'ailleurs).
Cet ordre est celui qui préside au stockage. Les données ne sont pas classées et renvoyées dans l'ordre de la clé primaire (ou alors par le plus grand des hasards).
Si tu veux faire un movelast sur ta clé primaire, tu dois faire comme suit :
nom_du_rs.index = "PrimaryKey"
nom_du_rs.movelast
en l'absence de critère spécifique, les données sont renvoyées dans un ordre indéfini lors du parcours d'un recordset (comme dans tout sgbd, d'ailleurs).
Cet ordre est celui qui préside au stockage. Les données ne sont pas classées et renvoyées dans l'ordre de la clé primaire (ou alors par le plus grand des hasards).
Si tu veux faire un movelast sur ta clé primaire, tu dois faire comme suit :
nom_du_rs.index = "PrimaryKey"
nom_du_rs.movelast
ultwee
Messages postés
4
Date d'inscription
mardi 9 juin 2009
Statut
Membre
Dernière intervention
9 octobre 2009
9 oct. 2009 à 14:30
9 oct. 2009 à 14:30
"Cet ordre est celui qui préside au stockage."
Si je comprend bien ce que vous voulez dire c'est que l'ordre des enregistrements c'est l'ordre dans lequel ils ont été enregistrés. Si c'est bien ce que vous avez voulu m'expliquer c'est comme ça que j'ai raisonné pour faire l'application et c'est bien comme ca que ca marche jusqu'à ce qu'un évènement dont j'ignore le pourquoi du comment intervienne et "bloque" la fin de la table à une valeur quelconque.
Dans tout les cas ma clé primaire est en "num auto" donc s'incrémente dans un ordre croissant automatiquement à chaque enregistrement et donc mon enregistrement id=99 est donc forcement après mon enregistrement id=78 puisque l'enregistrement a eu lieu après.
Ce qui me trouble le plus c'est que mon code marche très bien à un instant x puis a un instant y se met a dysfonctionner indéfiniment (jusqu'à ce que je fix l'erreur).
Si je comprend bien ce que vous voulez dire c'est que l'ordre des enregistrements c'est l'ordre dans lequel ils ont été enregistrés. Si c'est bien ce que vous avez voulu m'expliquer c'est comme ça que j'ai raisonné pour faire l'application et c'est bien comme ca que ca marche jusqu'à ce qu'un évènement dont j'ignore le pourquoi du comment intervienne et "bloque" la fin de la table à une valeur quelconque.
Dans tout les cas ma clé primaire est en "num auto" donc s'incrémente dans un ordre croissant automatiquement à chaque enregistrement et donc mon enregistrement id=99 est donc forcement après mon enregistrement id=78 puisque l'enregistrement a eu lieu après.
Ce qui me trouble le plus c'est que mon code marche très bien à un instant x puis a un instant y se met a dysfonctionner indéfiniment (jusqu'à ce que je fix l'erreur).
blux
Messages postés
26488
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
18 novembre 2024
3 315
9 oct. 2009 à 15:54
9 oct. 2009 à 15:54
Si je comprend bien ce que vous voulez dire c'est que l'ordre des enregistrements c'est l'ordre dans lequel ils ont été enregistrés
Non, je parle du stockage, comme si on lisait le contenu du disque en partant du premier octet.
donc mon enregistrement id=99 est donc forcement après mon enregistrement id=78 puisque l'enregistrement a eu lieu après
NON ! Qui te dis qu'ils sont au même endroit sur le disque ? peut-être que le cluster windows était plein et que l'on a mis le 99 dans un cluster placé avant le 78...
La façon dont un sgbd enregistre les données physiquement sur disque est inconnue (ou presque), elle obéit à des critères physique de place, mais aussi des critères logiques pour faciliter l'accès (type hash-coding de la clé primaire), c'est pour cela qu'on NE DOIT PAS compter dessus.
Essaie avec .index = "PrimaryKey", il est fort probable que tu n'auras plus l'erreur.
Non, je parle du stockage, comme si on lisait le contenu du disque en partant du premier octet.
donc mon enregistrement id=99 est donc forcement après mon enregistrement id=78 puisque l'enregistrement a eu lieu après
NON ! Qui te dis qu'ils sont au même endroit sur le disque ? peut-être que le cluster windows était plein et que l'on a mis le 99 dans un cluster placé avant le 78...
La façon dont un sgbd enregistre les données physiquement sur disque est inconnue (ou presque), elle obéit à des critères physique de place, mais aussi des critères logiques pour faciliter l'accès (type hash-coding de la clé primaire), c'est pour cela qu'on NE DOIT PAS compter dessus.
Essaie avec .index = "PrimaryKey", il est fort probable que tu n'auras plus l'erreur.
ultwee
Messages postés
4
Date d'inscription
mardi 9 juin 2009
Statut
Membre
Dernière intervention
9 octobre 2009
9 oct. 2009 à 16:30
9 oct. 2009 à 16:30
J'essaye ça la semaine prochaine en espérant que ça marche.
Merci beaucoup du temps que vous m'avez accordé :)
Merci beaucoup du temps que vous m'avez accordé :)
blux
Messages postés
26488
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
18 novembre 2024
3 315
9 oct. 2009 à 18:28
9 oct. 2009 à 18:28
Sans oublier que les données de la base, le code, les formulaires sont stockés dans un fichier unique (à défaut de tables attachées)
La taille de la base ne croit pas linéairement avec le volume de données que l'on y stocke, mais croit par incréments : access stocke donc les données selon des critères particuliers...
Le fait de changer du code (suppression, re-création...) a sans doute provoqué dans access un 'retassement' des données (plus ou moins équivalent à la commande compresser une base, qui supprime physiquement les données effacées, en lieu et place du marquage logique d'effacement)...
La taille de la base ne croit pas linéairement avec le volume de données que l'on y stocke, mais croit par incréments : access stocke donc les données selon des critères particuliers...
Le fait de changer du code (suppression, re-création...) a sans doute provoqué dans access un 'retassement' des données (plus ou moins équivalent à la commande compresser une base, qui supprime physiquement les données effacées, en lieu et place du marquage logique d'effacement)...