Access 2003 ne peut pas atteindre certains records
8 réponses
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.
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
Gloops <gloops@zailes.invalid.org> 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
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
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.
JeanPaulo <lehmann.jeanpaul;bidon@free.fr> wrote in news:4f8674a6$0$21491
$ba4acef3@reader.news.orange.fr:
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.
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.
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.
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.
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.
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.
Gloops <gloops@zailes.invalid.org> 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.
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.
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 ?
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 ?
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 ?
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...
Gloops <gloops@zailes.invalid.org> 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...
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...
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.
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...
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...