|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() |
Bonjour,
Dans ma base de donnée, je dois mettre à jour la table " t_pdv" via un bouton qui exécute le code, cette action prend quelques minutes, je veux afficher un autre form indiquant au client de patienter pendant le traitement de la mise à jour, et qui empêche l'accès à d'autres formulaires (fen indépendante) pendant la mise à jour puis elle se ferme automatiquement. Code :
J'ai à la fonction do until et loop mais là ma tête bloque merci d'avance pour votre aide. |
||
|
|
00
|
|
|
#2 |
![]() ![]() |
Bonjour
Si cela prend plusieurs minutes, cela vaut peut être le coup de lire ceci: http://arkham46.developpez.com/artic...s/formattente/
__________________
Plus j'avance et plus j'ai l'impression de ne rien savoir. Et comme j'essaie d'aller loin..!!. Tutoriels sur:http://jdgayot.developpez.com Pas de sujets techniques par Mp. Sinon
|
|
|
20
|
|
|
#3 |
|
Membre du Club
![]() |
Bonjour,
merci pour votre réponse, je vais lire attentivement le tutoriel que vous avez posté et je vous rentrerais réponse dès l'essai. merci encore |
|
|
00
|
|
|
#4 |
![]() ![]() |
Bonsoir,
Le tutoriel d'Arkham46 ne répond malheureusement pas à ton besoin, il est prévu pour afficher une barre de progression lorsque tu utilises un traitement en boucle, ce qui n'est pas le cas ici. Voir par exemple cette discussion. Si tu as vraiment besoin d'afficher une barre de progression autre que celle d'Access, il te faudra effectuer ton traitement en utilisant un Recordset. Domi2
__________________
Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor) Ici, on ne perd pas de temps ! On en passe... Ce message (ou un autre) vous a aidé ? Votez pour lui avec
|
|
|
10
|
|
|
#5 |
|
Membre du Club
![]() |
bonsoir,
vraiment je suis perdu, et j'ai la tête qui bloque j'ai essayé le premier tutoriel d'Arkham46 qui est riche en infirmations, mais c'est pas le cas que je cherche car j'utilise pas une boucle de traitement, et je tiens à remercier GAYOT pour son aide. dans la discussion proposée par Domi2, j'ai presque fais la même chose mais le code bloque sur objet requit j'ai pensé peut être à ajouter une référence liée au progressBar mais c'est introuvable, je voulais rassembler le tutoriel Arkham46 et le code de la discussion proposée par Domi2 en définissant la valeur progressMax et ProgressMin ... sans espoir ... là je suis en mode bug ... ![]() nb: la requête que j'execute copie tout les enregistrement de la table t_pdv liée par ODCB, dans la table t_pdv1 ... cette action prends environ 03 minutes, le curseur se transforme en sablier et on a l'impression que l'application est bloquée mais en réalité la requête est entrain de s'exécuter. c'est pour cela que je voulais trouver un moyen pour afficher un formulaire avec une barre de progression de la mise à jour indiquant au client de se patienter pendant le traitement des données. si vous pouvez m'expliquer le fonctionnement ou me diriger afin que je puisse réaliser cette petite tache qui me paris difficile merci d'avance. |
|
|
00
|
|
|
#6 | ||||
|
Membre du Club
![]() |
Bonjour,
j'ai arrivé à afficher le contrôle active x microsoft progressBar, mais j'ai un petit souci, c'est que j'arrive pas à faire progresser la barre en parallèle avec l'avancement de la requête, ci-dessous le code de progressBar Code :
Code :
DoCmd.RunSQL "INSERT INTO [t_pdv1] SELECT * FROM [t_pdv]" Code :
comment puis-je faire progresser la barre en parallèle avec l'avancement de la requête?, pourriez vous m'indiquer ou ce trouve l'erreur ?. merci à vous. |
||||
|
|
00
|
|
|
#7 | |
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonjour,
Je suis d'accord avec Domi2 : Citation:
Code :
DoCmd.RunSQL "INSERT INTO [t_pdv1] SELECT * FROM [t_pdv]" On ne peut donc pas, par code, afficher la progression de l'exécution de l'instruction SQL INSERT. Si tu veux vraiment afficher une progression, il te faut deux recordsets. Un sur la table source t_pdv pour lire les données, et un sur la table destination t_pdv1 pour ajouter des données. A+ |
|
|
|
10
|
|
|
#8 | ||
|
Membre du Club
![]() |
bonjour,
j'ai essayé la méthode de Recordset mais je sais j'arrive pas, Code :
je veux faire progresser la barre en parallèle AVEC nombre d'enregistrement copiés dans la table "t_pdv". la valeurs maxi du progressBar = nombre d'enregistrement de la table sourse "t_pdv1" (à copier) la valeurs mini du progressBar = 1 la requête: Code :
DoCmd.RunSQL "INSERT INTO t_pdv SELECT * FROM t_pdv1" Où dois-je mette la la requête afin que le progressbar augmente vis-à-vis l'exécution . merci à vous. |
||
|
|
00
|
|
|
#9 | ||
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonjour,
Voici un exemple de code pour vider la table t_pdv et ensuite copier t_pdv1 dans t_pdv : Code :
A+ |
||
|
|
10
|
|
|
#10 | ||
|
Membre du Club
![]() |
Bonjour,
désolé pour le retard, et je tiens à vous remercier pour vos réponses. j'ai réussi à fusionner le code que vous m'avez donné avec le tutoriel proposé par GAYOT "Traitement en boucle" mais j'ai pris que la première partie. à présent l'avancement de la barre de progression par rapport à la requête d'ajout marche nickel, mais avant l'exécution de la requête d'ajout j'ai deux autres action qui précédent, 1 - suppression de tout les enregistrement de la table t_pdv 2 - connexion à la table source t_pdv1 via ODBC ci-dessous le code: Code :
quand je clique sur le bouton d'exécution: 1 - exécution de la requête de suppression 2- l'application ce bloque au moment de connexion ODBC 3 - exécution de la requête d'ajout. comment puis-je contourner le blocage lors de la connexion à la table source via ODBC. et comment puis-je progresser la barre avec la suppression des enregistrement en sachant le nombre total d'enregistrement à effacer. en résumé je veux réaliser ce qui suit: 1 - progresser la barre avec la suppression 2 - libérer l'application lors de la connexion à la table source t_pdv1 3 - progresser la barre avec la requête d'ajout (résolu) merci d'avance pour votre aide. |
||
|
|
00
|
|
|
#11 | ||||
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonjour,
1 - progresser la barre avec la suppression En principe une instruction DELETE ... FROM n'est pas très longue. Je ne crois pas que ça soit valable de supprimer les enregistrements un par un, pour afficher une barre de progression. Ça va être plus long. 2 - libérer l'application lors de la connexion à la table source t_pdv1 Je ne sais pas faire. L'application fige à cause du temps d'exécution combiné, de l'ouverture du recordset et du positionnement sur le dernier enregistrement (rsS.MoveLast). Tu peux éventuellement essayer de remplacer Code :
Code :
A+ |
||||
|
|
10
|
|
|
#12 |
|
Membre du Club
![]() |
Bonjour,
merci pour votre réponse. j'ai modifié la partie dont vous m'avais parler en utilisant l'instruction "DCount" mais le problème persiste, je pense que le problème est lié à l'ouverture de la table source située dans le serveur de mon entreprise. j'ai essayé de mettre le "DoEvents" après le "DCount" mais sans issue...!!! y-a il un moyen pour libérer l'application au moment de la connexion au serveur? merci à vous. |
|
|
00
|
|
|
#13 | ||||||
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonsoir,
Je vais te montrer ce que j'ai essayé en utilisant ADO à la place de DAO. Mon code copie une table tblTest d'une autre base de données Access, dans une table tblTest2 locale. Les deux tables ont exactement les mêmes champs. Sur le clic d'un bouton j'appelle la procédure tstINSERTenADO() dont le code est dans le module de code du formulaire. J'affiche les étapes de progression dans l'étiquette lblStatut. Code :
Code :
Voir http://www.connectionstrings.com/ A partir de la connexion ADO (oCnS) sur la source de données, ADO nous permet d'ouvrir le recordset de manière asynchrone. On peut alors entrer dans une boucle, jusqu'à ce que le recordset soit ouvert. Code :
|
||||||
|
|
10
|
|
|
#14 | ||||||
|
Membre du Club
![]() |
Bonjour,
je te remercie infiniment pour ta réponse, et pour ta proposition,à mon avis la méthode ADO est plus fiable que la méthode DAO , le traitement de la requête se fasse rapidement je gagne 00:01:30 du temps estimé. j'ai remplacé la suppression des enregistrement de la table destination "tbl_pdv" par un jeux de requêtes : - créer une copie de ta table tbl_pdv " structure seulement" - renommer la table "tbl_pdv" en tbl_pdv2" - renommer la table "tbl_pdv1" en tbl_pdv" et après l'exécution de la requête mise à jour je supprime la table tbl_pdv2 Code :
Code :
Code :
quand je lance le code, l'application semble figé pendant "20 seconde" au moment du l'exécution de la première partie ( création de la nouvelle table .. ect ...); est-il possible de contourner ça pour évité ce défaut?? tes suggestions et propositions son les bienvenues, j'avoue que tu m'as beaucoup aidé dans cette partie de mon application. et je tiens à te remercie pour ça. cordialement. |
||||||
|
|
00
|
|
|
#15 |
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonsoir,
Je crois que je suis allé au bout de ce que je sais faire Désolé A+ |
|
|
00
|
|
|
#16 |
|
Membre du Club
![]() |
Bonsoir,
merci commeme tu m'as beaucoup aidé , je pense qu'il n'y a pas de solution à ce petit problème.merci encore. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com