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

VBA Access Discussion :

DAO : Function Replace() & Access 2000


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 6
    Par défaut DAO : Function Replace() & Access 2000
    Bonjour,

    Je dois faire une petite modification sur une vieille application qui a été développée avec DAO.

    J'ai un problème de tri au niveau des apostrophes.
    Tri actuel :
    - D'AB
    - DAC
    - D'AD
    - DAD
    - D'EB
    - DEC

    Tri désiré:
    - D'AB
    - D'AD
    - D'EB
    - DAC
    - DAD
    - DEC

    Ma requête de selection pour permettre cela (elle marche dans les requêtes Access 2000)
    Select ... From ... Order by Replace(MonChamp, '''', ''' ');

    Le tri est correct grâce à cette requête dans Access, mais impossible de la faire marcher dans VB avec DAO 3.6

    Avez-vous une idée pour que cela fonctionne ? ou une autre façon de faire pour que le tri soit correct?

    Merci d'avance.
    Cordialement.

  2. #2
    Membre chevronné
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Par défaut
    y a t il un message d 'erreur ?
    montre ta requête ! ou ton bout de code !

    comment on peut deviner ce qui marche pas nous !!

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 6
    Par défaut
    oups :p

    C'est le Replace() qui ne marche pas err 3080 fonction non définie

    Ligne de code :
    vSQL= "Select ... From ... Order by Replace(MonChamp, '''', ''' ')"
    set vRs=db.OpenRecordset(vSQL,dbOpenDynaset) >>>l'erreur est ici

    Sachant que la même requête sans le replace marche tout à fait

  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
    Enregistre la requête dans une requete enregistrée et appelle là en DAO par son nom ... c'est mieux que de mettre du code SQL dans du code VBA quand celui ci n'a pas besoin d'être modifié

  5. #5
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 6
    Par défaut
    Déjà fait
    Le message d'erreur est le même

  6. #6
    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
    Arf, essaye voir ainsi :

    Dans un module

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public function MonReplace(Chaine as string, Cherche as string, remplace as string) as string
    MonReplace=Replace(Chaine, Cherche,remplace)
    end function

    et dans ta requête tu appelles MonReplace au lieu de Replace

  7. #7
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 6
    Par défaut
    Cela implique un autre problème en fait si tu regardes bien ma requête le replace s'effectue pour le order by donc c'est directement lors du tri qu'il fait semblant de remplacer les apostrophes par apostrophe + espace.

    Si je mets le replace comme tu dis dans VB cela va faire un replace dans le nom de la colonne et non dans les données de la colonne.

    Est-ce que mon problème est un peu plus clair? :p

  8. #8
    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
    Non, tu te trompes, ça revient au même ... tu utiliseras en fait un clone de la fonction replace ... c'est un bug d'access 2000 ...

  9. #9
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 6
    Par défaut
    Re salut

    Je viens d'essayer et j'ai toujours le même problème.

  10. #10
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 6
    Par défaut
    Ok j'ai trouvé une solution
    Si ça vous interresse la voilà :
    Faire une requete comme ci-dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT MonChamp
    FROM MaTable
    ORDER BY
    IIf(InStr([MonChamp],Chr(39))>0,Mid([MonChamp],1,InStr([MonChamp],Chr(39))-1) & ' ' & Mid([MonChamp],InStr([MonChamp],Chr(39))+1),[MonChamp])

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

Discussions similaires

  1. Replace dans requête SQL Access 2000
    Par romulus34 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 12/03/2009, 11h55
  2. function replace non reconnu access 2000
    Par titeZ dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 25/02/2008, 10h59
  3. ACCESS 2000 DAO - Pb Accents
    Par sinquem dans le forum Access
    Réponses: 2
    Dernier message: 18/07/2007, 17h17
  4. DAO de ACCESS 2000 vers ACCESS 2
    Par cascar31 dans le forum VBA Access
    Réponses: 9
    Dernier message: 09/05/2007, 22h25
  5. pb d'importation Access 2000 ==> SQL Server 7.0
    Par diabolooo dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 20/08/2003, 16h49

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