Extraire une chaîne de caractères

Résolu
jeanluc065 Messages postés 134 Date d'inscription samedi 23 septembre 2006 Statut Membre Dernière intervention 1 juin 2007 - 5 oct. 2006 à 08:48
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 5 oct. 2006 à 13:54
Bonjour,
En acces 2002,
Dans ma table "prox", j'ai un champ "ref" rempli avec des chemins de fichiers,
exemple C:\aa\clients\castorama_xye132457.xls 
et je voudrais en extraire tout ce qui se trouve à droite du dernier \    pour avoir      castorama_xye132457.xls 

J'ai essayé un truc que j'ai trouvé, mais çà ne marche pas.SQL "UPDATE prox set ref '" & right§( ref;instrev(ref ;"") -1 )

Quelqu'un peut-il m'aider ?
Merci d'avance
 JL

12 réponses

jeanluc065 Messages postés 134 Date d'inscription samedi 23 septembre 2006 Statut Membre Dernière intervention 1 juin 2007
5 oct. 2006 à 11:44
Merciiiiiiiii Julien,

Tout fonctionne super !
voici donc pour ceux qui seraient intéressés.
En tout cas, c'est un super site et les gens qui le cotoient sont super sympas.
A bientôt.








Private Sub ImportThisFileproximusToDB(ByVal FileToImport As String, _
ByVal TableName As String, ByVal DBName As String)
    Dim SQL As String
    Dim SQL1 As String
    'une autre fonction détermine le nom de la table, de la db et du fichier xls à importer
   
   'importation des données de la feuille "ident" dans ma table
    DoCmd.TransferSpreadsheet acImport, 8, TableName, FileToImport, True, "ident!"
'mise à jour du champ "ref" par le nom du fichier importé  : C:\aa\clients\Bruxelles_1234.xls    SQL "UPDATE prox SET ref '" & FileToImport & "' WHERE IsNull(ref) = True;"
    DoCmd.RunSQL SQL
   
    ' mise à jour du champ "ref" avec une partie du nom du fichier Bruxelles_1234.xls    SQL1 "UPDATE prox set ref Mid(ref, InStrRev(ref, """") + 1)"
    DoCmd.RunSQL SQL1
        
                  
End Sub
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
5 oct. 2006 à 09:16
Salut,

Dim Ref As String 
Ref = "C:\aa\clients\castorama_xye132457.xls" 
SQL "UPDATE prox set ref '" & Right(Ref, Len(Ref) - InStrRev(Ref, "")) 

OU bien
 

Mid(Ref, InStrRev(Ref, "") + 1) 

@+,   Ju£i?n
0
jeanluc065 Messages postés 134 Date d'inscription samedi 23 septembre 2006 Statut Membre Dernière intervention 1 juin 2007
5 oct. 2006 à 09:37
Re bonjour Julien,

Sorry mais ni une ni l'autre ne fonctionne. Cà ne fait rien du tout et çà stope le déroulement de ma séquence.
jl
0
jeanluc065 Messages postés 134 Date d'inscription samedi 23 septembre 2006 Statut Membre Dernière intervention 1 juin 2007
5 oct. 2006 à 09:47
Julien,

Voici ce que j'ai, en rouge, ce qui a été ajouté pour extraire la chaîne et faire la mise à jour

 Dim SQL As String
    Dim SQL1 As String
     DoCmd.TransferSpreadsheet acImport, 8, TableName, FileToImport, True, "ident!"        SQL "UPDATE prox SET ref '" & FileToImport & "' WHERE IsNull(ref) = True;"
    DoCmd.RunSQL SQL    SQL1 "UPDATE prox set ref '" & Mid(ref, InStrRev(ref, "") + 1)



    DoCmd.RunSQL SQL1
jl
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
5 oct. 2006 à 10:08
Re,


Au moment ou tu construit ta requête SQL1 je pourrais savoir ce que contient ta variable Ref.

Msgbox refSQL1 "UPDATE prox set ref '" & Mid(ref, InStrRev(ref, "") + 1)

Car si Ref ne contient pas ce que tu souhaites...






@+,   Ju£i?n
0
jeanluc065 Messages postés 134 Date d'inscription samedi 23 septembre 2006 Statut Membre Dernière intervention 1 juin 2007
5 oct. 2006 à 10:18
Re,

j'ai un msg box avec bouton ok sans rien d'autre alors que l'importation dans la table ont été effectuées et que "ref" est complété avec le chemin complet du fichier.
Hélas, l'update avec l'extraction de la chaîne ne se fait pas.
jl
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
5 oct. 2006 à 10:58
Salut,


Si tu as juste une Msgbox avec le bouton cela signifie que Ref = "" donc forcément si tu utilise les fonctions Mid, Right InStrRev sur une chaine de caractere VIDE c'est sur que cela ne va pas marcher.


On va prendre le problème différemment.


SI j'ai bien tout compris, toi tu souhaite en fait que cela soit la Requete SQL qui effectue l'extraction du nom de fichier?


L'autre solution Serait de récupérer tout les Ref et de les traiter dans le code.


Ou bien encore d'effectuer les Mid, ... sur FileToImport (lors du Update avec SQL et non SQL1) Mais la si il existe deja des chemin a modifier dans la base, ceux ci ne seront pas traites.


Je crois qu il faudrait que tu apportes un peu plus de précision.


En attendant je vais essayer de faire cela en SQL






@+,   Ju£i?n
0
jeanluc065 Messages postés 134 Date d'inscription samedi 23 septembre 2006 Statut Membre Dernière intervention 1 juin 2007
5 oct. 2006 à 11:18
Re,

Donc, en fait avec ma 1ère SQL   SQL , les données du fichiers viennent faire l'update du champ "ref"; et çà fonctionne

Je voudrais qu'immédiatement après la 2ème SQL  appelée SQL1 vienne à nouveau remettre "ref" à jour avec la chaîne de caractère souhaitée.( mid...)

Maintenant, si je connaissais la syntaxe pour écrire l'extraction dans  la rubrique "mise à jour " via l'assistant  création requête , je ferais une requête, une macro et un docmd.run macro.

J'espère avoir répondu à ta question.
Merci
JL
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
5 oct. 2006 à 11:24
Re,

Je pense que ceci devrais résoudre ton problème (j'espere)
SQL1 "UPDATE prox set ref Mid(ref, InStrRev(ref, """") + 1)"

j'ai testé sous access en requete SQL direct et cela a fonctionne

@+,   Ju£i?n
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
5 oct. 2006 à 11:53
Salut,


Mais de rien, content d'avoir pu aider.


Si tu estimes que ton problème est résolu, penses à appuyer sur réponse acceptée sur le ou les posts qui ont pu t'aider.


Ce qui m'aidera moi
@+,   Ju£i?n
0
jeanluc065 Messages postés 134 Date d'inscription samedi 23 septembre 2006 Statut Membre Dernière intervention 1 juin 2007
5 oct. 2006 à 12:38
Ok merci, et je reviens avec un autre topic !  mais çà doit être simple pour un pro.
Ok je valide
Merci
JL
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
5 oct. 2006 à 13:54
 Bonjour à tous....

Re jean-luc, et salut Julien
Ce que veux dire notre ami Julien, c'est de valider les réponses qui t'ont
fait avancer dans ton projet.
En l'occurence, la réponse (le post de julien) et non ton topic (ton propre dialogue) !!!!

A+.
Amicalement.
jean-marc
0
Rejoignez-nous