Dlookup est-il a eviter ?

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
jerome crevecoeur
Le #6393931
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...




Fabrice N.
Le #6393911
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.

Fabrice N.
Le #6393881
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.

jerome crevecoeur
Le #6393801
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.





Jac
Le #6393791
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." 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...




Fabrice N.
Le #6393641
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+

Fabrice N.
Le #6393631
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+

Fabrice N.
Le #6392531
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 )

Publicité
Poster une réponse
Anonyme