OVH Cloud OVH Cloud

Aide pour code SQL ou VBA

5 réponses
Avatar
Sweety
Bonjour/soir à tous/toutes

Mon problème :-)

J'ai une table [TableA] qui contient des adresses IP dans un champ
[IPAddress] sous la forme par exemple :
18.1.11.x ou encore 18.1.1.x
Ce champ est de type *texte*

Je souhaite extraire de cette table tous les caractères se trouvant après le
3ème point de l'adresse IP, convertir ces caractères (qui sont tous des
chiffres forcément) en *numérique* et ensuite les enregistrer dans une table
[TableB] qui contient déjà 254 enregistrements vides.

Par exemple de 18.1.11.191 je souhaite extraire le "191"

Mes problèmes sont les suivants :

Je souhaite que si la valeur extraite est 12, ce que j'enregistre dans ma
[TableB] (qui contient 254 enregistrements vides) soit enregistré dans
l'enregistrement 12, si c'est 121, dans l'enregistrement 121.
Le but étant de faire une requête dans [TableB] afin de trouver les adresses
IP libres (champs vides)

Mes questions :

1) Comment extraire les caractères qui suivent le troisième point du Champ
IPAddress de la TableA (sachant que le nombre de caractères précédant ce
point est variable) ?

2) Comment convertir cette chaîne de caractère en valeur numérique? (ça
devrait aller je crois :-)

3) Comment faire pour placer ces valeurs au bon endroit dans TableB (valeur
12 dans enregistrement 12 etc...)

Puis-je faire tout ça en SQL ou dois-je passer par du VB?

Désolé pour la longueur de mon problème mais je suppose que c'est un jeu
d'enfant pour certains d'entre-vous (je ne jongle pas encore très à fond
avec SQL et VB)

Merci de me donner des pistes ;-)
Ma sympathie à tous/toutes

Michel

5 réponses

Avatar
Buddy
Salut

1) Pour extraire les chiffres après le 3ème point, il est préférable
d'attaquer directement par la droite de ta chaine et de t'arrêter au 1er
point rencontré.

Private Function pvfPartChaine(strChaine as String) As String
If Len(strChaine) > 0 Then
Dim i As Byte
i = 1
Do While Left(Right(strChaine, i), 1) <> "."
i = i + 1
Loop
pvfPartChaine = Right(strChaine, i-1)
Else
pvfPartChaine = ""
End If
End Function

2) Pour convertir ta chaine en numérique Integer : intTemp = CInt(strChaine)
A vrai dire cette étape n'est pas nécessaire, access se chargera tout seul
de convertir ta chaine en numérique selon ses besoins, evidemment s'il le
peut.

3) Pour écrire à un emplacement donné tu parcours ta table et tu t'arrête
quand il le faut.
Mais il est préférable de numéroter directement tes lignes de 0 à 255 comme
ça pas besoin de parcourir ta table et tu peux mettre à jour ta ligne
directement avec son numéro Id

Dim strSQL as String
strSQL = "UPDATE TaTable SET TonChamp = '" & TaMiseAJour & "' WHERE Id = " &
CInt(pvfPartChaine(strChaine))

Espérant t'avoir éclairé.
Ouala
Buddy
www.mlxconseil.fr.st



"Sweety" <*enlevez_ceci* a écrit dans le message de
news:
Bonjour/soir à tous/toutes

Mon problème :-)

J'ai une table [TableA] qui contient des adresses IP dans un champ
[IPAddress] sous la forme par exemple :
18.1.11.x ou encore 18.1.1.x
Ce champ est de type *texte*

Je souhaite extraire de cette table tous les caractères se trouvant après
le

3ème point de l'adresse IP, convertir ces caractères (qui sont tous des
chiffres forcément) en *numérique* et ensuite les enregistrer dans une
table

[TableB] qui contient déjà 254 enregistrements vides.

Par exemple de 18.1.11.191 je souhaite extraire le "191"

Mes problèmes sont les suivants :

Je souhaite que si la valeur extraite est 12, ce que j'enregistre dans ma
[TableB] (qui contient 254 enregistrements vides) soit enregistré dans
l'enregistrement 12, si c'est 121, dans l'enregistrement 121.
Le but étant de faire une requête dans [TableB] afin de trouver les
adresses

IP libres (champs vides)

Mes questions :

1) Comment extraire les caractères qui suivent le troisième point du Champ
IPAddress de la TableA (sachant que le nombre de caractères précédant ce
point est variable) ?

2) Comment convertir cette chaîne de caractère en valeur numérique? (ça
devrait aller je crois :-)

3) Comment faire pour placer ces valeurs au bon endroit dans TableB
(valeur

12 dans enregistrement 12 etc...)

Puis-je faire tout ça en SQL ou dois-je passer par du VB?

Désolé pour la longueur de mon problème mais je suppose que c'est un jeu
d'enfant pour certains d'entre-vous (je ne jongle pas encore très à fond
avec SQL et VB)

