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

Bases de données Delphi Discussion :

Comment transformer MAJUSCULES en minuscules ?


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 228
    Points : 72
    Points
    72
    Par défaut Comment transformer MAJUSCULES en minuscules ?
    J'explique: j'ai une ceintaine d'enregistremments, et certains commencent par deux lettres "DA". Je souhaite modifier uniquement ces enregistremments de la façon suivante: uniquement les deux premières lettres des enregistremments on met en minuscule, le reste du mot on garde en majuscule.

    Merci pour toute idée...

  2. #2
    Futur Membre du Club
    Inscrit en
    Août 2002
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Avec la fonction Copy.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Chaine:= 'DAVID & GOLIATH';
    if Copy(Chaine, 1, 2) = 'DA' then
      Chaine:= 'da'+Copy(Chaine, 3, Length(Chaine)-2);

  3. #3
    Membre averti
    Avatar de HumanTool
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2006
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2006
    Messages : 276
    Points : 378
    Points
    378
    Par défaut
    salut,
    je pense que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Pos('DA', Chaine) < 2 then
    doit être plus efficace que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Copy(Chaine, 1, 2) = 'DA' then
    je sais qu'on a des machines de + en + rapide mais bon les comparaisons de chaine ça prends du temps...même 2 lettres
    D'abord ils vous ignorent, ensuite ils se moquent de vous, puis ils vous combattent, enfin vous gagnez (Gandhi)

  4. #4
    Membre averti
    Avatar de HumanTool
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2006
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2006
    Messages : 276
    Points : 378
    Points
    378
    Par défaut
    oups, j'oublié il existe la fonction LowerCase qui transforme du texte en minuscule et UpperCase en majuscule.
    D'abord ils vous ignorent, ensuite ils se moquent de vous, puis ils vous combattent, enfin vous gagnez (Gandhi)

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 228
    Points : 72
    Points
    72
    Par défaut
    Merci de vos réponses. Ca marche très bien dans un exemple de base avec un edit1.text, par ex. Maintenant, je veux appliquer ceci à tous les enregistremments du champ "Nom" de ma table1, sachant qu'il s'agit d'une base paradox. (Je ne sais pas si c'est important de souligner ceci).

    Merci d'avance.

  6. #6
    Membre averti
    Avatar de HumanTool
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2006
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2006
    Messages : 276
    Points : 378
    Points
    378
    Par défaut
    il suffit de traiter le champ "nom" comme si ct ton TEdit...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    while not matable.eof do
    begin
         if Pos(masouschaine, Chaine) < 2 then
         begin
              matableNom.value := Lowercase(masouschaine) + Copy(matableNom.value, 3, Length(matableNom.value)-2);
              matable.post;
         end; 
         matable.next;
    end;
    en gros......................
    D'abord ils vous ignorent, ensuite ils se moquent de vous, puis ils vous combattent, enfin vous gagnez (Gandhi)

  7. #7
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par HumanTool
    il suffit de traiter le champ "nom" comme si ct ton TEdit...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    while not matable.eof do
    begin
         if Pos(masouschaine, Chaine) < 2 then
         begin
              matableNom.value := Lowercase(masouschaine) + Copy(matableNom.value, 3, Length(matableNom.value)-2);
              matable.post;
         end; 
         matable.next;
    end;
    en gros......................
    Ta fonction est fausse et fonctionnera même quand "DA" n'est pas présent dans le texte.

    Citation Envoyé par Aide delphi
    Si Substr est introuvable, Pos renvoie zéro.
    Au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if Pos(masouschaine, Chaine) < 2 then
    Il faut mettre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if Pos(masouschaine, Chaine) = 1 then // pos renvoi toujours la position du premier caractère de la chaine recherchée
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  8. #8
    Membre averti
    Avatar de HumanTool
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2006
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2006
    Messages : 276
    Points : 378
    Points
    378
    Par défaut
    à vouloir trop en faire...
    D'abord ils vous ignorent, ensuite ils se moquent de vous, puis ils vous combattent, enfin vous gagnez (Gandhi)

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 228
    Points : 72
    Points
    72
    Par défaut
    ...oui, mais ceci va mettre TOUS les enregistremments en minuscules! Je veux seulement ceux qui commencent par "DA"...
    Donc, il faudrait un if, mais comment...???

  10. #10
    Futur Membre du Club
    Inscrit en
    Août 2002
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Mais si, il y est le if. Allez, on recommence.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    table.open;
    table.first;
    while not table.eof do begin
      Chaine:= table.FieldByName('Nom').AsString;
      if Pos('DA', Chaine) = 1 then begin
        table.Edit;
        table.FieldByName('Nom').AsString:= 'da'+Copy(Chaine, 3, Length(Chaine)-2);
        table.Post;
      end;
      table.Next;
    end;
    table.Close;

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 228
    Points : 72
    Points
    72
    Par défaut
    Le côde me parraît excellent, et très clair, mais malheureusement, il ne fait rien!!!! Bizzarre...

  12. #12
    Membre averti
    Avatar de HumanTool
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2006
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2006
    Messages : 276
    Points : 378
    Points
    378
    Par défaut
    met un point d'arrêt sur le if et vérifit le valeurs retournées pour tes champs
    D'abord ils vous ignorent, ensuite ils se moquent de vous, puis ils vous combattent, enfin vous gagnez (Gandhi)

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 228
    Points : 72
    Points
    72
    Par défaut
    ?

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 228
    Points : 72
    Points
    72
    Par défaut
    OUI, j'ai mis un "showmessage" et j'ai compris qu'il fait un enregistremment à la fois. Donc, il faut reclicquer à chaque fois pour qu'il fasse un nouvel enregistremment!
    Donc, il faut trouver une boucle... hmmm...

  15. #15
    Membre averti
    Avatar de HumanTool
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2006
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2006
    Messages : 276
    Points : 378
    Points
    378
    Par défaut
    à ce ryhtme c pas gagné :
    la boucle est dans le code gentiment fournit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while not table.eof do begin
    D'abord ils vous ignorent, ensuite ils se moquent de vous, puis ils vous combattent, enfin vous gagnez (Gandhi)

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 228
    Points : 72
    Points
    72
    Par défaut
    Oui, j'ai cette boucle, bien sur, mais le côde modifie UN enregistremment à la fois, quand même! Il faut clicquer autant de fois combien il y a des enregistremments à modifier...!

  17. #17
    Futur Membre du Club
    Inscrit en
    Août 2002
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Ben, si tu mets le Showmessage dans la boucle, ça me semble logique.

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 228
    Points : 72
    Points
    72
    Par défaut
    Nooooooon, je l'ai enlevé, bien sûr!

  19. #19
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 152
    Points
    10 152
    Par défaut
    Tu peux faire ça directement en SQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE ta_table
    SET ton_champ = CONCAT('da', SUBSTRING(ton_champ, 3))
    WHERE ton_champ LIKE 'DA%'
    Si ta table est volumineuse, n'oublie pas de placer un index sur la colonne en question
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 228
    Points : 72
    Points
    72
    Par défaut
    Je n'utilise pas SQL, c'est une base Paradox et le côde précédent est très bien, il fonctionne, mais il manque qqchose pour l'executer en boucle... je ne sais pas quoi...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Transformer certains champs en majuscules ou minuscules
    Par Rem5962 dans le forum Requêtes
    Réponses: 7
    Dernier message: 23/04/2014, 20h10
  2. Transformer la saisie majuscule en minuscule
    Par piloo2011 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 01/08/2011, 14h06
  3. Réponses: 0
    Dernier message: 31/05/2011, 18h59
  4. Transformer une lettre minuscule en majuscule
    Par star7dust dans le forum Pascal
    Réponses: 16
    Dernier message: 13/01/2008, 09h11
  5. transformer majuscules en minuscules dans un String
    Par barbiche dans le forum Langage
    Réponses: 4
    Dernier message: 28/03/2007, 10h42

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