OVH Cloud OVH Cloud

fonction InstrRev

8 réponses
Avatar
bernie
bonjour à tous,

on m'a conseillé pour extraire des caractères d'une chaine d'utiliser la
fonction InstrRev sous access 2000.
dans une requète j'ai crée l'expression suivante :

mid([unechaine];instrRev([unechaine];"-")+1) pour extraire "azer" dans la
chaine "FR-XXX-azer". Mais chaque fois que j'exécute la requète voici le
message que j'ai: "fonction InstrRev non défini dans l'expression"

Alors si quelqu'un peut m'expliquer ce qui se passe j'en serais ravi.

merci par avance pour vos solutions.
Bernie

8 réponses

Avatar
Jessy Sempere [MVP]
Bonjour

on m'a conseillé pour extraire des caractères d'une chaine d'utiliser la
fonction InstrRev sous access 2000.
dans une requète j'ai crée l'expression suivante :

mid([unechaine];instrRev([unechaine];"-")+1) pour extraire "azer" dans la
chaine "FR-XXX-azer". Mais chaque fois que j'exécute la requète voici le
message que j'ai: "fonction InstrRev non défini dans l'expression"


Normalement ça foncitonne, à partir d'Access 2000, donc si tu as Access 2000
ou plus, ça devrait être bon.
Il se peut par contre que tu es une référence marquée comme "manquante",
pour vérifier, ouvre un module et va dans le menu "outils" - "références",
si tu en as qui sont marquée manquante, décoches les.

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
en cours de migration vers : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------

Avatar
bernie
bonjour,
je n'ai aucune références marquées manquante dans celles qui sont cochées


Bonjour

on m'a conseillé pour extraire des caractères d'une chaine d'utiliser la
fonction InstrRev sous access 2000.
dans une requète j'ai crée l'expression suivante :

mid([unechaine];instrRev([unechaine];"-")+1) pour extraire "azer" dans la
chaine "FR-XXX-azer". Mais chaque fois que j'exécute la requète voici le
message que j'ai: "fonction InstrRev non défini dans l'expression"


Normalement ça foncitonne, à partir d'Access 2000, donc si tu as Access 2000
ou plus, ça devrait être bon.
Il se peut par contre que tu es une référence marquée comme "manquante",
pour vérifier, ouvre un module et va dans le menu "outils" - "références",
si tu en as qui sont marquée manquante, décoches les.

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
en cours de migration vers : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------






Avatar
Argyronet
Bonjour,

A ce que je lis, vous tentez d'utiliser InstrRev() dans une requête...
Or, cette fonction n'est pas exploitable en tant que telle directement dans
le QBE...
Mais vous pouvez la créer dans un module comme cela :

Public Function DansChaineInverse(ByVal QuelleChaine As String, ByVal Quoi
As String, Optional ByVal Depart As Long = -1, Optional ByVal Comparaison =
vbTextCompare) As Long
If Len(QuelleChaine) = 0 Then DansChaineInverse = "": Exit Function
If Len(Quoi) = 0 Then DansChaineInverse = "": Exit Function
DansChaineInverse = InStrRev(QuelleChaine, Quoi, Depart, Comparaison)
End Function

Et dans votre requête vous exploitez alors DansChaineInverse dans les mêmes
conditions...
--
Argy
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



bonjour à tous,

on m'a conseillé pour extraire des caractères d'une chaine d'utiliser la
fonction InstrRev sous access 2000.
dans une requète j'ai crée l'expression suivante :

mid([unechaine];instrRev([unechaine];"-")+1) pour extraire "azer" dans la
chaine "FR-XXX-azer". Mais chaque fois que j'exécute la requète voici le
message que j'ai: "fonction InstrRev non défini dans l'expression"

Alors si quelqu'un peut m'expliquer ce qui se passe j'en serais ravi.

merci par avance pour vos solutions.
Bernie


Avatar
Argyronet
Zut, j'ai écrit une boulette, c'est pas "" mais 0

Public Function DansChaineInverse(ByVal QuelleChaine As String, ByVal Quoi
As String, Optional ByVal Depart As Long = -1, Optional ByVal Comparaison =
vbTextCompare) As Long
If Len(QuelleChaine) = 0 Then DansChaineInverse = 0: Exit Function
If Len(Quoi) = 0 Then DansChaineInverse = 0: Exit Function
DansChaineInverse = InStrRev(QuelleChaine, Quoi, Depart, Comparaison)
End Function

