Bonjour
Comment peut-on faire patienter l'utilisateur genre de faire un progress bar ou une image gif loading durant l’exécution d'une requête SQL ?
Merci
Bien Cordialement
Bonjour
Comment peut-on faire patienter l'utilisateur genre de faire un progress bar ou une image gif loading durant l’exécution d'une requête SQL ?
Merci
Bien Cordialement
Salut,
Pour ce faire sans bloquer l'ihm , il faut passer par exemple par un background worker pour lancer ladite requete.
Salut ,
Merci pour le vidéo , c'est très claire
Comment peut on programmer le progress bar genre le temps d'attente de l’exécution de la requête SQL ?
La requête SQL contient un calcul et des inners joins dont le temps de calcul pour 1 stockage d'une journée est de 1e min, nous avons un stockage hebdomadaire.
Merci
Cordialement
met ta requête dans une procstock ensuite dans une méthode
tu pass la methode dans method avec InvokeMethod
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 internal class ServiceHelper<T> where T: class { private readonly BackgroundWorker backgroundWorker; internal delegate void Completed(T result); internal event Completed CompletedHandler; internal ServiceHelper() { backgroundWorker = new BackgroundWorker(); } internal void InvokeMethod(Func<T> method) { backgroundWorker.DoWork += BackgroundWorkerDoWork; backgroundWorker.RunWorkerCompleted += BackgroundWorkerRunWorkerCompleted; backgroundWorker.RunWorkerAsync(); } private void BackgroundWorkerRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (e == null) return; var result = e.Result as T; if (result == null) throw new InvalidCastException("The result obtained is not of the requested type."); if (CompletedHandler != null) CompletedHandler(result); } private void BackgroundWorkerDoWork(object sender, DoWorkEventArgs e) { if (e == null) return; var method = e.Argument as Func<T>; if (method == null) return; e.Result = method(); } }
Salut , Merci
Comment peut on remplir le progress bar avec le code ci dessus ?
Pourquoi j'ai eu ce problème après le copie colle du code ci dessus dans mon namespace?
Salut,
tout est indiqué dans le message d'erreur : ta déclaration de Form1 doit être la première de ton fichier Form1.cs.
Tu doit recopier la classe que t'a fournie charouel après (ou dans un autre fichier).
Bon dev.
Plus je connais de langages, plus j'aime le C.
ok , comment peut on utiliser cette classe après le copier dans un nouveau fichier class en C#?
J'ai créé la procédure stockée du ma requête , après comment on peut faire l'appel du procédure stockée en utilisant la classe ci dessus ?
Et pour la partie du progress bar comment peut on la programmer ?
merci
Faire une progresse bar qui avance en syncro avec le calcul de la requêtes sur SQL c'est impossible. Tu peux mettre une progressbar qui tourne en boucle par contre.
Il y a éventuellement une solution en faisant une statistique sur le temps d'exécution de la requêtes et en remplissant la progressbar selon une estimation du temps. Si tu sais que ta requête fait normalement 1 minutes, tu peux très bien bidouiller un timer pour qu'il remplisse la barre en 1 minutes indépendamment du traitement de la requête.
Par contre mettre une progressbar sur la matérialisation du résultat d'une requêtes en objet .net (des entités, des datarows ou autres) c'est possible, même si c'est moyennement intéressant vu que c'est pas forcément ce qui prend le plus temps.
J'ajouterai qu'une requête SQL qui fait 1 minutes, c'est probablement une requête, ou une base de données mal construite.
Du point de vue conception; comment peut-on résoudre le problème d'avoir 200 000 lignes dans un tableau qui contient des données suivant des dates ? (chaque date contient 200 000 lignes) ?
La requête prend du temp car il y a inner join 2 fois entre 2 tableaux différentes (tableau calls_durations 2G et calls_durations 3G d'une part et d'autre part Est_Calls_2G et Est_Calls_3G) et il y a le pivotage suivant la capabilité des mobiles.
Alors il y a un traitement de 200 000 *4= 800 000 lignes pour une seule date.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager