Export FTP a partir de fichiers créés dans le code
Le
yann.millerioux

Bonjour je fais une export de fichier txt vers un système mainframe en
FTP.
le nom de l'utilisateur et son mot de passe sont saisis dans un
formulaire, et vont alimenter un fichier txt de commandes ftp.
En fait dans mon code vba, je crée le fichier .bat et le fichier txt
de commandes ftp, et je les supprime à la fin afin que le user et mot
de passe ne soient pas visibles.
Et ben, ça marche pas (sauf en debug), en fait c'est comme si mon
fichier .bat n'existait pas, il me dit qu'il n'y a pas de commande.
Alors que si je ne supprime pas le fichier en fin de macro, la fois
suivante ça fonctionne.
J'ai pensé que c'était un problème de lock des fichiers, alors j'ai
déporté la création des fichiers dans une fonction annexe, mais ça ne
change rien
Je ne sais pas si c'est bien clair, mais si quelqu'un a une idée
Merci
Mon bout de code :
Function Export_fichier()
' Form de saisie user et MdP
DoCmd.OpenForm stDocName, acNormal, , , , acDialog
ChDir (Chemin)
' Appel fonction de création fichiers bat et txt
Constit_Fichiers
ExportBatch = "cmd.exe /k " & Chemin & Batch
RetBatch = Shell(ExportBatch, vbMinimizedNoFocus)
Do While Dir("Temp", vbDirectory) <> vbNullString
Loop
Kill Chemin & Batch
Kill Chemin & FTPCMD
DoCmd.Echo True
End Function
Function Constit_Fichiers()
Open Chemin & Batch For Output Lock Write As #1
Print #1, "cls"
Print #1, "mkdir Temp"
Print #1, "cd " & Chemin
Print #1, "@FTP -i -d -s:" & FTPCMD
Print #1, "rd Temp"
Close #1
Open Chemin & FTPCMD For Output Lock Write As #1
Print #1, "open"
Print #1, "site.prod.fr"
Print #1, User
Print #1, Pass
Print #1, "hash"
Print #1, "put ETAT_fichier.txt 'FICHIER.MAINFRAME'"
Print #1, "bye"
Close #1
End Function
FTP.
le nom de l'utilisateur et son mot de passe sont saisis dans un
formulaire, et vont alimenter un fichier txt de commandes ftp.
En fait dans mon code vba, je crée le fichier .bat et le fichier txt
de commandes ftp, et je les supprime à la fin afin que le user et mot
de passe ne soient pas visibles.
Et ben, ça marche pas (sauf en debug), en fait c'est comme si mon
fichier .bat n'existait pas, il me dit qu'il n'y a pas de commande.
Alors que si je ne supprime pas le fichier en fin de macro, la fois
suivante ça fonctionne.
J'ai pensé que c'était un problème de lock des fichiers, alors j'ai
déporté la création des fichiers dans une fonction annexe, mais ça ne
change rien
Je ne sais pas si c'est bien clair, mais si quelqu'un a une idée
Merci
Mon bout de code :
Function Export_fichier()
' Form de saisie user et MdP
DoCmd.OpenForm stDocName, acNormal, , , , acDialog
ChDir (Chemin)
' Appel fonction de création fichiers bat et txt
Constit_Fichiers
ExportBatch = "cmd.exe /k " & Chemin & Batch
RetBatch = Shell(ExportBatch, vbMinimizedNoFocus)
Do While Dir("Temp", vbDirectory) <> vbNullString
Loop
Kill Chemin & Batch
Kill Chemin & FTPCMD
DoCmd.Echo True
End Function
Function Constit_Fichiers()
Open Chemin & Batch For Output Lock Write As #1
Print #1, "cls"
Print #1, "mkdir Temp"
Print #1, "cd " & Chemin
Print #1, "@FTP -i -d -s:" & FTPCMD
Print #1, "rd Temp"
Close #1
Open Chemin & FTPCMD For Output Lock Write As #1
Print #1, "open"
Print #1, "site.prod.fr"
Print #1, User
Print #1, Pass
Print #1, "hash"
Print #1, "put ETAT_fichier.txt 'FICHIER.MAINFRAME'"
Print #1, "bye"
Close #1
End Function
Je te suggère de te pencher sur les API pour effectuer tes actions FTP :
Fais une recherche avec les mots clés suivants pour des exemples de code :
InternetOpen+InternetConnect+FtpPutFile+InternetCloseHandle
par exemple :
http://groups.google.com/groups?meta=&hl=fr&ie=ISO-8859-1&scoring=d&numP&cat=&language=&q=&sitesearch=&domains=&as_ugroup=*access*+*vb*+*database*&query=InternetOpen%2BInternetConnect%2BFtpPutFile%2BInternetCloseHandle
--
à+
Arnaud
--------------------------------------------------
Avant toute chose : http://users.skynet.be/mpfa/
Access Memorandum - http://memoaccess.free.fr
## Réponses souhaitées sur ce forum, merci. ##
--------------------------------------------------
karghyl | Bonjour je fais une export de fichier txt vers un système mainframe en
| FTP.
| le nom de l'utilisateur et son mot de passe sont saisis dans un
| formulaire, et vont alimenter un fichier txt de commandes ftp.
| En fait dans mon code vba, je crée le fichier .bat et le fichier txt
| de commandes ftp, et je les supprime à la fin afin que le user et mot
| de passe ne soient pas visibles.
| Et ben, ça marche pas (sauf en debug), en fait c'est comme si mon
| fichier .bat n'existait pas, il me dit qu'il n'y a pas de commande.
| Alors que si je ne supprime pas le fichier en fin de macro, la fois
| suivante ça fonctionne.
| J'ai pensé que c'était un problème de lock des fichiers, alors j'ai
| déporté la création des fichiers dans une fonction annexe, mais ça ne
| change rien...
| Je ne sais pas si c'est bien clair, mais si quelqu'un a une idée...
| Merci
| Mon bout de code :
|
|
| Function Export_fichier()
|
| ' Form de saisie user et MdP
| DoCmd.OpenForm stDocName, acNormal, , , , acDialog
|
| ChDir (Chemin)
| ' Appel fonction de création fichiers bat et txt
| Constit_Fichiers
|
| ExportBatch = "cmd.exe /k " & Chemin & Batch
| RetBatch = Shell(ExportBatch, vbMinimizedNoFocus)
|
| Do While Dir("Temp", vbDirectory) <> vbNullString
| Loop
|
| Kill Chemin & Batch
| Kill Chemin & FTPCMD
| DoCmd.Echo True
|
| End Function
|
|
| Function Constit_Fichiers()
|
| Open Chemin & Batch For Output Lock Write As #1
| Print #1, "cls"
| Print #1, "mkdir Temp"
| Print #1, "cd " & Chemin
| Print #1, "@FTP -i -d -s:" & FTPCMD
| Print #1, "rd Temp"
| Close #1
|
| Open Chemin & FTPCMD For Output Lock Write As #1
| Print #1, "open"
| Print #1, "site.prod.fr"
| Print #1, User
| Print #1, Pass
| Print #1, "hash"
| Print #1, "put ETAT_fichier.txt 'FICHIER.MAINFRAME'"
| Print #1, "bye"
| Close #1
|
| End Function
s_ugroup=*access*+*vb*+*database*&query=InternetOpen%
2BInternetConnect%2BFtpPutFile%2BInternetCloseHandle
Salut,
merci de ta réponse. En fait j'avais déjà vu des réponses
avec des API, mais je n'avais pas trop osé me lancer
dedans...
Avant que j'ose, 2 ou 3 petites précisions stp :
- est ce que ça marche aussi pour des envois ftp vers un
gros système IBM (OS390), ou c'est seulement pour du ftp
sur le net (ma question est peut être bête...) ?
- est-ce qu'il y a besoin d'avoir un truc particulier
installé pour que l'API fonctionne ? Là où je bosse ils
font des install bizarre où tout n'est pas installé, et
cette base va fonctionner sur un poste utilisateur, où
tout n'est pas installé non plus.
Merci