Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

requête ODBC

vinzopus

XLDnaute Nouveau
Bonjour,

Je rencontre un problème lors de requête ODBC.

Je cherche à effectuer plusieurs requêtes, en traitant à chaque fois les données fournies par ces requêtes et en passant à la suivante.

Le paramètre est naff.
Il y a des "bons" naff, pour lesquels la requête retourne des données, et des "mauvais" naff, pour lesquels la requête ne retourne rien.

Voici le bout de mon code qui pose problème:

Code:
Sub requeteMultiple()
'
' requeteMultiple Macro
' Macro enregistrée le 12/03/2008 par SCAFFHOLDING
'
    naff = 9001
        Worksheets("requete").Select
        Cells.Select
        Selection.ClearContents
        'Selection.QueryTable.Delete
        Range("A1").Select
        
        If ActiveSheet.QueryTables.Count = 0 Then
            With ActiveSheet.QueryTables.Add(Connection:= _
                "ODBC;DSN=Base de données WCLIP;;ANA=c:\wclipper\WCLIP.wd5\WCLIP.wdd;;REP=T:\FICHIERS\GALVA-AFA\;" _
                , Destination:=Range("A1"))
                .CommandText = Array( _
                "SELECT POINT.COFRAIS, POINT.TPSPASSE" & Chr(13) & "" & Chr(10) & "FROM c:\wclipper\WCLIP.wd5\WCLIP.wdd~POINT POINT" & Chr(13) & "" & Chr(10) & "WHERE (POINT.NAF=" & naff & ")" & Chr(13) & "" & Chr(10) & "ORDER BY POINT.COFRAIS")
                .Refresh BackgroundQuery:=True
            End With
            MsgBox "ok1 " & naff
        
        Else
            With ActiveSheet.QueryTables.Item(1)
            
            'With ActiveSheet.QueryTables.Add(Connection:= _
             '   "ODBC;DSN=Base de données WCLIP;;ANA=c:\wclipper\WCLIP.wd5\WCLIP.wdd;;REP=T:\FICHIERS\GALVA-AFA\;" _
              '  , Destination:=Range("A1"))
                .CommandText = Array( _
                "SELECT POINT.COFRAIS, POINT.TPSPASSE" & Chr(13) & "" & Chr(10) & "FROM c:\wclipper\WCLIP.wd5\WCLIP.wdd~POINT POINT" & Chr(13) & "" & Chr(10) & "WHERE (POINT.NAF=" & naff & ")" & Chr(13) & "" & Chr(10) & "ORDER BY POINT.COFRAIS")
                .Refresh BackgroundQuery:=True
            End With
            MsgBox "ok2 " & naff
        End If
    MsgBox "c fini!"
End Sub

Mon problème est le suivant:
- dans l'état actuel des choses la requête ne s'effectue que lorsque le reste de mon programme est fini (et donc je ne peux pas traiter les données de la requête)
- si je passe à .Refresh BackgroundQuery:=False, alors la requête bloque pour les "mauvais" naff.
Il me faut donc trouver un moyen:
- soit de forcer la requête à s'achever, même si .Refresh BackgroundQuery:=True, avant de poursuivre la suite du programme
- soit arriver à faire fonctionner la requête avec .Refresh BackgroundQuery:=False lorsqu'à la requête ne correspondent pas de données.

Des idées?
Merci beaucoup!

Vincent
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…