Cette rubrique explique comment trier les adresses IP (Internet Protocol) stockées dans une base de données Microsoft Office Access 2007.
Contenu de cet article
Présentation
Si vous êtes familiarisé avec les adresses IP, vous savez que leur manipulation n'est pas aussi simple que celle du texte ou de nombres. En effet, les adresses IP regroupent quatre valeurs numériques séparées par un point (.) et chacune de ces valeurs correspond à un nombre entre 0 et 255. Le tableau suivant présente les données non triées.
| ID machine |
Employé |
Localisation |
Adresse IP |
| 1 |
... |
... |
123.4.245.23 |
| 2 |
... |
... |
104.244.253.29 |
| 3 |
... |
... |
1.198.3.93 |
| 4 |
... |
... |
32.183.93.40 |
| 5 |
... |
... |
104.30.244.2 |
| 6 |
... |
... |
104.244.4.1 |
Le tri des adresses IP dans Access constitue un véritable défi, car ce programme ne fournit pas de type de données spécifique pour stocker les adresses IP. Bien que les adresses IP sont un simple regroupement de nombres, vous ne pouvez pas les stocker dans un champ numérique, car ce type de champ n'accepte qu'un seul point décimal (.) et les adresses IP en contiennent trois. C'est pourquoi vous devez stocker les adresses dans un champ de texte.
Comme vous devez stocker les adresses IP dans un champ de texte, vous ne pouvez pas faire appel aux boutons de tri intégrés à Access pour les trier de manière significative. En effet, les boutons de tri trient les valeurs d'un champ de texte dans l'ordre alphabétique même si ce champ contient des nombres. En d'autres termes, les adresses sont triées d'après leur premier chiffre, puis d'après le deuxième, et ainsi de suite, et non d'après les valeurs numériques qui composent l'adresse. Le tableau suivant montre les adresses contenues dans le tableau ci-dessus triées dans l'ordre alphabétique dans le champ Adresse IP.
| ID machine |
Adresse IP |
| 3 |
1.198.3.93 |
| 2 |
104.244.253.29 |
| 6 |
104.244.4.1 |
| 5 |
104.30.244.2 |
| 1 |
123.4.245.23 |
| 4 |
32.183.93.40 |
Les adresses commençant par le chiffre 1 apparaissent avant celles qui commencent par le chiffre 2, et ainsi de suite. Le tableau suivant présente ces adresses triées dans l'ordre croissant approprié.
| ID machine |
Adresse IP |
| 3 |
1.198.3.93 |
| 4 |
32.183.93.40 |
| 5 |
104.30.244.2 |
| 6 |
104.244.4.1 |
| 2 |
104.244.253.29 |
| 1 |
123.4.245.23 |
Pour mieux comprendre la procédure de tri des adresses IP, décomposez celles-ci en quatre sections numériques. Le tri doit s'effectuer sur la première section, puis sur la deuxième, etc. Le tableau suivant affiche chaque section dans une colonne distincte et comme les colonnes contiennent des valeurs numériques simples, il est alors possible de les trier de gauche à droite dans l'ordre croissant comme l'illustre le tableau suivant.
| Section I |
Section II |
Section III |
Section IV |
| 1 |
198 |
3 |
93 |
| 32 |
183 |
93 |
40 |
| 104 |
30 |
244 |
2 |
| 104 |
244 |
4 |
1 |
| 104 |
244 |
253 |
29 |
| 123 |
4 |
245 |
23 |
La difficulté réside dans le tri des quatre sections individuellement. Dans la procédure suivante, vous allez créer une requête qui, outre le champ de l'adresse IP, contient quatre colonnes calculées pour chaque section de l'adresse IP. La première colonne contient la première section de l'adresse, la deuxième colonne, la deuxième section, et ainsi de suite. Au lieu de trier les enregistrements sur le champ Adresse IP, la requête les trie sur les quatre colonnes calculées.
Haut de la page
Créer une requête
Vous allez créer une requête de sélection nommée Adresses IP triées qui affiche les enregistrements dans l'ordre croissant des adresses IP. Supposons que la base de données active contienne un tableau appelé Détails machine qui inclut le champ de texte Adresse IP.
- Sous l'onglet Créer, dans le groupe Autre, cliquez sur Création de requête.
- Dans la boîte de dialogue Afficher la table, cliquez sur l'onglet Tables, puis sur Détails machine et enfin sur Ajouter. Fermez la boîte de dialogue.
- Déposez les champs ID machine et Adresse IP dans la grille de création de la requête.
- À présent, vous pouvez ajouter les colonnes calculées. Dans la première colonne vierge de droite, tapez l'expression Section I: Val(Left([Adresse IP],(InStr(1,[Adresse IP],".")-1))) dans la ligne Champ. Cette expression renvoie les caractères qui précèdent le premier point (.) dans le champ Adresse IP.
Analysez l'expression. Comme vous ne savez pas de combien de chiffres la première section de l'adresse est constituée, utilisez la fonction InStr pour trouver la position du premier point. Si vous soustrayez la valeur 1 (afin d'exclure le point), vous obtenez le nombre de chiffres dans la première section de l'adresse. Utilisez alors ce nombre avec la fonction Left pour extraire autant de caractères de l'adresse IP en commençant par celui le plus à gauche. Enfin, appelez la fonction Val pour convertir en nombres les caractères renvoyés par la fonction Left. Cette dernière étape est importante, car le type de données sous-jacent est Texte.
- Enregistrez la requête en cliquant sur Enregistrer dans la Barre d'outils Accès rapide. Il est conseillé de procéder ainsi après chaque étape intermédiaire.
- Ajoutez la colonne de la deuxième section de l'adresse. Dans la colonne à droite de Section I, tapez Section II: Val(Mid([Adresse IP],InStr(1,[Adresse IP],".")+1,InStr(InStr(1,[Adresse IP],".")+1,[Adresse IP],".")-InStr(1,[Adresse IP],".")-1)) dans la ligne Champ. Cette expression renvoie les caractères qui se trouvent entre le premier et le deuxième point du champ Adresse IP.
Analysez de nouveau l'expression. Comme vous ne savez pas de combien de chiffres la deuxième section de l'adresse est constituée ni exactement à quel endroit la deuxième section débute (parce que vous ne connaissez pas la longueur de la première section), faites appel à la fonction InStr pour trouver les positions des points. Utilisez ensuite la fonction Mid pour extraire les caractères qui suivent le premier point et qui précèdent le deuxième. Enfin, appelez la fonction Val pour convertir en nombres les caractères renvoyés par la fonction Mid. Cette dernière étape est importante, car le type de données sous-jacent est Texte.
- Ajoutez la colonne de la troisième section de l'adresse. Dans la colonne à droite de Section II, tapez Section III: Val(Mid([Adresse IP],InStr(InStr(1,[Adresse IP],".")+1,[Adresse IP],".")+1,InStr(InStr(InStr(1,[Adresse IP],".")+1,[Adresse IP],".")+1,[Adresse IP],".")-InStr(InStr(1,[Adresse IP],".")+1,[Adresse IP],".")-1)) dans la ligne Champ. Cette expression renvoie les caractères qui se trouvent entre le deuxième et le troisième point du champ Adresse IP.
Analysez de nouveau l'expression. Comme vous ne savez pas de combien de chiffres la troisième section de l'adresse est constituée ni exactement à quel endroit la troisième section débute (parce que vous ne connaissez pas la longueur de la première et de la deuxième sections), faites appel à la fonction InStr pour trouver les positions des points. Utilisez ensuite la fonction Mid pour extraire les caractères qui suivent le deuxième point et qui précèdent le troisième. Enfin, appelez la fonction Val pour convertir en nombres les caractères renvoyés par la fonction Mid. Cette dernière étape est importante, car le type de données sous-jacent est Texte.
- Ajoutez la colonne de la quatrième section de l'adresse. Dans la conne à droite de Section III, tapez Section IV: Val(Right([Adresse IP],Len([Adresse IP])-InStr(InStr(InStr(1,[Adresse IP],".")+1,[Adresse IP],".")+1,[Adresse IP],"."))) dans la ligne Champ. Cette expression renvoie les caractères qui suivent le dernier point.
Analysez de nouveau l'expression. Il vous faut trouver la position du troisième point et extraire tous les caractères qui le suivent. Comme vous ne connaissez pas son emplacement exact, vous devez appeler la fonction InStr trois fois pour trouver la position exacte du troisième point. Faites ensuite appel à la fonction Len pour calculer le nombre de chiffres contenus dans la quatrième section de l'adresse. Le nombre de chiffres renvoyés est ensuite utilisé dans la fonction Right pour extraire autant de caractères de la section de droite du champ Adresse IP. Enfin, appelez la fonction Val pour convertir en nombres les caractères renvoyés par la fonction Mid. Cette dernière étape est importante, car le type de données sous-jacent est Texte.
- Définissez la ligne Trier des quatre colonnes calculées à Croissant.
Important La ligne Trier de la colonne Adresse IP doit rester vierge.
Si vous voulez trier les adresses sur une autre valeur de champ, outre les adresses, placez les champs à gauche ou à droite des quatre colonnes calculées. Ne placez pas les autres champs de tri entre les colonnes calculées.
- L'étape suivante consiste à masquer les quatre colonnes calculées de la feuille de données. Mais avant d'exécuter cette opération, passez en mode Feuille de données pour afficher le résultat des expressions dans les colonnes calculées. Le tableau suivant présente les colonnes qui vont s'afficher en mode Feuille de données.
| ID machine |
Adresse IP |
Section I |
Section II |
Section III |
Section IV |
| 3 |
1.198.3.93 |
1 |
198 |
3 |
93 |
| 4 |
32.183.93.40 |
32 |
183 |
93 |
40 |
| 5 |
104.30.244.2 |
104 |
30 |
244 |
2 |
| 6 |
104.244.4.1 |
104 |
244 |
4 |
1 |
| 2 |
104.244.253.29 |
104 |
244 |
253 |
29 |
| 1 |
123.4.245.23 |
123 |
4 |
245 |
23 |
- Repassez en mode Création et désactivez la case à cocher affichée dans la ligne Afficher des quatre colonnes calculées pour ne pas afficher les colonnes calculées dans la vue Feuille de données.
- Si vous le voulez, vous pouvez spécifier des critères d'exclusion des enregistrements de la requête.
- Passez en mode Feuille de données pour afficher les enregistrements triés ; ils apparaissent correctement triés dans l'ordre croissant des adresses IP.
Haut de la page
Autres utilisations des adresses IP triées
Valider les adresses IP lors de la saisie des données
Si vous souhaitez valider des adresses sans écrire de code, vous pouvez le faire dans une certaine mesure en attribuant la valeur ###.###.###.###;0;" " à la propriété MasqueSaisie du champ et la valeur &&&&&&&&&&&& à la propriété Format du champ de l'adresse IP.
Quel est le rôle du masque de saisie ? Lorsque vous commencez à taper des données dans le champ d'adresse, le masque de saisie vous empêche de saisir des caractères autres que des nombres et des espaces entre les trois points. Si une section numérique contient un nombre à deux chiffres, laissez l'espace du troisième chiffre vierge ou tapez un espace. Notez que le masque de saisie n'indique pas à l'utilisateur qu'il a omis de taper une ou plusieurs parties de l'adresse ou qu'il a saisi uniquement des espaces au lieu d'une valeur numérique. Par exemple, « 345. .3. » est accepté comme adresse valide.
Rôle du format d'affichage ? Lorsque vous avez fini de taper des données et que vous quittez le champ, le format d'affichage supprime les espaces de l'adresse et n'affiche que les nombres et les points. Ainsi, si vous avez tapé « 354.35 .2 .12 », l'adresse 354.35.2.12 est affichée. Notez que si vous cliquez dans l'adresse ou si vous appuyez sur la touche F2 (pour passer en mode Édition) lorsque l'adresse est sélectionnée, les espaces réapparaissent.
Conseil Si vous voulez copier une adresse, placez le curseur dans la colonne ou le contrôle précédent, appuyez sur la touche TAB pour sélectionner l'adresse mise en forme et cliquez sur Copier. Ainsi, vous ne copiez pas l'adresse avec des espaces.
Trier les enregistrements par adresses IP dans un formulaire ou un état
Si vous avez besoin d'un formulaire ou d'un état dans lesquels les adresses IP sont triées, créez l'objet en question à partir d'une requête qui trie les adresses comme indiqué précédemment et non à partir d'un tableau de stockage des adresses.
Haut de la page