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 :

Supprimer des caractères avec une requête


Sujet :

Access

  1. #1
    Membre habitué Avatar de Daniel MOREAU
    Inscrit en
    Décembre 2004
    Messages
    372
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 372
    Points : 142
    Points
    142
    Par défaut Supprimer des caractères avec une requête
    Bonjour à tous,

    Je souhaite supprimer les premiers caractères du champ "Nom" de ma table "Tbl_TempLstTbl".

    J'ai une fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Function CleanUp(ByVal str As String) As String
    Dim tmp() As String
    Dim i As Integer
     
    tmp = Split(str)
    CleanUp = vbNullString
    For i = 0 To UBound(tmp)
    Select Case tmp(i)
    Case "TARIF_"
    Case Else
    CleanUp = CleanUp & " " & tmp(i)
    End Select
    Next i
    CleanUp = Trim$(CleanUp)
    End Function
    et à l'ouverture de mon formulaire j'ai ajouté le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    Private Sub Form_Open(Cancel As Integer)
    Dim Mabase As Database
    Dim Data As Recordset
    Dim Vsql As String
    Vsql = "SELECT Tbl_TempLstTbl.Nom FROM tbl_TempLstTbl"
    Vsql = Vsql & " WHERE (((Tbl_TempLstTbl.Nom) Like 'TARIF_*'));"
    'déclaration des variales
    Set Mabase = CurrentDb
    Set Data = Mabase.OpenRecordset(Vsql, dbOpenDynaset)
    'initialise le recordset en mémoire
    If Data.EOF Then Exit Sub
    'recherche s'il existe une valeur
    Do Until Data.EOF
    'appel de la fonction par exemple MàJ_Tarif data![N°_Tarif]
    CleanUp Data![Nom]
    Data.MoveNext
    Loop
    Data.Close
    Set Data = Nothing
    Set Mabase = Nothing
     
    End Sub
    Malheureusement les caractères "TARIF_" ne sont pas supprimés.

    Avez-vous une idée ?

    Merci pour vos réponses

    Daniel

  2. #2
    Expert éminent sénior

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

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Une requête UPDATE faisant appel à la fonction replace est suffisant

  3. #3
    Membre habitué Avatar de Daniel MOREAU
    Inscrit en
    Décembre 2004
    Messages
    372
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 372
    Points : 142
    Points
    142
    Par défaut
    Merci Tofalu pour ta réponse,

    Je viens de tester avec la fonction replace mais cette fois ci j'ai un message d'erreur.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    Private Sub Form_Open(Cancel As Integer)
    Dim Mabase As Database
    Dim Data As Recordset
    Dim Vsql As String
    Vsql = "UPDATE Nom set Tbl_TempLstTbl.Nom = replace(Nom, TARIF_,"");"
    'déclaration des variales
    Set Mabase = CurrentDb
    Set Data = Mabase.OpenRecordset(Vsql, dbOpenDynaset)
    'initialise le recordset en mémoire
    Debug.Print Vsql
    If Data.EOF Then Exit Sub
    'recherche s'il existe une valeur
    Do Until Data.EOF
    Mabase.Execute Vsql
    Data.MoveNext
    Loop
     
    Data.Close
    Set Data = Nothing
    Set Mabase = Nothing
     
    End Sub
    je pense que cette partie n'est pas bonne
    replace(Nom, TARIF_,"")
    Pouvez-vous m'aider à rédiger correctement.

    Merci

    Daniel

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonsoir,

    Alors ?
    Encore ces "maudits" guillemets qui perturbent une commande SQL !
    Faudrait voir à les DOUBLER... comme ceci...

    Et puis la requête SQL ne semble pas correcte non plus...

    Et franchement, appeler un champ en utilisant le libellé [Nom], c'est vraiment risqué (problèmes de syntaxe, d'ambiguïté...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Vsql = "UPDATE Tbl_TempLstTbl SET Nom = Replace(Tbl_TempLstTbl.Nom, TARIF_,"""")"
    LE BON REFLEXE:
    Tu pourrais utiliser le débogueur pour contrôler la valeur de cette variable Vsql, récupérer le texte de la requête et tester son fonctionnement dans une requête Access (d'ailleurs, il y a un tutoriel sur ce thème sur Access.Developpez.com, non ?).

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/03/2014, 16h46
  2. Comment supprimer des fichiers lorsqu'on quitte une interface
    Par ZAYDOUN dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 23/04/2007, 23h21
  3. : remplir des zones de texte avec une boucle For
    Par Haro_GSD dans le forum Access
    Réponses: 3
    Dernier message: 20/09/2005, 21h23
  4. Réponses: 3
    Dernier message: 21/06/2005, 11h37
  5. Generer des noms de variables avec une boucle
    Par moutanakid dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/07/2004, 17h45

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