Merci de me donner des pistes ;-)
Ma sympathie à tous/toutes

Michel




Avatar
J-Pierre
Bonsoir,

Tu peux aussi utiliser InStrRev pour déterminer la position du dernier point à droite, j'écris de mémoire, j'ai peut-être un peu la
flemme d'aller dans la doc...:

posPoint = InStrRev(monChamp, ".")
longChamp = Len(monChamp)
monResultat = Right(longChamp - posPoint )

Tout ça peut s'écrire en une seule ligne, mais comme ça, c'est plus clair.

J-Pierre

"Sweety" <*enlevez_ceci* a écrit dans le message de news:
Bonjour/soir à tous/toutes

Mon problème :-)

J'ai une table [TableA] qui contient des adresses IP dans un champ
[IPAddress] sous la forme par exemple :
18.1.11.x ou encore 18.1.1.x
Ce champ est de type *texte*

Je souhaite extraire de cette table tous les caractères se trouvant après le
3ème point de l'adresse IP, convertir ces caractères (qui sont tous des
chiffres forcément) en *numérique* et ensuite les enregistrer dans une table
[TableB] qui contient déjà 254 enregistrements vides.

Par exemple de 18.1.11.191 je souhaite extraire le "191"

Mes problèmes sont les suivants :

Je souhaite que si la valeur extraite est 12, ce que j'enregistre dans ma
[TableB] (qui contient 254 enregistrements vides) soit enregistré dans
l'enregistrement 12, si c'est 121, dans l'enregistrement 121.
Le but étant de faire une requête dans [TableB] afin de trouver les adresses
IP libres (champs vides)

Mes questions :

1) Comment extraire les caractères qui suivent le troisième point du Champ
IPAddress de la TableA (sachant que le nombre de caractères précédant ce
point est variable) ?

2) Comment convertir cette chaîne de caractère en valeur numérique? (ça
devrait aller je crois :-)

3) Comment faire pour placer ces valeurs au bon endroit dans TableB (valeur
12 dans enregistrement 12 etc...)

Puis-je faire tout ça en SQL ou dois-je passer par du VB?

Désolé pour la longueur de mon problème mais je suppose que c'est un jeu
d'enfant pour certains d'entre-vous (je ne jongle pas encore très à fond
avec SQL et VB)

Merci de me donner des pistes ;-)
Ma sympathie à tous/toutes

Michel




Avatar
Sweety
Un grand merci à vous deux ;-)

"J-Pierre" a écrit dans le message de
news: #
Bonsoir,

Tu peux aussi utiliser InStrRev pour déterminer la position du dernier
point à droite, j'écris de mémoire, j'ai peut-être un peu la

flemme d'aller dans la doc...:

posPoint = InStrRev(monChamp, ".")
longChamp = Len(monChamp)
monResultat = Right(longChamp - posPoint )

Tout ça peut s'écrire en une seule ligne, mais comme ça, c'est plus clair.

J-Pierre

"Sweety" <*enlevez_ceci* a écrit dans le message de
news:

Bonjour/soir à tous/toutes

Mon problème :-)

J'ai une table [TableA] qui contient des adresses IP dans un champ
[IPAddress] sous la forme par exemple :
18.1.11.x ou encore 18.1.1.x
Ce champ est de type *texte*

Je souhaite extraire de cette table tous les caractères se trouvant
après le


3ème point de l'adresse IP, convertir ces caractères (qui sont tous des
chiffres forcément) en *numérique* et ensuite les enregistrer dans une
table


[TableB] qui contient déjà 254 enregistrements vides.

Par exemple de 18.1.11.191 je souhaite extraire le "191"

Mes problèmes sont les suivants :

Je souhaite que si la valeur extraite est 12, ce que j'enregistre dans
ma


[TableB] (qui contient 254 enregistrements vides) soit enregistré dans
l'enregistrement 12, si c'est 121, dans l'enregistrement 121.
Le but étant de faire une requête dans [TableB] afin de trouver les
adresses


IP libres (champs vides)

Mes questions :

1) Comment extraire les caractères qui suivent le troisième point du
Champ


IPAddress de la TableA (sachant que le nombre de caractères précédant ce
point est variable) ?

2) Comment convertir cette chaîne de caractère en valeur numérique? (ça
devrait aller je crois :-)

3) Comment faire pour placer ces valeurs au bon endroit dans TableB
(valeur


12 dans enregistrement 12 etc...)

Puis-je faire tout ça en SQL ou dois-je passer par du VB?

Désolé pour la longueur de mon problème mais je suppose que c'est un jeu
d'enfant pour certains d'entre-vous (je ne jongle pas encore très à fond
avec SQL et VB)

Merci de me donner des pistes ;-)
Ma sympathie à tous/toutes

Michel








Avatar
Sweety
Bonjour

Encore un petit coup de pouce si possible

