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 :

PING de plusieurs IP [AC-2010]


Sujet :

Access

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2006
    Messages : 110
    Points : 79
    Points
    79
    Par défaut PING de plusieurs IP
    Bonjour à tous et à toutes

    J'utilise avec plaisir le code trouvé ( http://access.developpez.com/sources...eseau#PingICMP).
    Je l'ai modifié en ajoutant des zones de liste déroulante pour filtrer ma recherche d'adresse IP.
    J'ai une table sous la forme suivante :
    SITE------LOCAL------APPAREIL------IP
    LIEU A------A-------------WGS-------10.169.50.5
    LIEU A------A-------------MRO-------10.169.195.5
    LIEU A------B-------------WGS-------10.169.50.6
    LIEU A------B-------------MRO-------10.169.195.6
    LIEU A------C-------------WGS-------10.169.50.7
    LIEU A------C-------------MRO-------10.169.195.7
    LIEU B .............. etc ......

    Ma demande, mon souhait, c'est de pouvoir faire un ping d'un site complet. Dans cet exemple, en choisissant le site A, le programme me sortirait un formulaire avec toutes les adresses IP et ferait le PING de ces adresses. Est-ce possible ? Cela m'éviterait de faire le PING du site un par un. J'ai aussi pensé ajouter avec un timer qui ferait le PING à chaque seconde, en boucle et qui s'arrêterait en cliquant sur un bouton.
    En vous remerciant pour vos idées.

    Nom : Capture.PNG
