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

WinDev Discussion :

Seven et lecteur réseau [WD5.5]


Sujet :

WinDev

  1. #1
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Par défaut Seven et lecteur réseau
    Bonjour,

    J'ai une (et même plusieurs) appli avec windev55, et le passage à Seven ne se fait pas simplement. Pour le moment, j'ai réussi à trouver une parade à chaque fois. Mais, là je me heurte à un autre problème.

    Nos données se trouve sur un lecteur réseau, avec un raccourci (H. Ce raccourci pointe sur \\Serveur\Donnees\. Jusque là rien de bien transcendantal.

    Comme la base de données peut-être copiée et utilisée en local (cas des commerciaux, par exemple) il est possible de modifier le chemin. Toutefois, une vérification est effectuée afin que le chemin spécifié corresponde bien à un dossier contenant une base de nos données. Pour cela je fais un simple test sur l'existence d'un fichier par fRep.

    Hélas, sous seven, j'ai un soucis !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Si fRep( "H:\Dossier\fichier.ext") <> "" alors
       Info("Trouve")
    sinon
       Info("Erreur")
    fin
    me renvoie «Erreur»
    alors que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Si fRep( "\\Serveur\Donnees\Dossier\fichier.ext") <> "" alors
       Info("Trouve")
    sinon
       Info("Erreur")
    fin
    me renvoie «Trouve»

    Alors ma question est simple. Existe-t-il un moyen, sous Windev55, de connaitre le chemin \\serveur\Donnees quand on a H: afin que je puisse le remplacer ?

    Voilà, merci d'avance

    Louis Griffont

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    410
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 410
    Par défaut
    salut,

    J'ai de vagues souvenirs de la version 5.5, mais il serait peut être possible de décomposer le problème, avec d'abord la vérification que le lecteur H: existe et si ce n'est pas le cas alors remplacer la chaine lecteur par le chemin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Lecteur est une chaine = "H:"
    SI PAS fDisquePrêt("H:") ALORS 
    Lecteur = "\\Serveur\Donnees" 
    FIN
    Si fRep(Lecteur +"\Dossier\fichier.ext") <> "" alors
       Info("Trouve")
    sinon
       Info("Erreur")
    fin
    Maintenant pas sûr que cette fonction soit disponible en 5.5

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Par défaut
    Merci de t'être penché sur mon problème.

    Le problème est aussi que le lecteur n'est pas toujours H: ! et que ce n'est pas toujours \\serveur\donnees

    Bref, le moyen le plus sûr serait de pouvoir remplacer H: par le chemin complet \\serveur\xxx

    Mais, je suppose qu'il doit y avoir un moyen, le tout est de le connaitre !

  4. #4
    Membre Expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 915
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 915
    Par défaut
    Bonjour,

    J'ai trouver un petit code VB/VBA qui permet de faire ce que tu veux à partir de la lettre du lecteur

    voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Const NO_ERROR As Long = 0&
    Private Declare Function WNetGetConnection Lib "mpr.dll" Alias "WNetGetConnectionA" (ByVal lpszLocalName As String, ByVal lpszRemoteName As String, cbRemoteName As Long) As Long
    Function GetUNCPath(ByVal sDrive As String) As String
        Dim sBuffer As String
        sBuffer = String(255&, vbNullChar)
     
        If WNetGetConnection(sDrive, sBuffer, Len(sBuffer)) = NO_ERROR Then
            GetUNCPath = Left$(sBuffer, InStr(1, sBuffer, vbNullChar) - 1)
        Else
            GetUNCPath = vbNullString
        End If
    End Function
    J'espère que ça pourra un peu t'aider

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Par défaut
    Merci,

    Je regarde ça de plus près.

    Louis

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Par défaut
    Super mail.spam,

    ça marche nickel.

    Merci beaucoup

    Louis

  7. #7
    Membre émérite
    Inscrit en
    Avril 2008
    Messages
    1 132
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 1 132
    Par défaut
    Salut Louis!

    Seulement sous seven?

    Es tu sûr des droits d'accès ?

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Par défaut
    Bonjour,

    Oui, je suis sûr des droits d'accès, et je ne sais pas pour Vista, je ne l'ai jamais utilisé dans un contexte professionnel.

    En tout cas la manip de mail.spam arrange tout, donc plus de soucis.

    Louis

  9. #9
    Membre Expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 915
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 915
    Par défaut
    Bonjour,

    Peux tu mettre le code Windev.

    Merci d'avance

  10. #10
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Par défaut
    Ben, y a pas grand chose de plus que ce que tu as donné, en fait.

    J'ai simplement écrit une procédure
    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
    Procédure FLecteur( cp_Chemin)
    local
    	cl_Retour	est une chaine
    	zl_Lecteur	est une chaine asciiz sur 3
    	zl_Chemin	est une chaine Asciiz sur 255 = complete( " ", 255)
    	nl_Taille	est un entier = taille( zl_Chemin)
     
    si cp_Chemin[[ à 2]] <> "\\" alors
    	zl_Lecteur = cp_Chemin[[ à 2]]
    	si AppelDLL32("mpr.dll","WNetGetConnectionA" , &zl_Lecteur,  &Zl_Chemin, &nl_Taille) <> 0 alors
    		cl_Retour = zl_Chemin+cp_Chemin[[ 3 a]]
    	sinon
    		cl_Retour = cp_Chemin
    	FIn
    sinon
    	cl_Retour = cp_Chemin
    FIN
    renvoyer cl_Retour
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Info( FLecteur( "H:\MesDonnees"))
    renvoie : \\Serveur\DataBase\MesDonnees

    Par contre si le nom n'est pas un lecteur réseau (ex : C:\MesDonnees) alors
    la fonction renvoie le chemin passé en paramètre.

    Voilà, si ça peut aider...

    ATTENTION : C'est du code Windev 5.5 il est à adapter pour les versions plus récente, je pense.

  11. #11
    Membre Expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 915
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 915
    Par défaut
    Merci.

    Je t'ai demandé le code car je commence seulement à utiliser les API et les DLL.
    Et je n'arrive pas toujours à m'en sortir avec la traduction et l'utilisation des paramètres.

  12. #12
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Par défaut
    Citation Envoyé par mail.spam Voir le message
    Merci.

    Je t'ai demandé le code car je commence seulement à utiliser les API et les DLL.
    Et je n'arrive pas toujours à m'en sortir avec la traduction et l'utilisation des paramètres.
    Ben, cet exemple est simple. N'hésites pas à poster si tu as des soucis.

  13. #13
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Par défaut
    ATTENTION !

    Correction, sous Wndev 75, j'avais un soucis, si le lecteur n'était pas un lecteur réseau, mais un lecteur local, la chaine récupérée est vide, mais la fonction se termine sans erreur. Donc, correction (voir code en gras).

    Désolé,

    Louis

    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
    Procédure FLecteur( cp_Chemin)
    local
    	cl_Retour	est une chaine
    	zl_Lecteur	est une chaine asciiz sur 3
    	zl_Chemin	est une chaine Asciiz sur 255 = complete( " ", 255)
    	nl_Taille	est un entier = taille( zl_Chemin)
    	
    si cp_Chemin[[ à 2]] <> "\\" alors
    	zl_Lecteur = cp_Chemin[[ à 2]]
    	si AppelDLL32("mpr.dll","WNetGetConnectionA" , &zl_Lecteur,  &Zl_Chemin, &nl_Taille) <> 0 alors
                si sansespace( zl_Chemin) <> "" alors
    		cl_Retour = zl_Chemin+cp_Chemin[[ 3 a]]
                sinon
                    cl_Retour = cp_Chemin
                fin
    	sinon
    		cl_Retour = cp_Chemin
    	FIn
    sinon
    	cl_Retour = cp_Chemin
    FIN
    renvoyer cl_Retour

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

Discussions similaires

  1. [VB.NET] montage d'un lecteur réseau pour windows
    Par xufux dans le forum Windows Forms
    Réponses: 5
    Dernier message: 21/03/2008, 22h13
  2. [exporter] Exporter la base vers lecteur réseau..
    Par terziann dans le forum Administration
    Réponses: 3
    Dernier message: 15/11/2005, 11h02
  3. [VB.NET] Chemin complet d'un lecteur réseau
    Par sinoo dans le forum Windows Forms
    Réponses: 3
    Dernier message: 16/08/2005, 10h05
  4. [Millenium] Lecteur réseau impossible à connecter
    Par nebule dans le forum Windows 2000/Me/98/95
    Réponses: 3
    Dernier message: 08/02/2005, 11h00
  5. Comment obtenir le nom complet d'un lecteur réseau ?
    Par Speed41 dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 26/08/2004, 07h55

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