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
 

Statistiques des forums

Discussions
314 060
Messages
2 105 197
Membres
109 287
dernier inscrit
Pistol