:O( Désolé...

--
Argy
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



Bonjour,

A ce que je lis, vous tentez d'utiliser InstrRev() dans une requête...
Or, cette fonction n'est pas exploitable en tant que telle directement dans
le QBE...
Mais vous pouvez la créer dans un module comme cela :

Public Function DansChaineInverse(ByVal QuelleChaine As String, ByVal Quoi
As String, Optional ByVal Depart As Long = -1, Optional ByVal Comparaison =
vbTextCompare) As Long
If Len(QuelleChaine) = 0 Then DansChaineInverse = "": Exit Function
If Len(Quoi) = 0 Then DansChaineInverse = "": Exit Function
DansChaineInverse = InStrRev(QuelleChaine, Quoi, Depart, Comparaison)
End Function

Et dans votre requête vous exploitez alors DansChaineInverse dans les mêmes
conditions...
--
Argy
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



bonjour à tous,

on m'a conseillé pour extraire des caractères d'une chaine d'utiliser la
fonction InstrRev sous access 2000.
dans une requète j'ai crée l'expression suivante :

mid([unechaine];instrRev([unechaine];"-")+1) pour extraire "azer" dans la
chaine "FR-XXX-azer". Mais chaque fois que j'exécute la requète voici le
message que j'ai: "fonction InstrRev non défini dans l'expression"

Alors si quelqu'un peut m'expliquer ce qui se passe j'en serais ravi.

merci par avance pour vos solutions.
Bernie




Avatar
Jessy Sempere [MVP]
Bonjour

Je ne suis pas d'accord avec toi...
Elle fonctionne très bien dans une requête, dans le générateur, il faut
écrire :

ExtracChaîne([Champ1];InStrRev([Champ1];"-")+1)

et dans le sql, il faut écrire :

Mid([Champ1],InStrRev([Champ1],"-")+1

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
en cours de migration vers : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------

"Argyronet" a écrit dans le message de
news:
Bonjour,

A ce que je lis, vous tentez d'utiliser InstrRev() dans une requête...
Or, cette fonction n'est pas exploitable en tant que telle directement
dans
le QBE...
Mais vous pouvez la créer dans un module comme cela :

Public Function DansChaineInverse(ByVal QuelleChaine As String, ByVal Quoi
As String, Optional ByVal Depart As Long = -1, Optional ByVal Comparaison
vbTextCompare) As Long
If Len(QuelleChaine) = 0 Then DansChaineInverse = "": Exit Function

If Len(Quoi) = 0 Then DansChaineInverse = "": Exit Function
DansChaineInverse = InStrRev(QuelleChaine, Quoi, Depart, Comparaison)
End Function

Et dans votre requête vous exploitez alors DansChaineInverse dans les
mêmes
conditions...
--
Argy
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on
obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



bonjour à tous,

on m'a conseillé pour extraire des caractères d'une chaine d'utiliser la
fonction InstrRev sous access 2000.
dans une requète j'ai crée l'expression suivante :

mid([unechaine];instrRev([unechaine];"-")+1) pour extraire "azer" dans la
chaine "FR-XXX-azer". Mais chaque fois que j'exécute la requète voici le
message que j'ai: "fonction InstrRev non défini dans l'expression"

Alors si quelqu'un peut m'expliquer ce qui se passe j'en serais ravi.

merci par avance pour vos solutions.
Bernie




Avatar
Eric
Bonjour,

Je suis très surpris !

La fonction InstrRev() fonctionne dans les requêtes créées sous QBE
d'Access sans aucun problème comme un grand nombre d'autres fonctions VB
telles Mid, Left, Right, Instr ... qui, elles, sont traduites en
français automatiquement par le générateur QBE.
Toutefois le SQL n'est plus alors standard ;-) , mais l'est-il vraiment
sous Access ?

Je pense que le problème de Bernie est plutot lié à une référence comme
le souligne Jessy, peut-être Visual Basic For Applications.

Je serai tenté de créer une nouvelle bd et d'importer, a minima, la
table et de refaire la requête.

Pour Bernie : une bd créée sous Access2000 avec la requête en question
qui retourne le traitement demandé : http://cjoint.com/?knlSUjW63n

Bonjour,

A ce que je lis, vous tentez d'utiliser InstrRev() dans une requête...
Or, cette fonction n'est pas exploitable en tant que telle directement dans
le QBE...
Mais vous pouvez la créer dans un module comme cela :

Public Function DansChaineInverse(ByVal QuelleChaine As String, ByVal Quoi
As String, Optional ByVal Depart As Long = -1, Optional ByVal Comparaison =
vbTextCompare) As Long
If Len(QuelleChaine) = 0 Then DansChaineInverse = "": Exit Function
If Len(Quoi) = 0 Then DansChaineInverse = "": Exit Function
DansChaineInverse = InStrRev(QuelleChaine, Quoi, Depart, Comparaison)
End Function

Et dans votre requête vous exploitez alors DansChaineInverse dans les mêmes
conditions...


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Argyronet
Oops,
Désolé, alors... J'étais persuadé du contraire... Comme quoi !
--
Argy
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



Bonjour,

Je suis très surpris !

La fonction InstrRev() fonctionne dans les requêtes créées sous QBE
d'Access sans aucun problème comme un grand nombre d'autres fonctions VB
telles Mid, Left, Right, Instr ... qui, elles, sont traduites en
français automatiquement par le générateur QBE.
Toutefois le SQL n'est plus alors standard ;-) , mais l'est-il vraiment
sous Access ?

Je pense que le problème de Bernie est plutot lié à une référence comme
le souligne Jessy, peut-être Visual Basic For Applications.

Je serai tenté de créer une nouvelle bd et d'importer, a minima, la
table et de refaire la requête.

Pour Bernie : une bd créée sous Access2000 avec la requête en question
qui retourne le traitement demandé : http://cjoint.com/?knlSUjW63n

Bonjour,

A ce que je lis, vous tentez d'utiliser InstrRev() dans une requête...
Or, cette fonction n'est pas exploitable en tant que telle directement dans
le QBE...
Mais vous pouvez la créer dans un module comme cela :

Public Function DansChaineInverse(ByVal QuelleChaine As String, ByVal Quoi
As String, Optional ByVal Depart As Long = -1, Optional ByVal Comparaison =
vbTextCompare) As Long
If Len(QuelleChaine) = 0 Then DansChaineInverse = "": Exit Function
If Len(Quoi) = 0 Then DansChaineInverse = "": Exit Function
DansChaineInverse = InStrRev(QuelleChaine, Quoi, Depart, Comparaison)
End Function

Et dans votre requête vous exploitez alors DansChaineInverse dans les mêmes
conditions...


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
bernie
Bonjour à tous,

la fonction "instrRev" fonctionne maintenant trés bien dans ma requète. J'ai
du charger SP3 de Office 2000 et depuis la fonction est bien reconnu.

Je vous remercie tous pour avoir planché sur mon problème

Bonne journée à tous
Bernie


Bonjour,

Je suis très surpris !

La fonction InstrRev() fonctionne dans les requêtes créées sous QBE
d'Access sans aucun problème comme un grand nombre d'autres fonctions VB
telles Mid, Left, Right, Instr ... qui, elles, sont traduites en
français automatiquement par le générateur QBE.
Toutefois le SQL n'est plus alors standard ;-) , mais l'est-il vraiment
sous Access ?

Je pense que le problème de Bernie est plutot lié à une référence comme
le souligne Jessy, peut-être Visual Basic For Applications.

Je serai tenté de créer une nouvelle bd et d'importer, a minima, la
table et de refaire la requête.

Pour Bernie : une bd créée sous Access2000 avec la requête en question
qui retourne le traitement demandé : http://cjoint.com/?knlSUjW63n

Bonjour,

A ce que je lis, vous tentez d'utiliser InstrRev() dans une requête...
Or, cette fonction n'est pas exploitable en tant que telle directement dans
le QBE...
Mais vous pouvez la créer dans un module comme cela :

Public Function DansChaineInverse(ByVal QuelleChaine As String, ByVal Quoi
As String, Optional ByVal Depart As Long = -1, Optional ByVal Comparaison =
vbTextCompare) As Long
If Len(QuelleChaine) = 0 Then DansChaineInverse = "": Exit Function
If Len(Quoi) = 0 Then DansChaineInverse = "": Exit Function
DansChaineInverse = InStrRev(QuelleChaine, Quoi, Depart, Comparaison)
End Function

Et dans votre requête vous exploitez alors DansChaineInverse dans les mêmes
conditions...


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr