Extraire une chaîne de caractères [Résolu]

Signaler
Messages postés
134
Date d'inscription
samedi 23 septembre 2006
Statut
Membre
Dernière intervention
1 juin 2007
-
cs_JMO
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
-
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

Messages postés
134
Date d'inscription
samedi 23 septembre 2006
Statut
Membre
Dernière intervention
1 juin 2007

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
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
46
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
Messages postés
134
Date d'inscription
samedi 23 septembre 2006
Statut
Membre
Dernière intervention
1 juin 2007

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
Messages postés
134
Date d'inscription
samedi 23 septembre 2006
Statut
Membre
Dernière intervention
1 juin 2007

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
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
46
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
Messages postés
134
Date d'inscription
samedi 23 septembre 2006
Statut
Membre
Dernière intervention
1 juin 2007

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
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
46
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
Messages postés
134
Date d'inscription
samedi 23 septembre 2006
Statut
Membre
Dernière intervention
1 juin 2007

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
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
46
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
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
46
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
Messages postés
134
Date d'inscription
samedi 23 septembre 2006
Statut
Membre
Dernière intervention
1 juin 2007

Ok merci, et je reviens avec un autre topic !  mais çà doit être simple pour un pro.
Ok je valide
Merci
JL
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
24
 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