IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

FTP Wininet lister les fichiers AS 400


Sujet :

Access

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut FTP Wininet lister les fichiers AS 400
    Bonjour,

    Veuillez m'excuser si j'utilise des termes inappropriés car je ne suis pas de formation informatique.
    Jusqu'à maintenant j'ai toujours su me débrouiller en faisant des recherches sur les forums mais là j'ai passé pas mal d'heures sur tous les forums sans trouver de réponse.

    Pour mon travail j'ai une base Access2000 dans laquelle j'utilise les fonctions FTP de Wininet

    Cela fonctionne d'habitude mais je dois maintenant me connecter à un AS 400 et je n'arrive pas (entre autre) à lister correctement les fichiers du serveur avec FtpFindFirstFile et InternetFindNextFile

    Votre aide serait la bien venue,

    Voici la fonction que j'utilise (je passe sur les déclarations des fonctions et des constantes de wininet)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    84
    85
    86
    87
    88
    Function ListeFtpFile(stServ As String, stLogin As String, stPass As String, _
                                stRepFtp As String, Optional stFiltre As String) As Boolean
    ' Cette fonction liste les fichiers sur un serveur FTP.
    ' stServ contient le nom ou l'adresse IP du serveur FTP
    ' stLogin est le login à utiliser
    ' stPass est le mot de passe associé au login
    ' stRepFtp est le répertoire FTP ou s'effectuera la recherche
    ' stFiltre est le nom du fichier qui sera effacé du serveur
    ' La fonction retourne Vrai si le listage à réussi, sinon Faux.
    '"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    Dim HwndConnect As Long
    Dim HwndOpen As Long
    Dim inRes As Integer
    Dim strFile As String
    Dim zErreur
    '""""""""
    Dim strTmp As String
        pData.cFileName = String(MAX_PATH, 0)
    '""""""""""""""""""""""
    On Error GoTo GestErreur
        If stFiltre = "" Then stFiltre = "*.*"
     
           'Ouvre internet
    HwndOpen = InternetOpen("ListeFtpFile", 1, vbNullString, vbNullString, 0)
    If HwndOpen Then
    AjoutMess ("Connection ... ")
        'Connection au site ftp
        HwndConnect = InternetConnect(HwndOpen, stServ, 21, stLogin, _
                                                  stPass, 1, 0, 0)
        If HwndConnect Then
        AjoutMess ("Connecté au serveur: " & stServ)
            If stRepFtp = "/" Then GoTo Racine
     
            'Changer le repertoire ftp
            If FtpSetCurrentDirectory(HwndConnect, stRepFtp) Then
            AjoutMess ("Répertoire courant : " & stRepFtp)
    Racine:
            'Liste les fichiers présents sur le site
            AjoutMess ("Recherche des fichiers: ")
     
            hFind = FtpFindFirstFile(HwndConnect, stFiltre, pData, INTERNET_FLAG_RELOAD, 0)
                If hFind = 0 Then GoTo zerofichier
                If hFind Then
                   If hFind > 0 And CBool(pData.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) = False Then
                            strTmp = Left(pData.cFileName, InStr(1, pData.cFileName, String(1, 0), vbBinaryCompare) - 1)
                            AjoutMess (strTmp)
                            ListeFtpFile = True
                    End If
                   Do
                       lRet = InternetFindNextFile(hFind, pData)
                        If lRet = 0 Then: Exit Do
                        If lRet > 0 And CBool(pData.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) = False Then
                           strTmp = Left(pData.cFileName, InStr(1, pData.cFileName, _
                           String(1, 0), vbBinaryCompare) - 1)
                           AjoutMess (strTmp)
                           ListeFtpFile = True
                        End If
                   Loop
                End If
     
            Else
                AjoutMess ("Impossible de se positionner sur le répertoire " & stRepFtp)
                GoTo GestErreur
            End If
        Else
            AjoutMess ("Impossible d'établir la connexion avec le SERVEUR")
            GoTo GestErreur
        End If
    Else
        AjoutMess ("Impossible d'ouvrir la connexion INTERNET")
        GoTo GestErreur
    End If
    GoTo FinNormale
    zerofichier:
            'Pas de fichier
            If Err.Number = 92 Then
                AjoutMess (" Erreur : PAS DE FICHIER SUR LE SITE FTP ")
            End If
    GestErreur:
                zErreur = ShowError
                AjoutMess ("Impossible de générer la liste :" & zErreur)
                ListeFtpFile = False
    FinNormale:
    AjoutMess ("Déconnection...")
        ' Libération du pointeur
        inRes = InternetCloseHandle(HwndConnect)
    InternetCloseHandle HwndOpen 'Ferme internet
    End Function
    Il me semble que c'est ici que j'ai un problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strTmp = Left(pData.cFileName, InStr(1, pData.cFileName, _
                           String(1, 0), vbBinaryCompare) - 1)
    Car j'obtiens ce résultat:

    CGCFTP 167936 29/01/07 09:53:26*FILE BL01070129
    CGCFTP *MEM BL01070129.BL010701129
    UTIVPC 3563520 26/01/07 15:55:01*FILE CGLNSP1
    UTIVPC *MEM CGCLNSP1.CGCLNSP1

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Bonjour et bienvenu sur le forum

    Citation Envoyé par patoucib
    Bonjour,
    Il me semble que c'est ici que j'ai un problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strTmp = Left(pData.cFileName, InStr(1, pData.cFileName, _
                           String(1, 0), vbBinaryCompare) - 1)
    Car j'obtiens ce résultat:

    CGCFTP 167936 29/01/07 09:53:26*FILE BL01070129
    CGCFTP *MEM BL01070129.BL010701129
    UTIVPC 3563520 26/01/07 15:55:01*FILE CGLNSP1
    UTIVPC *MEM CGCLNSP1.CGCLNSP1
    Que devrait être le fichier avec ce résultat CGCFTP 167936 29/01/07 09:53:26*FILE BL01070129
    ? Je ne connais pas AS 400

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Je crois aussi que l'utilisation de String() dans le InStr pose problème.
    ... InStr(1, pData.cFileName, _
    String(1, 0), vbBinaryCompare) - 1)
    Cherches dans l'aide la syntaxe correcte de InStr

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Bonjour DMboup et merci d'éssayer de m'aider

    Le résultat avec
    CGCFTP 167936 29/01/07 09:53:26*FILE BL01070129
    CGCFTP *MEM BL01070129.BL010701129

    devrait être BL010701129

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par DMboup
    Je crois aussi que l'utilisation de String() dans le InStr pose problème.


    Cherches dans l'aide la syntaxe correcte de InStr
    Selon les sources le String(1, 0) est remplacé par Chr(0) et les deux méthodes donnent le même résultat et j'obtiens bien le nom de fichier sauf sur l'as400.

    Je pense que la réponse d'un as400 à une structure particulière d'ou le mauvais résultat

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut La suite de mes recherches:
    J'ai utilisé WS_FTP pour connaitre les différents trois serveurs auquels je me connecte quotidiennement
    Ensuite j'ai mis le même fichier sur les serveurs et j'ai les résultats suivants:

    Serveur1 (WS_FTP)
    220 Serv-U FTP Server v6.0 for WinSock ready...
    Host type (1): Serv-U
    Liste des fichiers obtenue par WS_FTP:
    Name Date Size
    test1 20070205 08:22 1580
    Liste des fichiers obtenue par ma fonction:
    test1

    Serveur2 (WS_FTP)
    UNIX Type: L8 Server: "WarFTPd 1.82.00-RC2" OS: "WIN32 (Windows 2000 5.0 2195 Pentium II 2-CPU)"
    Host type (S): UNIX (standard)
    Liste des fichiers obtenue par WS_FTP:
    Name Date Size
    test1 20070205 08:29 1580
    Liste des fichiers obtenue par ma fonction:
    test1

    Serveur3 (WS_FTP)
    257 "CGC" is current library.
    Host type (I): IBM AS/400
    Liste des fichiers obtenue par WS_FTP:
    Name Date Size
    TEST1 20050207 08:34 36864
    TEST1.TEST1 20050207 08:34 36864
    Liste des fichiers obtenue par ma fonction:
    CGCFTP 36864 05/02/07 08:34:18 *FILE TEST1
    CGCFTP *MEM TEST1.TEST1

    Ce résultat confirme que ma fonction est correcte mais que j'ai un problème avec l'as400

    Avez vous une idée pour résoudre ce problème?

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Voila le test que je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Dim mchaine, mchaine1, strTmp, strTmp1 As Variant, ToChange, Res As String
     
    mchaine1 = "CGCFTP 167936 29/01/07 09:53:26*FILE BL01070129"
    mchaine = "CGCFTP *MEM BL01070129.BL010701129"
     
    strTmp1 = Mid(mchaine1, InStr(1, mchaine1, "*", vbBinaryCompare) + 1, Len(mchaine1))
     
    strTmp = Mid(mchaine, InStr(1, mchaine, "*", vbBinaryCompare) + 1, Len(mchaine))
     
    ToChange = Replace(strTmp1, "FILE", "") & "."
     
    Res = Replace(strTmp, "MEM" & ToChange, "")
     
      MsgBox "fichier trouve " & vbCrLf & mchaine1 & "=" & Replace(strTmp1, "FILE", "") & vbCrLf & mchaine & "=" & Res
    Dans ton exemple
    CGCFTP 36864 05/02/07 08:34:18 *FILE TEST1
    CGCFTP *MEM TEST1.TEST1
    tu as bien le même fichier à la fin de chaque ligne.

    Mais ici
    Le résultat avec
    CGCFTP 167936 29/01/07 09:53:26*FILE BL01070129
    CGCFTP *MEM BL01070129.BL010701129

    devrait être BL010701129
    tu as bien dis devrait être mais les deux fichiers sont différents
    BL01070129 <> BL010701129

    Il faut qu'on sache si tes deux lignes (qu'ils faut d'ailleur identifier) produisent des fichiers différents comme dans mon test ou si c'est bien deux fichiers identique.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par DMboup
    Voila le test que je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Dim mchaine, mchaine1, strTmp, strTmp1 As Variant, ToChange, Res As String
     
    mchaine1 = "CGCFTP 167936 29/01/07 09:53:26*FILE BL01070129"
    mchaine = "CGCFTP *MEM BL01070129.BL010701129"
     
    strTmp1 = Mid(mchaine1, InStr(1, mchaine1, "*", vbBinaryCompare) + 1, Len(mchaine1))
     
    strTmp = Mid(mchaine, InStr(1, mchaine, "*", vbBinaryCompare) + 1, Len(mchaine))
     
    ToChange = Replace(strTmp1, "FILE", "") & "."
     
    Res = Replace(strTmp, "MEM" & ToChange, "")
     
      MsgBox "fichier trouve " & vbCrLf & mchaine1 & "=" & Replace(strTmp1, "FILE", "") & vbCrLf & mchaine & "=" & Res
    .
    J'ai testé ta fonction qui isole bien le nom du fichier et il me reste à l'intégrer.
    (là je suis à mon domicile)

    Citation Envoyé par DMboup
    Dans ton exemple

    tu as bien le même fichier à la fin de chaque ligne.

    Mais ici

    tu as bien dis devrait être mais les deux fichiers sont différents
    BL01070129 <> BL010701129

    Il faut qu'on sache si tes deux lignes (qu'ils faut d'ailleur identifier) produisent des fichiers différents comme dans mon test ou si c'est bien deux fichiers identique.
    j'ai bien le même fichier à la fin de chaque ligne
    (Excuse moi car c'est une erreur de frappe)

    Merci beaucoup DMboup, je pense que c'est la bonne piste!
    Je confirme ça demain.

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par DMboup
    Voila le test que je fais
    .
    Une solution et un nouveau problème

    En m'inspirant de ton idée (DMboup) et en partant du principe que l'AS400 me retourne le fichier sur 2 ligne
    une avec *FILE et une avec *MEM

    j'ai décidé de ne traiter que les *FILE pour créer la liste des fichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    'si mot clé "*FILE " alors traiter
    If InStr(1, mchaine, "*FILE ", vbBinaryCompare) Then
    Res = Mid(mchaine, InStr(1, mchaine, "*FILE ", vbBinaryCompare) + 6, Len(mchaine))
    MsgBox "J'ai trouvé le fichier " & Res
    Else
    MsgBox "Je ne traite pas"
    End If
    Par contre j'ai constaté que l'AS400 n'accepte que *.* dans l'argument sfiltre de la fonction FtpFindFirstFile sinon impossible de créer la liste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FtpFindFirstFile(HwndConnect, stFiltre, pData, INTERNET_FLAG_RELOAD, 0)
    RESULTAT:
    J'ai plus qu'à recréer les fonctions de donwload, upload etc... en spécifique pour l'AS400

    En tout cas DMboup merci pour le coup de main!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FTP] Lister les fichiers sur un autre serveur
    Par lenoil dans le forum Langage
    Réponses: 3
    Dernier message: 04/04/2007, 11h07
  2. [FTP] Lister les fichiers d'un FTP distant
    Par osmoze dans le forum Langage
    Réponses: 2
    Dernier message: 20/11/2006, 15h35
  3. [FTP] Lister les fichiers dans un repertoire
    Par Death83 dans le forum Langage
    Réponses: 3
    Dernier message: 16/11/2006, 15h31
  4. Réponses: 13
    Dernier message: 24/08/2006, 13h05
  5. [FTP] Lister les fichiers
    Par Noosymer dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 18/03/2006, 19h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo