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

Windows Forms Discussion :

Timeout sur un dataAdapter.Fill


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 63
    Par défaut Timeout sur un dataAdapter.Fill
    Je roule une requête et mon application VB.Net décide après x secondes que c'est assez et me donne un timeout, quand je roule la requête à la main sur le serveur, la requête prend 2 minutes à rouler mais me donne un résultat.

    Je ne trouve pas comment augmenter le délai d'attente.

    Voici mon code, quelqu'un peut m'aider?

    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
    24
    25
    26
    27
    28
    Public Function GetDataInDGV(ByVal selectCommand As String, ByRef DGV As DataGridView) As Integer
            'Cette fonction permet de remplir un DataGrid en fonction d'un SELECT SQL
            Dim dataAdapter As New SqlDataAdapter()
            Dim bindingSource1 As New BindingSource()
     
            ' Create a new data adapter based on the specified query.
            dataAdapter = New SqlDataAdapter(selectCommand, strConnectionString)
     
            ' Create a command builder to generate SQL update, insert, and
            ' delete commands based on selectCommand. These are used to
            ' update the database.
            Dim commandBuilder As New SqlCommandBuilder(dataAdapter)
     
            ' Populate a new data table and bind it to the BindingSource.
            Dim table As New DataTable()
            table.Locale = System.Globalization.CultureInfo.InvariantCulture
     
            dataAdapter.Fill(table)
            bindingSource1.DataSource = table
     
            DGV.DataSource = bindingSource1
     
            ' Resize the DataGridView columns to fit the newly loaded content.
            DGV.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader)
     
            GetDataInDGV = bindingSource1.Count
     
        End Function

  2. #2
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 183
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 183
    Par défaut
    Bonjour.

    Citation Envoyé par TCW78 Voir le message
    quand je roule la requête à la main sur le serveur, la requête prend 2 minutes à rouler mais me donne un résultat.
    Et tu comptes vraiment afficher ça dans un Datagridview ?

    Outre les 2 minutes d'accés aux données (sachant qu'avec la couche Ado ça sera sans doute plus long, mais je ne sais pas comment tu as obtenu les 2 min) faut rajouter le temps de chargement du DGV.
    Là aprés les X minutes d'attente le résultat est consultable ...

    Je pense donc qu'il faut oublier ce type de chargement et passer en VirtualMode sur le DGV.

    Cdt.

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    374
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 374
    Par défaut
    Bonjour
    Avec un objet sqlcommand tu as une propriété commandtimeout qui te permet de modifier le timeout par défaut.
    Bien sur il faut entrer la requête à la main
    Il y a aussi une propriété connectiontimeout dans l'objet sqlconnection
    Bon boulot Jean

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 63
    Par défaut
    Merci pour la réponse du timeout je vais essayer.
    Mais qu'est-ce que le VirtualMode sur un DGV?

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    374
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 374
    Par défaut
    Bonjour,
    En bref, plutôt que charger tous les enregistrements en une fois dans le DGV , tu peux choisir le nombre de lignes à afficher, tu gères toi-même l'affichage des données.
    Cherche dans l'aide, propriété virtualMode du datagridview.
    Bon boulot Jean

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 63
    Par défaut
    Étant donné que mon problème est que la requête prend beaucoup de temps à donner le résultat voulu et non que ça prend trop de temps loader mes données dans le DGV à cause de nombre trop élevé d'enregistrements, je serais mieux de voir ce que le timeout peut faire pour moi.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6] Comment gérer un Timeout sur l'api HttpSendRequest
    Par marsup54 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 15/06/2006, 10h15
  2. Timeout sur POST formulaire avec checkbox
    Par shyangel dans le forum Langage
    Réponses: 16
    Dernier message: 11/05/2006, 12h59
  3. Comment définir un timeout sur une socket PHP ?
    Par N3odyme dans le forum Langage
    Réponses: 7
    Dernier message: 07/05/2006, 23h04
  4. Timeout sur read() avec termios et VTIME
    Par olivier857 dans le forum C
    Réponses: 9
    Dernier message: 05/04/2006, 09h30
  5. [Sockets] Timeout sur accept() ?
    Par MikB dans le forum Développement
    Réponses: 2
    Dernier message: 30/12/2003, 17h22

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