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

Macros et VBA Excel Discussion :

Gestion time out lecture SQL


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Par défaut Gestion time out lecture SQL
    Bonjour,
    J'ai récupéré une requête pour lire depuis une macro excel une base sql qui fonctionne sauf que le time out de 30 secondes coince pour certaines extractions.
    J'aimerais l'étendre, mais ne sais pas du tout comment faire.

    Je ne sais pas comment gérer une commande de type time out.

    Voici le code

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    Sub GetDataFromADO()
        Cells.Select
        Range("b2:k65536").Select
        Selection.ClearContents
     
        'Declare variables'
            Dim objMyConn As ADODB.Connection
            Dim objMyCmd As ADODB.Command
            Dim objMyCmd2 As ADODB.Command
            Dim objMyRecordset As ADODB.Recordset
     
            Set objMyConn = New ADODB.Connection
            Set objMyCmd = New ADODB.Command
            Set objMyRecordset = New ADODB.Recordset
     
    ' C'est là que je ne sais pas comment syntaxer !!!!!!!
    Set cmd = CreateObject("ADODB.Command")
    Set cmd.CommandTimeout = 120
     
    ' ici la requête qui fonctionne
    'Open Connection'
            objMyConn.ConnectionString = "Provider=SQLOLEDB;Data Source=*****;Initial Catalogue=******;User ID=*****;Password=***;"
     
            objMyConn.Open
            Set objMyCmd.ActiveConnection = objMyConn
            objMyCmd.CommandText = "SELECT container.Container, Product.ProductNo, TT_Prod.Medium, Z_LOT_NO_CHARACTERISTIC.string02, APR_Inventory.LotNo, Container.Warehouse, APR_Inventory.Location, TT_Comment.Extended" & _
            " FROM [***].[dbo].[Inventory_Container]" & _
            " INNER JOIN [***].[dbo].[Container] ON container.container = inventory_container.container" & _
            " INNER JOIN [***].[dbo].[inventory] ON ID = Inventory_container.inventoryID " & _
            " INNER JOIN [***].[dbo].[APR_Inventory] ON APR_Inventory.InventoryId = Inventory.ID  " & _
            " INNER JOIN [***].[dbo].[LOT_NO] ON [***].[dbo].[LOT_NO].[LotNo] = APR_Inventory.LotNo" & _
            " INNER JOIN [***].[dbo].[Z_LOT_NO_CHARACTERISTIC] ON [flexnet].[dbo].[Z_LOT_NO_CHARACTERISTIC].[LotNo] = APR_Inventory.LotNo" & _
            " INNER JOIN [***].[dbo].[PRODUCT] ON PRODUCT.ID = [flexnet].[dbo].[inventory].ProductID" & _
            " INNER JOIN [***].[dbo].[TEXT_TRANSLATION] AS TT_Prod ON TT_Prod.TextID = PRODUCT.TextID AND TT_Prod.LanguageID = '1036'" & _
            " INNER JOIN [***].[dbo].[TEXT_TRANSLATION] AS TT_Comment ON TT_Comment.TextID = LOT_NO.TextID AND TT_Comment.LanguageID = '1036'" & _
            " WHERE Container.Container like '" + Worksheets("ProtectedSheet").Cells(1, 1).Value + "%'"
        'Open Recordset'
            Set objMyRecordset.Source = objMyCmd
            objMyRecordset.Open
     
        Range("B2").Select
        ActiveSheet.Range("B2").CopyFromRecordset objMyRecordset
    Merci pour votre aide
    Denis

  2. #2
    Invité
    Invité(e)
    Par défaut
    bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     objMyConn.Open
    objMyConn.CommandTimeout = 120

  3. #3
    Membre éclairé
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Par défaut
    Bonjour,
    merci pour la suggestion, mais cela n'a pas d'effet.

    Actuellement le timeout apparait au bout de 30".
    j'ai mis la valeur 120 puis 10, mais le timeout intervient toujours après 30".

    ?

    Denis

  4. #4
    Invité
    Invité(e)
    Par défaut
    voila ce que je mets dans mes code! Connexion.CommandTimeout = 14400!

    35>30 -> 35 *60 *1000=2100000 Connexion.CommandTimeout = 2100000

  5. #5
    Membre éclairé
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Par défaut
    Oui je comprends, mais quelquesoit la valeur que je mets , il s'arrête après 30".

    J'ai essayé de le placer après
    mais c'est sans effet.

  6. #6
    Invité
    Invité(e)
    Par défaut
    ok tu fais de jointures inter bases (INNER JOIN [***].) mais sur Sql Serveur le résultat devrai être quasi instantané!

    rapproche toi du dba pour savoir si les maintenance d'usage sont bien effectués! (Compactage {base, journal etc.})

    mois un requête comme ça je claque de doit et le résulta est là et j'ai plus de 20 ans de données!

    je programme la maintenance des basse sql serveur journellement!

Discussions similaires

  1. Gestion des licenses concurrentes (time-out)
    Par thecrazydonut dans le forum MATLAB
    Réponses: 1
    Dernier message: 13/11/2014, 10h04
  2. SQL SERVER 2005 - SSIS - time out et index de tables
    Par Negaton dans le forum Développement
    Réponses: 7
    Dernier message: 30/06/2010, 10h33
  3. [Session]maîtriser le time out de la session
    Par croquedur dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 23/10/2007, 10h57
  4. [API java.net] gestion du time out et de nombre de conn max
    Par java_fun dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 02/11/2006, 23h06
  5. SQL Server Time out sur Access
    Par Ronin-MK dans le forum Access
    Réponses: 2
    Dernier message: 14/06/2006, 20h42

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