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

Dlookup est-il a eviter ?

8 réponses
Avatar
Fabrice N.
Bonjour à tous,

Ma qustiobn va paraître bizzare, mais je voudrais votre avis sur
l'utilisation de la fonction dlookup.

Voici les circonstances.
J'ai une table contenant environs 10 000 enregistrements dont une des
info est un boolean ( case à cocher ).

Entre autre chose, je voudrais à l'ouverture de l'un des mes
formulaires qu'un message apparaisse si au moins un enregistrement à
cette info à vrai. Je fais ça via VBA.
Plutôt que de devoir crer des lignes pour ouvrir la table, rechercher
un enregistrement etc, j'ai voulu utiliser la fonction dlookup.
En gros, je m'en sert pour récupérer le champ de la clé primaire pour
l'enregistrement qu'il trouverait avec la fameuse info vrai.
Ainsi, si il me donne quelque chose c'est qu'il existe au moins un
enregistrement à vrai, si il me retourne "null", c'est qu'il n'y en a
pas.
ça me paraissait une bonne idée jusqu'à la mise en production...
En fait, comme c'est pour un usage réseau, j'ai une base contenant les
tables sur serveur et une base contenant le reste ( requête,
formulaire,... ) sur le poste client.

Quand je démarre le fameux formulaire, il met un temps fou à me le
lancer et visiblement, c'est au niveau de cette fonction que ça rame.

Vous avez des idées à ce sujet ?
Des conseils plus efficaces pour faire la même chose ?

Merci d'avance...

8 réponses

Avatar
jerome crevecoeur
Salutations

Lances-tu ton test sur L'evenement ouverture du formulaire?
Si c'est sur current(activation) là c'est catastrophique

Tu pourrais essayer ce genre de code:

If Dcount("macle","matable","monchampboolean=true")>0 then
Msgbox("Attention info à vrai",vbinformation)
End if

Cela ne devrait pas poser trop de lenteur.

Cordialement


Bonjour à tous,

Ma qustiobn va paraître bizzare, mais je voudrais votre avis sur
l'utilisation de la fonction dlookup.

Voici les circonstances.
J'ai une table contenant environs 10 000 enregistrements dont une des
info est un boolean ( case à cocher ).

Entre autre chose, je voudrais à l'ouverture de l'un des mes formulai res
qu'un message apparaisse si au moins un enregistrement à cette info à
vrai. Je fais ça via VBA.
Plutôt que de devoir crer des lignes pour ouvrir la table, rechercher un
enregistrement etc, j'ai voulu utiliser la fonction dlookup.
En gros, je m'en sert pour récupérer le champ de la clé primaire pour
l'enregistrement qu'il trouverait avec la fameuse info vrai.
Ainsi, si il me donne quelque chose c'est qu'il existe au moins un
enregistrement à vrai, si il me retourne "null", c'est qu'il n'y en a pas.
ça me paraissait une bonne idée jusqu'à la mise en production...
En fait, comme c'est pour un usage réseau, j'ai une base contenant le s
tables sur serveur et une base contenant le reste ( requête,
formulaire,... ) sur le poste client.

Quand je démarre le fameux formulaire, il met un temps fou à me le
lancer et visiblement, c'est au niveau de cette fonction que ça rame.

Vous avez des idées à ce sujet ?
Des conseils plus efficaces pour faire la même chose ?

Merci d'avance...




Avatar
Fabrice N.
Bonjour jerome crevecoeur,
Salutations

Lances-tu ton test sur L'evenement ouverture du formulaire?
Si c'est sur current(activation) là c'est catastrophique


Je le lance sur ouverture ( open ).


Tu pourrais essayer ce genre de code:

If Dcount("macle","matable","monchampboolean=true")>0 then
Msgbox("Attention info à vrai",vbinformation)
End if

Cela ne devrait pas poser trop de lenteur.


Je viens de faire l'essai, c'est toujours aussi lent.

Cordialement


En tout cas, merci pour le coup de main.

Avatar
Fabrice N.
Bonjour jerome crevecoeur,
Salutations

Lances-tu ton test sur L'evenement ouverture du formulaire?
Si c'est sur current(activation) là c'est catastrophique

Tu pourrais essayer ce genre de code:

If Dcount("macle","matable","monchampboolean=true")>0 then
Msgbox("Attention info à vrai",vbinformation)
End if

Cela ne devrait pas poser trop de lenteur.

Cordialement



En fait, aprèqs quelques testes, il semble que mon problème vienne de
l'accès à la base des données qui est lent.