Affichages : 516
Taille : 10,1 Ko Nom : Capture.PNG
Affichages : 460
Taille : 12,5 Ko

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour,

    À priori je procéderai comme suit ;

    créer un requête qui donne la liste de tous les IP d'un site reqListeSite :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    parameters prmNomSite text(255)
    select tblSite.* from tblSite where tablSite.NomSite=prmNomSite

    ensuite un bout de code comme cela :

    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
    Dim success As Long
    Dim ECHO As ICMP_ECHO_REPLY
     
    dim db as dao.database:set db=currendb
     
    dim q as dao.querydef:set q=db.querydefs("reqListeSite") 
     
    q.paramters("prmNomSite")="Un nom de site"
    dim r as dao.recordset:set r=q.openrecordset(dbOpenSnapShot) 'à priori je ne prévoie pas d'écrire dans cette table donc c'est plus rapide qu'un dbOpenDynsaet
     
    do while not r.eof()
       success = Ping(sIPAddress, Nz(txtDataSend, vbNullString), ECHO
       'ici le code pour gérer "success" (ex : utliser une liste pour afficher le résultat ou stocker dans une table)
       r.movenext
    end if
     
    r.close:set r=nothing
    set q=nothing
    db.close:set db=nothing
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2006
    Messages : 110
    Points : 79
    Points
    79
    Par défaut
    Merci pour votre réponse mais je n'arrive pas à associer votre code avec le mien.
    Je vais essayer d'être plus précis.
    J'ai créer une requête qui me donne les doublons pour n'avoir qu'une fois le nom d'un site dans ma liste déroulante (modifiable43).
    Dans cette requête, apparaît le nom du site (par exemple Amay et les IP correspondantes). Dans ce cas, j'ai bien 2 adresses IP et c'est juste.
    La table complète s'appelle "Table1" et la requête qui me donne les IP s'appelle "doublons site".
    Comment puis-je faire apparaître les adresses IP et le résultat du PING.
    Je pensais à un sous-formulaire avec 2 colonnes, IP et Résultats

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour,

    Mon code était une esquisse de solution donc pas nécessairement parfaitement adapté à ton besoin.

    Ensuite je t'invite à donner des noms significatifs à tes objets Table1 et Modifiale42 ne disent pas grand chose sur le contenu de l'objet. Je te suggère quelque chose comme "tblSite" et "cmbSite" cela rendra ton code plus compréhensible et donc plus facile à maintenir.

    Pour l'affichage des résultats, tu peux utiliser une table et un formulaire (ou un sous-formulaire).

    En fonction de ce que tu as dis voici comment je procederai.

    Pour les données

    table tblSite
    ClefSite (Auto num)
    NomSite
    Autres infos sur site

    table tblSiteIP
    ClefSiteIP (auto num)
    ClefSite (Entier long)
    IPSite (texte)

    relation entre tblSite et tblSiteIP sur ClefSite

    pour la liste de sélection des sites :

    requête reqListeSite
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select tblSte.ClefSite, tblSite.NomSite from tblSite

    Pour la liste des adresses IP d'un site

    requête reqListeIPSite
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    parameters prmClefSite long
    select tblSiteIP.* from tblSiteIP where tblSiteIP.ClefSite=[prmClefSite]

    table tblResultatPingSite
    ClefResultatPingSite (Auto num)
    ClefSiteIP (entier long)
    ResultatPing (Entier long)
    DateHeurePing (date/heure)
    TextResultatPing (texte 255 caractères)

    pour l'affichage des résultats :

    requête reqAffResultatPingSite
    requete qui prend les champs de tblResultatPingSite en jointure avec tblSiteIP pour récupérer l'adresse IP (à créer avec l'éditeur de requête).

    formulaire (ou sous formulaire) frmAffResultatPingSite
    Colonne SiteIP
    Colonne TextResultatPing

    Pour remplir resultat :
    1. récupérer la liste des adresses IP d'un site selon (grâce à ClefSite)
    2. pour toutes les adresses IP

      faire un ping de l'adresse
      enregistrer le résultat du ping


    donc en code (à mettre dans un module) cela donne quelque chose comme :

    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
     
    public sub PingSite(prmClefSite as long)
       Dim success As Long
       Dim ECHO As ICMP_ECHO_REPLY
     
       dim db as dao.database:set db=currendb
       dim q as dao.querydef:set q=db.querydefs("reqListeIPSite") 
       q.paramters("prmClefSite")=prmClefSite
       dim r as dao.recordset : set r=q.openrecordset(dbOpenSnapShot) 'à priori je ne prévoie pas d'écrire dans cette table donc c'est plus rapide qu'un dbOpenDynsaet
       dim rResultat as dao.recordset : set resultat=db.openrecordset("tblResultatPngSite", dbOpenDynaset)
     
       do while not r.eof()
           success = Ping(sIPAddress, Nz(txtDataSend, vbNullString), ECHO
     
           '
           'ici le code pour gérer "success" (ex : utliser une liste pour afficher le résultat ou stocker dans une table)
           '
     
           'Enrgistre le résultat du ping
           rResultat.addnew
           rResultat![ClefSiteIP]=r![ClefSiteIP]
           rResultat![ResultatPing ]=success
           rResultat![DateHeurePing]=now()
           rResultat![TextResultatPing]= ici le nom de la variable utilisée pour récupérer le décodage de sucess
           rResultat.update
           r.movenext
       end if
     
       rResultat.close : set rResultat=nothing 'Ferme et libère la mémoire
       r.close : set r=nothing 'Ferme et libère la mémoire
       set q=nothing 'Libère la mémoire
       db.close : set db=nothing  'Ferme et libère la mémoire
     
    end sub
    Dans le bouton (btnPingSite) pour déclencher le ping du site sur l'événement click

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if not isnull(me.lstSite) then
       call PingSite(me.lstSite) 'Appelle le ping pour le site choisi dans la liste.
    end if
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2006
    Messages : 110
    Points : 79
    Points
    79
    Par défaut
    Bonjour, encore merci pour vos aides.
    Je vais essayer de combiner votre code avec le mien.
    Je joins l'idée de mon fichier (zip).
    BdPing.zip

  6. #6
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2006
    Messages : 110
    Points : 79
    Points
    79
    Par défaut
    Toujours sur mon problème de PING, je souhaiterais exécuter le PING x fois comme avec la commande PING en ligne de commande DOS.

  7. #7
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2006
    Messages : 110
    Points : 79
    Points
    79
    Par défaut
    voilà, j'ai bien avancé. Certains vont me dire qu'il y avait plus simple. C'est possible, mais ça fonctionne. Maintenant, je vais chercher pour faire le PING du réseau sélectionné, IP par IP. Une boucle du système en fin de compte. Par exemple, je choisi le réseau Francis et avec un clic sur un bouton, je fais un PING des adresses dans la liste.

    Pour info, pour avoir accès aux codes, aux tables, .....etc, il suffit de faire un dbl clic sur "RSSC-ROC", puis un clic sur option. Valider les options et redémarrer.


    BdPing-2.zip

  8. #8
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2006
    Messages : 110
    Points : 79
    Points
    79
    Par défaut
    un grand merci à Claude Leloup qui a résolu mon problème. Je vous joins la version finie.
    BdPing-3.zip

  9. #9
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    reBonjour bigounet, bonjour René,

    Claude Leloup qui a résolu mon problème
    ... en fait, cette discussion : http://www.developpez.net/forums/d14...e/#post7931736

    ... mais le fichier joint que bigounet renseigne ne contient pas la version définitive que voici (l'erreur m'incombe) :
    Fichiers attachés Fichiers attachés
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

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

Discussions similaires

  1. comment gerer plusieurs connexions client/serveur
    Par naili dans le forum C++Builder
    Réponses: 3
    Dernier message: 14/08/2002, 16h58
  2. Plusieurs scenes
    Par logramme dans le forum DirectX
    Réponses: 2
    Dernier message: 11/08/2002, 14h02
  3. Génerer automatiquement plusieurs fichier .doc
    Par brunovitch dans le forum QuickReport
    Réponses: 3
    Dernier message: 09/07/2002, 08h19
  4. Shortcut avec plusieurs touches
    Par scorpiwolf dans le forum C++Builder
    Réponses: 4
    Dernier message: 06/07/2002, 15h57

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