IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

replace function


Sujet :

Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 34
    Par défaut replace function
    bonjour,

    j'ai une base access sur laquel je souhaite par une query remplacer tous les retours chariot par un espace sur un champs donnée.

    Je connais la fonction replace qui agit sur un champ de formulaire existe t-il un equivalent pour agir sur toutes une table quand on fait une query du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select chp1, replace(chp2, chr(10), ' ') as chp2bis , chp3 FROM ...)

    je sais qu'il existe une fonction pour remplacer les accent mais pas les retour chariot ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM MaTable WHERE SansAccent(MonChamp,True)=sansaccent("élève",true)
    merci

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour,

    Si j'ai bien compris, en VBA:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CurrentDb.Execute "UPDATE [MaTable] SET [MonChamp] = Replace([MonChamp],chr(10), ' ') ;"
    Bonne chance,
    pgz

  3. #3
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 34
    Par défaut
    j'ai essayer ce code mais ça ne fonctionne pas, il update pas mon champs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Command0_Click()
    Dim rst As Recordset
     
    Set rst = CurrentDb.OpenRecordset("SELECT RFW_tab.RFW_ref, RFW_tab.Comment_1 FROM RFW_tab WHERE (((RFW_tab.Comment_1) Like '*' & chr(13) & '*' ))")
    While rst.EOF = False
            CurrentDb.Execute "UPDATE RFW_Tab SET RFW_Tab.Type_lst = '" & Replace(rst!Comment_1, vbCrLf, " ") & "' WHERE RFW_Tab.RFW_ref = '" & rst!RFW_ref & "'"
            rst.MoveNext
    Wend
    End Sub

  4. #4
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    Quelle version d'access ? la fonction replace n'est pas disponible pour les requêtes en dessous d'XP.

    Pour 2000, il faut dans un module réécrire la fonction (il s'agit d'un bug)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function remplacer(chaine As String, cherche As String, nouveau As String) As String
    On Error GoTo err
    remplacer = Replace(chaine, cherche, nouveau, , , vbTextCompare)
    err:
    End Function
    Un retour chariot est en fait composé de deux caractères : Le saut de ligne et le retour chariot à proprement parlé.

    Soit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE MATABLE SET MONCHAMP=REMPLACER(MONCHAMP,Chr(13) & Chr(10)," ")

  5. #5
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Je ne vois pas pourquoi tu ouvres un recordset...

    Essaie tout simplement ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Command0_Click() 
     
    CurrentDb.Execute "UPDATE MaTable SET MonChamp = Replace(MonChamp, vbCrLf, " ")  ;"        
    End Sub
    pgz

  6. #6
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 34
    Par défaut
    Citation Envoyé par pgz
    Je ne vois pas pourquoi tu ouvres un recordset...

    Essaie tout simplement ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Command0_Click() 
     
    CurrentDb.Execute "UPDATE MaTable SET MonChamp = Replace(MonChamp, vbCrLf, " ")  ;"        
    End Sub
    pgz
    la fonction Replace n'est pas reconnue dans access 200 sous windows NT.

    je suis donc obliger de passer par la fonction remplacer ci dessus decrite par Tofalu. et afin d'avoir le parametre monchamps de la fonction il faut bien un recordset

  7. #7
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Citation Envoyé par tiopan
    la fonction Replace n'est pas reconnue dans access 200 sous windows NT.

    je suis donc obliger de passer par la fonction remplacer ci dessus decrite par Tofalu. et afin d'avoir le parametre monchamps de la fonction il faut bien un recordset
    Hello,

    Replace() est reconnue sous Access 2000 + Win NT (c'est mon ancien environnement avant Win 2000 Pro).

    Le problème se situe peut être au niveau des réinitialisations de références ...
    Il faut en ôter une puis la rétablir, ça permet parfois de retrouver l'usage de fonctions primaires de VBA.

    http://access.developpez.com/faq/?page=Debug#MsgErrFct

  8. #8
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 34
    Par défaut
    en fait l'erreur ne viens pas du replace mais simplement du fait qu'avant de remplacer le retour chariot, il me faut remplacer le ' dans le champs sinon j'ai une erreur

    mais comment faire car si je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'update '
    Set rst = CurrentDb.OpenRecordset("SELECT RFW_tab.RFW_ref, RFW_tab.Comment_1 FROM RFW_tab WHERE  (((RFW_tab.Comment_1) Like '*' & Chr(52) & '*' ))")
    While rst.EOF = False
       CurrentDb.Execute "UPDATE RFW_Tab SET RFW_Tab.comment_1 = '" & replace(rst!comment_1, Chr(52), " ") & "' WHERE RFW_Tab.RFW_ref = '" & rst!RFW_ref & "'"
        rst.MoveNext
    Wend
    il me renvoit une erreur puisque il y a un ' dans le champs

    donc mon problème est de savoir remplacer les ' par un espace

  9. #9
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    re hello,

    en fait quand tu as un simple quote (') tu dois le remplacer par DEUX simple quotes.

    regarde la méthode dans mon tutoriel :

    http://cafeine.developpez.com/debugprint/#LVI-E

  10. #10
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 34
    Par défaut
    je suis désolé mais je n'y parvient vraiment pas
    j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'update simple quote
    Set rst = CurrentDb.OpenRecordset("SELECT RFW_tab.RFW_ref, RFW_tab.Comment_1 FROM RFW_tab WHERE  (((RFW_tab.Comment_1) Like '*" & Chr(180) & "*' ))")
    While rst.EOF = False
        CurrentDb.Execute "UPDATE RFW_Tab SET RFW_Tab.comment_1 = '" & Replace(rst!comment_1, "'", "''") & "' WHERE RFW_Tab.RFW_ref = '" & rst!RFW_ref & "'"
        rst.MoveNext
    Wend
    chr(180) est selon l'aide access le code du simple quote, mais il m'en laisse encore dans mon champs.

    comment puis je faire??

  11. #11
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    non 180 c'est : `

    alors qu'en faisant
    C'est donc 39 le code ASCII du simple quote ...

  12. #12
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 34
    Par défaut
    Citation Envoyé par cafeine
    ok, merci je ne connaissait pas cette commande Asc

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Create or replace function
    Par sweetasnz dans le forum PL/SQL
    Réponses: 2
    Dernier message: 09/03/2012, 15h46
  2. Problème avec function replace
    Par f.morgan3 dans le forum Services Web
    Réponses: 2
    Dernier message: 18/03/2008, 11h08
  3. function replace non reconnu access 2000
    Par titeZ dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 25/02/2008, 11h59
  4. function replace fichier txt
    Par bailamos dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 14/04/2007, 00h58
  5. DAO : Function Replace() & Access 2000
    Par antidotes dans le forum VBA Access
    Réponses: 9
    Dernier message: 28/09/2005, 17h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo