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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
| Function extractionXML(CritereInterro As String) As Boolean
'-------------------------------------------------------------
' Auteur : Naphta , 03-11-2005
' Notes :Requête d interrogation XML
'-------------------------------------------------------------
' Paramètre que l'on passe au serveur distant option
'-----------
' CritereInterro (String)
'-------------------------------------------------------------
Dim leFichier, RepDestination, URL
Dim xml
Dim ostream
Dim fs
On Error GoTo oror
leFichier = "resu.xml"
' ici c'est le répertoire mes documents qui a été choisi
' c'est pour des commerciaux !
RepDestination = fGetSpecialFolderLocation(&H5) + "\"
Set fs = CreateObject("Scripting.FileSystemObject")
If fs.FileExists(RepDestination & leFichier) Then
Kill RepDestination & leFichier
End If
DoCmd.Hourglass True
' l adresse et param ici votre serveur et paramètres
URL = "http://www.votresite.fr/interro/recherche.asp?crit=BB400" + CritereInterro
' déclare envoi et pompe le fichier
Set xml = CreateObject("MSXML2.ServerXMLHTTP")
Set ostream = CreateObject("Adodb.Stream")
xml.Open "GET", URL, True
xml.Send
'Attendre un peu si pas ready 3 sec de +, à 1 minute on arrête
Dim cpt As Integer
Do Until xml.ReadyState = 4
xml.waitForResponse 3
cpt = cpt + 1
If cpt = 20 Then
xml.Abort
MsgBox "C'est trop long, problème avec le serveur ou votre requête, arrêt.", vbCritical, "Attention"
DoCmd.Hourglass False
Exit Do
End If
Loop
' puis sauvegarde ici les constantes sont importantes
' vous allez peut être devoir faire d'autre choix
Const adTypeText = 2
Const adSaveCreateOverWrite = 2
Const adSaveCreateNotExist = 1
ostream.Type = adTypeText
ostream.Charset = "iso-8859-1"
ostream.Open
ostream.WriteText xml.ResponseText
ostream.SaveToFile RepDestination & leFichier, adSaveCreateOverWrite
ostream.Close
Set ostream = Nothing
Set xml = Nothing
' La procédure import XML est facile du style Application.ImportXML avec access à partir de 2003 sinon ..
' faut importer à la balise bon courrage
' La procédure d'import répond OK alors tout est OK
If importleXML = True Then
extractionXML = True
End If
degage:
DoCmd.Hourglass False
Exit Function
oror:
MsgBox "Une erreur lors de la tentative de demande des données.", vbCritical, "Attention"
Resume degage
End Function |
Partager