IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Accès aux données Discussion :

[VB.Net 1.1/ASP.Net/Excel] Pourquoi mon exécution de code est si lente ?


Sujet :

Accès aux données

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 27
    Points : 23
    Points
    23
    Par défaut [VB.Net 1.1/ASP.Net/Excel] Pourquoi mon exécution de code est si lente ?
    Bonjour à tous

    J'ai une page aspx et quand je clique sur un bouton, ça généère un fichier excel sur le serveur et après je donne le lien au client pour qu'il puisse le sauver sur son pc! Cela marche bien.

    Mais quand j'ai commençé à faire plusieurs boucles imbriquées, à l'exécution, il faut 2 minutes si pas plus!!!! Est-ce normal??? Le résultat sort mais c'est très lent :-(

    Voici mon code: (C'est cette partie là qui provoque la lenteur de l'exécution.)


    Code : 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
     
                Dim k As Integer = 3, l As Integer = 0
                Dim i As Integer = 0, j As Integer = 0
                Dim Fct As New Fonctions
                For i = 1 To Fct.DaysInMonth(Mois - 1, Date.Now.Year)
                    oSheet.Cells(1, i + 5) = Mois - 1 & "/" & i
                Next
     
                Dim TabType() As String = New String(16) {"LEG", "REC", "FER",
     "ANC", "RHS", "PRA", "PRP", "DEM", "SSS", "DIV", "MAL", "EDU", "COM",
     "MAR", "MOR", "MAT", "PAR"}
     
                For i = 0 To NbEmploye - 1
                    For j = 0 To 16
                        oSheet.Cells(k, 1) = DSET.Logon(i).LastName & " " &
     DSET.Logon(i).FirstName
                        oSheet.Cells(k, 5) = TabType(j)
                        For l = 1 To Fct.DaysInMonth(Mois - 1, Date.Now.Year)
                            oSheet.Cells(k, l + 5) = "blabla"
                        Next
                        k = k + 1
                    Next
                Next
    Et je suis encore sensée écrire autre chose à la place de "blabla" --> aller dans mon DataSet et vérifier si la personne a prit congé ce jour là et écrire 1 dans la cellule si c'est le cas ou 0.5.


    Deuxième question: pour le filtrage des données, je connais pas grand chose:
    Ca doit être un genre à ça je pense:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim ROWArray As Array = DSET.JOURS.Select("Jour='01/02/2006'")
    Je voudrais récupérer le record correspondant à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT J.partie_jour 
    FROM JOURS J, CONGES C, Logon L
    WHERE J.id_conge=C.ID AND C.Employe=L.ID
    AND J.jour='01/01/2006' AND L.Log='EBEACOLQ01'

    Merci

  2. #2
    Membre expert

    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 581
    Points : 3 016
    Points
    3 016
    Par défaut
    Pour la lenteur, ceci dépend du nombre d'employés que tu as mais bon, en admettant que tu aies 1000 employés, et que tu fasses tourner ta procédure en janvier, tu obtiendras 527 000 itérations, ce qui n'est quand même pas mal. Et encore, tu ne montres pas tout ton code donc peut-être y a-t-il d'autres boucles? (k=k+1 à quoi sert-il?)

    Ensuite pour les filtres, tu utilises la bonne méthode. Il faut en effet mettre par ex: MyDataTable.Select("column <operator> value....");

  3. #3
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Mmmh, comme tu travailles sous ASP.Net, je me demande s'il ne serait pas plus judicieux d'utiliser directement l'exportation native vers le format .xls
    via par exemple :
    System.Web.HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
    Bon il est vrai que çà nécessite une nouvelle fonctionnalité du site qui identifierait le client, lui afficherait son DataSet dans un DataGrid exporté au format .xls, il n'aurait plus qu'à faire un enregistrer sous...
    çà s'éloigne evidemment peut être de ta problématique mais çà résoud je crois les histoires de lenteur et d'implémentations de boucles gourmandes par choix incertain d'un type de programmation
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

Discussions similaires

  1. [MOSS][ASP.NET] Intégrer site ASP.net dans portail MOSS
    Par tigrou2405 dans le forum Développement Sharepoint
    Réponses: 1
    Dernier message: 28/12/2010, 14h12
  2. Problème de migration asp.net 1.1 -> asp.net 2.0
    Par Avatarr dans le forum ASP.NET
    Réponses: 1
    Dernier message: 11/12/2007, 10h13
  3. [ASP.NET 2.O][VB.NET] Remplissage dropdownlist
    Par neuropathie dans le forum ASP.NET
    Réponses: 2
    Dernier message: 21/06/2006, 19h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo