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:
	
	
	
	
	
		
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
	
		
			
		
		
	
				
			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