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