Je fais un autre post pour ça.

Avatar
jerome crevecoeur
Quelques pistes ici:

http://www.developpez.net/forums/archive/index.php/t-5459.html

-Verifier paramètrage de l'antivirus,
-Chemin de la base de données sans espace et assez court
-Ouvrir un formulaire bidon au démarrage
-Vérifiez l'état du réseau

Cordialement


Bonjour jerome crevecoeur,
Salutations

Lances-tu ton test sur L'evenement ouverture du formulaire?
Si c'est sur current(activation) là c'est catastrophique

Tu pourrais essayer ce genre de code:

If Dcount("macle","matable","monchampboolean=true")>0 then
Msgbox("Attention info à vrai",vbinformation)
End if

Cela ne devrait pas poser trop de lenteur.

Cordialement



En fait, aprèqs quelques testes, il semble que mon problème vienne de
l'accès à la base des données qui est lent.

Je fais un autre post pour ça.





Avatar
Jac
Bonjour Fabrice,

tu pourrais passer par une requête avec un 1 dans le champ boléen et voir le
temps de réponse. Ensuite, dans le formulaire tu pourrais mettre ce champ en
champ masqué et regarder s'il contient 1 ou compter combien de lignes dans
la requête.

On en reparle quand tu veux.

Jac

"Fabrice N." <"fabrice.n.surlenet" avec l'@ chez free> a écrit dans le
message de news:
Bonjour à tous,

Ma qustiobn va paraître bizzare, mais je voudrais votre avis sur
l'utilisation de la fonction dlookup.

Voici les circonstances.
J'ai une table contenant environs 10 000 enregistrements dont une des info
est un boolean ( case à cocher ).

Entre autre chose, je voudrais à l'ouverture de l'un des mes formulaires
qu'un message apparaisse si au moins un enregistrement à cette info à
vrai. Je fais ça via VBA.
Plutôt que de devoir crer des lignes pour ouvrir la table, rechercher un
enregistrement etc, j'ai voulu utiliser la fonction dlookup.
En gros, je m'en sert pour récupérer le champ de la clé primaire pour
l'enregistrement qu'il trouverait avec la fameuse info vrai.
Ainsi, si il me donne quelque chose c'est qu'il existe au moins un
enregistrement à vrai, si il me retourne "null", c'est qu'il n'y en a pas.
ça me paraissait une bonne idée jusqu'à la mise en production...
En fait, comme c'est pour un usage réseau, j'ai une base contenant les
tables sur serveur et une base contenant le reste ( requête,
formulaire,... ) sur le poste client.

Quand je démarre le fameux formulaire, il met un temps fou à me le lancer
et visiblement, c'est au niveau de cette fonction que ça rame.

Vous avez des idées à ce sujet ?
Des conseils plus efficaces pour faire la même chose ?

Merci d'avance...




Avatar
Fabrice N.
Bonjour jerome crevecoeur,
Quelques pistes ici:

http://www.developpez.net/forums/archive/index.php/t-5459.html

-Verifier paramètrage de l'antivirus,
-Chemin de la base de données sans espace et assez court
-Ouvrir un formulaire bidon au démarrage
-Vérifiez l'état du réseau

Cordialement


Super, ça m'a l'air pas mal tout ces conseils... je vais jeter un oeil
à tout ça...

Un grand merci pour ce lien...

A+

Avatar
Fabrice N.
Bonjour Jac,
Bonjour Fabrice,

tu pourrais passer par une requête avec un 1 dans le champ boléen et voir le
temps de réponse. Ensuite, dans le formulaire tu pourrais mettre ce champ en
champ masqué et regarder s'il contient 1 ou compter combien de lignes dans la
requête.

On en reparle quand tu veux.

Jac


J'y avais pensé. Surtout que j'avais une requête qui filtrait déjà pour
ces affichages. Je m'en suis donc servi, mais ça n'a pas vraiment été
concluant.

En tout cas, merci pour le conseil...

A+

Avatar
Fabrice N.
Bonjour jerome crevecoeur,
Quelques pistes ici:

http://www.developpez.net/forums/archive/index.php/t-5459.html

-Verifier paramètrage de l'antivirus,
-Chemin de la base de données sans espace et assez court
-Ouvrir un formulaire bidon au démarrage
-Vérifiez l'état du réseau

Cordialement


Voir ma réponse dans le post Acces lent une base sur réseau à Thierry
(ze Titi)

(désolé je ne sais pas mettre un lien vers un autre post )