Je n'arrive pas trop à intégrer et exploiter ces fonctions au départ d'un
formulaire ou d'une requête
(donc "interroger" TableA, enregistrement par enregistrement, et au même
moment insérer les valeurs calculées dans TableB)

Je voudrais en fait faire une requête dans TableA, qui me demande le range
d'adresses IP sous la forme WW.XX.YY et que cette requête m'extraie la
valeur ZZ de TableA pour la placer en bonne position dans TableB.

J'avoue que je suis un peu perdu dans les opérations sur enregistrements, et
les modules :(

Encore merci de votre dévouement
Michel


"Sweety" <*enlevez_ceci* a écrit dans le message de
news:
Bonjour/soir à tous/toutes

Mon problème :-)

J'ai une table [TableA] qui contient des adresses IP dans un champ
[IPAddress] sous la forme par exemple :
18.1.11.x ou encore 18.1.1.x
Ce champ est de type *texte*

Je souhaite extraire de cette table tous les caractères se trouvant après
le

3ème point de l'adresse IP, convertir ces caractères (qui sont tous des
chiffres forcément) en *numérique* et ensuite les enregistrer dans une
table

[TableB] qui contient déjà 254 enregistrements vides.

Par exemple de 18.1.11.191 je souhaite extraire le "191"

Mes problèmes sont les suivants :

Je souhaite que si la valeur extraite est 12, ce que j'enregistre dans ma
[TableB] (qui contient 254 enregistrements vides) soit enregistré dans
l'enregistrement 12, si c'est 121, dans l'enregistrement 121.
Le but étant de faire une requête dans [TableB] afin de trouver les
adresses

IP libres (champs vides)

Mes questions :

1) Comment extraire les caractères qui suivent le troisième point du Champ
IPAddress de la TableA (sachant que le nombre de caractères précédant ce
point est variable) ?

2) Comment convertir cette chaîne de caractère en valeur numérique? (ça
devrait aller je crois :-)

3) Comment faire pour placer ces valeurs au bon endroit dans TableB
(valeur

12 dans enregistrement 12 etc...)

Puis-je faire tout ça en SQL ou dois-je passer par du VB?

Désolé pour la longueur de mon problème mais je suppose que c'est un jeu
d'enfant pour certains d'entre-vous (je ne jongle pas encore très à fond
avec SQL et VB)

Merci de me donner des pistes ;-)
Ma sympathie à tous/toutes

Michel




Avatar
Sweety
OK, annulez tout, tout est réglé, encore merci ;-)

"Sweety" <*enlevez_ceci* a écrit dans le message de
news:
Bonjour

Encore un petit coup de pouce si possible

Je n'arrive pas trop à intégrer et exploiter ces fonctions au départ d'un
formulaire ou d'une requête
(donc "interroger" TableA, enregistrement par enregistrement, et au même
moment insérer les valeurs calculées dans TableB)

Je voudrais en fait faire une requête dans TableA, qui me demande le range
d'adresses IP sous la forme WW.XX.YY et que cette requête m'extraie la
valeur ZZ de TableA pour la placer en bonne position dans TableB.

J'avoue que je suis un peu perdu dans les opérations sur enregistrements,
et

les modules :(

Encore merci de votre dévouement
Michel


"Sweety" <*enlevez_ceci* a écrit dans le message de
news:
Bonjour/soir à tous/toutes

Mon problème :-)

J'ai une table [TableA] qui contient des adresses IP dans un champ
[IPAddress] sous la forme par exemple :
18.1.11.x ou encore 18.1.1.x
Ce champ est de type *texte*

Je souhaite extraire de cette table tous les caractères se trouvant
après


le
3ème point de l'adresse IP, convertir ces caractères (qui sont tous des
chiffres forcément) en *numérique* et ensuite les enregistrer dans une
table

[TableB] qui contient déjà 254 enregistrements vides.

Par exemple de 18.1.11.191 je souhaite extraire le "191"

Mes problèmes sont les suivants :

Je souhaite que si la valeur extraite est 12, ce que j'enregistre dans
ma


[TableB] (qui contient 254 enregistrements vides) soit enregistré dans
l'enregistrement 12, si c'est 121, dans l'enregistrement 121.
Le but étant de faire une requête dans [TableB] afin de trouver les
adresses

IP libres (champs vides)

Mes questions :

1) Comment extraire les caractères qui suivent le troisième point du
Champ


IPAddress de la TableA (sachant que le nombre de caractères précédant ce
point est variable) ?

2) Comment convertir cette chaîne de caractère en valeur numérique? (ça
devrait aller je crois :-)

3) Comment faire pour placer ces valeurs au bon endroit dans TableB
(valeur

12 dans enregistrement 12 etc...)

Puis-je faire tout ça en SQL ou dois-je passer par du VB?

Désolé pour la longueur de mon problème mais je suppose que c'est un jeu
d'enfant pour certains d'entre-vous (je ne jongle pas encore très à fond
avec SQL et VB)

Merci de me donner des pistes ;-)
Ma sympathie à tous/toutes

Michel