Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Access 2003 ne peut pas atteindre certains records

8 réponses
Avatar
JeanPaulo
Bonjour.

J'ai une base Access 2003 avec 130 000 enregistrements, que je peut
atteindre soit par le titre (liste déroulante modifiable), soit par le
numéro d'enregistrement.

Le code 'after update' cherche l'enregistrement selon le 'bookmark'

Depuis quelques semaines, quand j'essaie d'atteindre CERTAINS
enregistrements, je trouve en fait un autre, sans relation,
avec en général un numéro de 3 chiffres (au lieu de 6), mais qui
n'a pas de lien.

Curieusement, si je cherche 'par numéro', , raté, et que je prend
le précédent (ou le suivant), je trouve ce dernier, et le
bouton 'suivant' trouve alors l'enregistrement voulu.

J'ai compacté la base sans succès.

Quelqu'un a t'il une idée (code system corrompu, bug ?)

Il semble que le problème est apparu depuis que j'ai dépassé 128000
enregistrements. (J'avais déjà atteint la limite des listes déroulantes
à 65000 que j'ai dépassé avec une liste 'dynamique').

Je n'ai pas trouvé de lien apparent entre les 'bons' et les 'mauvais'
enregistrements (il y a des liens croisés avec plusieurs autres tables et
sous formulaires.

Marci pour toute aide.

8 réponses

Avatar
Gloops
Bonjour,

C'est étrange, cette histoire.

Quelle tête il a, le code "after update" ?
Avatar
JeanPaulo
Gloops wrote in news:jm69h3$6db$1
@nntp.pasdenom.info:

Bonjour,

C'est étrange, cette histoire.

Quelle tête il a, le code "after update" ?






Hélas, du code très ordinaire, au moins pour celui qui cherche la clé :

Sub Combo70_AfterUpdate()
' Find the record that matches the control.
Me.RecordsetClone.FindFirst "[Film_index] = " & Me![Combo70]
Me.Bookmark = Me.RecordsetClone.Bookmark
End Sub

Film_index est la clé principale de la table, et Combo70 la liste
déroulante (a noter qu'elle n'affiche pas la valeur cherchée qui
s'arrêtte à 68969, soit probablement le 65536ème enregistrement), mais
que cela fonctionne la plupart du temps quand on colle la clé voulue)

ceci fonctionne 99 fois sur 100, même avec des clés telles que
128960. La clé 144505 fonctionne de temps à autre...

L'autre recherche se fait sur le titre, mais là aussi, c'est
intermittent.

La recherche du titre dans la table elle-même ne pose pas de problème,
avec la fonction 'recherche' du menu
Avatar
JeanPaulo
JeanPaulo <lehmann.jeanpaul; wrote in news:4f8674a6$0$21491
$:

Bonjour.

J'ai une base Access 2003 avec 130 000 enregistrements, que je peut
atteindre soit par le titre (liste déroulante modifiable), soit par le
numéro d'enregistrement.

Le code 'after update' cherche l'enregistrement selon le 'bookmark'

Depuis quelques semaines, quand j'essaie d'atteindre CERTAINS
enregistrements, je trouve en fait un autre, sans relation,
avec en général un numéro de 3 chiffres (au lieu de 6), mais qui
n'a pas de lien.

C


Sans vouloir crier victoire, j'ai inserré un DoEvents dans les deux
routines de recherche, et ceci semble faire disparaitre le problème
aléatoire.
Avatar
Gloops
JeanPaulo a écrit, le 14/04/2012 09:33 :
Sans vouloir crier victoire, j'ai inserré un DoEvents dans les deux
routines de recherche, et ceci semble faire disparaitre le problème
aléatoire.




Ah, à cause du temps que prend la recherche ...
Ah oui il faut y penser, à ça.

Bon alors le RecordsetClone peut s'employer directement, il a un
Bookmark unique ? J'avais pris l'habitude de l'implémenter

Set Rs = Form.RecordsetClone
Rs.FindFirst "lieu=là"
Form.Bookmark = Rs.Bookmark

J'étais à me demander si ça jouait un rôle.
Apparemment, non.
Avatar
JeanPaulo
Gloops wrote in news:jmbfqh$ljv$1
@nntp.pasdenom.info:

JeanPaulo a écrit, le 14/04/2012 09:33 :

Ah, à cause du temps que prend la recherche ...
Ah oui il faut y penser, à ça.

Bon alors le RecordsetClone peut s'employer directement, il a un
Bookmark unique ? J'avais pris l'habitude de l'implémenter

Set Rs = Form.RecordsetClone
Rs.FindFirst "lieu=là"
Form.Bookmark = Rs.Bookmark

J'étais à me demander si ça jouait un rôle.
Apparemment, non.





J'avais péché ça dans un exemple 'Microsoft', et ça marche
depuis plusieurs années !

Il y a sans doute un 'glitch' dans le temps.

Ce qui est quand même curieux, c'est que quand le problème
se produit, cet enregistrement reste introuvable pendant un certain
temps (quelques heures/jours ?), puis ça repart.
Avatar
Gloops
JeanPaulo a écrit, le 14/04/2012 12:54 :
J'avais péché ça dans un exemple 'Microsoft', et ça marche
depuis plusieurs années !

Il y a sans doute un 'glitch' dans le temps.

Ce qui est quand même curieux, c'est que quand le problème
se produit, cet enregistrement reste introuvable pendant un certain
temps (quelques heures/jours ?), puis ça repart.



Ah ? On peut imaginer que les index sont recompilés de temps à autre ?

Et avec le DoEvents, il faut aussi attendre un certain temps ?
Avatar
JeanPaulo
Gloops wrote in news:jmc226$quq$1
@nntp.pasdenom.info:

JeanPaulo a écrit, le 14/04/2012 12:54 :



Ah ? On peut imaginer que les index sont recompilés de temps à autre ?

Et avec le DoEvents, il faut aussi attendre un certain temps ?





Pour les index, je ne sais pas. Le Doevents permet au systeme
de faire les routines urgentes, alors que sinon il attend
la fin d'exécution du code. En pratique, ceci permet souvent
des mises à jour de l'affichage. Mais l'effet n'est pas
perceptible à la saisie (alors que la copie d'un certain nombre
d'enregistrements secondaire marque une pause notable.)

Est-ce bien la solution ? je ne sait pas, mais le problème
n'est pas revenu depuis. Je croise les doigts...
Avatar
Gloops
JeanPaulo a écrit, le 16/04/2012 06:22 :
Pour les index, je ne sais pas. Le Doevents permet au systeme
de faire les routines urgentes, alors que sinon il attend
la fin d'exécution du code. En pratique, ceci permet souvent
des mises à jour de l'affichage. Mais l'effet n'est pas
perceptible à la saisie (alors que la copie d'un certain nombre
d'enregistrements secondaire marque une pause notable.)



Oui, je connais, merci.


Est-ce bien la solution ? je ne sait pas, mais le problème
n'est pas revenu depuis. Je croise les doigts...



On va voir, ça démarre bien.