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

VB.NET Discussion :

ProgressBar pendant SQL


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 19
    Par défaut ProgressBar pendant SQL
    Bonjour,

    J'ai un bouton qui lance une commande Sql via ODBC pour remplir deux datagridview :

    Me.SectArtTableAdapter.FillBy(Me.DataSet1.SectArt, atc)
    Me.CLIARTTableAdapter.FillBy38(Me.DataSet1.CLIART, atc, client)

    Mon problème est que c'est une requête très longue (env 1 minute) et je voudrais que ma progressbar s'anime pendant la requête.
    J'ai essayé plusieurs méthodes mais sans succès.

    Merci de votre aide.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 25
    Par défaut
    Je sais pas ce que ca peut donner mais j'essaierait ca :
    une requete pour connaitre le nombre d'éléments dans ta table (SELECT COUNT) puis execution de la requete avec en parallèle un thread qui compte toute les secondes le nombre de lignes de tes gridview.

  3. #3
    Membre éclairé
    Profil pro
    Développeur .Net, Administrateur système
    Inscrit en
    Octobre 2003
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .Net, Administrateur système
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 219
    Par défaut
    Si tu es en framework 2.0, tu peux utiliser un backgroundworker. (lier ton traitement long à ton backgroundworker et mettre à jour ta progressbar depuis ce dernier) c'est plus facile que ca en à l'air

    Si tu n'es pas en framework deux... tu as le choix d'utiliser les thread, les méthodes callback. C'est moin évident

    Dans tous les cas, les solutions que je te propose sont des solutions asynchrones. Il doit exister d'autres solutions encore

  4. #4
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 19
    Par défaut
    Ok B Lob,merci ,j 'ai essayé , mais avec le backgroundworker lorsque le thread est lancé, mes datagridview ne se remplissent pas (alors qu'ils le sont si le code n'est pas executé par le Backgroundworker).
    Mon code est peut-être incomplet :

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    client = Me.ClientsDataGridView.CurrentRow.Cells(0).Value
    atc = Me.AtcComboBox.SelectedValue
    Dim atcETclient() As String = {atc, client}
    BackgroundWorker1.RunWorkerAsync(atcETclient)

    End Sub

    Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork

    Me.SectArtTableAdapter.FillBy(Me.DataSet1.SectArt, e.Argument(0))
    Me.CLIARTTableAdapter.FillBy38(Me.DataSet1.CLIART, e.Argument(0), e.Argument(1))

    End Sub

    PS: j'ai testé les e.arguments par msgbox, ils contiennent bien les bonnes valeurs ...

  5. #5
    Membre éclairé
    Profil pro
    Développeur .Net, Administrateur système
    Inscrit en
    Octobre 2003
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .Net, Administrateur système
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 219
    Par défaut
    J'ai testé et rencontre le même probème que toi (et je travaille en C#)

    bref, je n'avais pas utilisé le backgroundworker pour ce genre de traitement et pour que ca marche, j'ai du forcer la propriété DataSource de mon datagridview sur la table voulue lors du backgroundworker.RunWorkerCompleted

    Est ce que cette solution te convient ?

  6. #6
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 19
    Par défaut
    Ca ne marche toujours pas : la requête est executée (durée detraitement similaire à une requête sans Backgrounworker) mais les datagridview restent désespérémént vides ...

    Pourrais-tu poster le code qui fonctionne chez toi ?

    Merci d'avance ,

    Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork

    Me.SectArtTableAdapter.FillBy(Me.DataSet1.SectArt, e.Argument(0))
    Me.CLIARTTableAdapter.FillBy38(Me.DataSet1.CLIART, e.Argument(0), e.Argument(1))


    End Sub

    Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As System.Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
    MsgBox("ok")
    Me.CLIARTDataGridView.DataSource = ClientsBindingSource
    Me.SectArtDataGridView.DataSource = SectArtBindingSource
    End Sub

    Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As System.Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged

    End Sub

Discussions similaires

  1. [XL-2003] progressbar pendant calcul
    Par yvespi dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/07/2010, 13h20
  2. Progressbar pendant execution d'une macro
    Par goby45 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/03/2010, 09h07
  3. ProgressBar requête sql
    Par sondo dans le forum Langage
    Réponses: 10
    Dernier message: 22/06/2009, 20h19
  4. Gérer une progressBar pendant le traitement
    Par lilou77 dans le forum BIRT
    Réponses: 1
    Dernier message: 01/02/2007, 12h04
  5. Comment gérer une Progressbar pendant un CopyFrom ?
    Par greg778 dans le forum Composants VCL
    Réponses: 7
    Dernier message: 25/07/2005, 15h34

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