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 :

Clé primaire sensible à la casse [AC-2010]


Sujet :

Access

  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Points : 1 107
    Points
    1 107
    Par défaut Clé primaire sensible à la casse
    Bonjour,
    A la demande de mes utilisateurs, j'ai repris une application développée il y a plus de 20 ans sous Clipper (avec fichiers DBF) pour la basculer sous Access 2010.
    J'ai une table dont la clé primaire (CODE_INDEX) est sensible à la casse, ce que je ne savais pas au début (par exemple, je peux avoir deux CODE_INDEX : CA005510 et Ca005510). Je viens d'être prévenu par les utilisateurs...Or toute ma conception est déjà terminée (code VBA, requêtes, forms et reports, etc.).

    Comment puis-je faire pour palier à ce problème sans que ça me fasse perdre trop de temps ?
    J'ai trouvé ces 4 solutions sur le support de Microsoft mais je ne suis pas sûr de la meilleure solution à adopter. Je pensais à : Développement hexadécimal. Le champ binaire ne pouvant apparemment pas stocker de chaînes de plus de 3 caractères et car on ne peut pas faire de WHERE sur un champ binaire.

    Qu'en pensez-vous ?

    Merci d'avance pour vos réponses éclairées.
    L'informatique fait gagner beaucoup de temps. A condition d'en avoir beaucoup devant soi !!!

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 586
    Points : 34 255
    Points
    34 255
    Par défaut
    Salut,

    la fonction StrComp me parait être la plus simple à mettre en place.

    Mais tout va de toute façon dépendre de la volumétrie de requêtes qui sont déjà existantes dans ta base + le nombre de requêtes générées/utilisées dans ton code VBA...
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Points : 1 107
    Points
    1 107
    Par défaut
    Merci pour ta réponse. Le problème à ce moment-là qui se pose est comment dois-je paramétrer le champ CODE_INDEX de ma table ?
    En effet, si je le mets en texte et en clé primaire (avec un index unique donc), il m'est impossible de saisir deux codes de type 'CA005510' et 'Ca005510'.
    Suis-je obligé d'abandonner l'idée de créer un INDEX unique sur ce champ ?
    L'informatique fait gagner beaucoup de temps. A condition d'en avoir beaucoup devant soi !!!

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 586
    Points : 34 255
    Points
    34 255
    Par défaut
    Des pistes :
    http://www.developpez.net/forums/d37...ensible-casse/

    Mais il semblerait que le moteur JET d'Access considère par défaut que 'ABC' est comme 'abc'...
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Points : 1 107
    Points
    1 107
    Par défaut
    Merci JPcheck, je l'ai déjà lu ce topic Je vais continuer mes recherches et faire quelques essais.
    Si d'autres solutions je suis preneur. Dans tous les cas, je mettrai à jour ce topic en fonction de la solution retenue
    L'informatique fait gagner beaucoup de temps. A condition d'en avoir beaucoup devant soi !!!

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Points : 1 107
    Points
    1 107
    Par défaut
    Bon, finalement je pense adopter la solution suivante :
    L'idée est de stocker mon CODE_INDEX en code ASCII et d'en faire la clé primaire.
    Sur ma table, je supprime la clé primaire sur CODE_INDEX et je crée un autre champ CODE_INDEX_ASC (TEXT(255)) que je place en clé primaire.
    Ensuite, je crée un trigger (macro de données avant modification) pour définir ce champ avec la valeur ConvertAscii([CODE_INDEX]).
    La fonction ConvertAscii est définie par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Public Function ConvertAscii(InputString As String) As String
        Dim lngLoop As Long
        Dim strOutputString
     
        For lngLoop = 1 To Len(InputString)
            strOutputString = strOutputString & Format(Asc(Mid$(InputString, lngLoop, 1)), "000")
        Next lngLoop
     
        ConvertAscii = strOutputString
     
    End Function
    ça fonctionne nickel à l'insertion ou la mise à jour de données
    Il me reste plus qu'à modifier les tables qui y sont liées ainsi que mes requêtes stockées ou générées en VBA....Allez je retrousse mes manches et c'est parti !

    J'aurais gagné pas mal de temps à avoir cette info (CODE_INDEX case sensitive) lors de la récolte des besoins...ça me servira pour les prochaines fois :p
    L'informatique fait gagner beaucoup de temps. A condition d'en avoir beaucoup devant soi !!!

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

Discussions similaires

  1. [MySQL] Récupérer une valeur avec SELECT sensible à la casse
    Par nuphius dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/01/2007, 16h21
  2. ORDER BY sensible à la casse?
    Par soda_o_rat dans le forum Requêtes
    Réponses: 4
    Dernier message: 07/01/2007, 14h01
  3. Réponses: 2
    Dernier message: 15/05/2006, 15h08
  4. [Requête] SELECT sensible à la casse
    Par joefou dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/02/2006, 15h23
  5. Nom de la table sensible à la casse
    Par Alexandre T dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 17/03/2005, 18h34

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