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. #21
    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
    Le SQL fonctionne très bien sur les tables Paradox.

  2. #22
    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
    Citation Envoyé par kikica
    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...
    Tu n'as pas oublié les table.First et table.Next par hasard :

  3. #23
    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
    Citation Envoyé par Thierry67
    Citation Envoyé par kikica
    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...
    Tu n'as pas oublié les table.First et table.Next par hasard :
    Voici mon côde:
    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
    procedure TForm1.CLcl1Click(Sender: TObject);
    var chaine : string;
     begin
    table1.first;
    while not table1.eof do begin
      Chaine:= table1.FieldByName('Nom').AsString;
      if Pos('DA', Chaine) = 1 then begin
     // showmessage ('da'+Copy(Chaine, 3, Length(Chaine)-2));
        table1.Edit;
        table1.FieldByName('Nom').AsString:= 'da'+Copy(Chaine, 3, Length(Chaine)-2);
        table1.Post;
      end;
      table1.Next;
    end;
     end;

  4. #24
    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
    Juste une remarque en passant.

    Est ce que tu as au moins une donnée dans ta table qui permet de faire le traitement, car sinon c'est un peu normal que cela ne fonctionne pas.
    Modérateur Delphi

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

  5. #25
    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
    Bien sûr que j'ai des données, et ça fonctionne, mais UN enregistremment à la fois!

  6. #26
    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
    C'est normal que ca fonctionne qu'un seul enregistrement à la fois, vu que le bout de programme est un parcours de la table.
    Le seul moyen pour que ca fasse tout d'un coups c'est les requetes.
    Modérateur Delphi

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

  7. #27
    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
    Peux-tu me faire un exemple, stp? Je suppose que ce côde
    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%'
    devrait le faire, mais comment l'utiliser? je met dans un click du bouton? Ca ne marche pas...

  8. #28
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Citation Envoyé par kikica
    Bien sûr que j'ai des données, et ça fonctionne, mais UN enregistremment à la fois!
    Qu'est-ce que tu entends par UN enreg à la fois.

    Lorsque tu lances ta fonction, est-ce que au bout du compte tout tes enreg sont modifiés ?

    OU BIEN

    Il faut lancer plusieurs fois la fonction pour que tes enreg soit modifiés ?

    SI 1ere réponse, comme le dit Malatar, normal. ( et même une requete effectue cela en interne 1 à 1).

    SI 2EME réponse, alors il se peut que table1 soit indexée sur ton champs 'nom' et de surcroit que l'index tienne compte de la caste.

    Dans ce cas, après post d'un enregistrement, celui ci passe à la fin de ta table (car les minuscules sont APRES les majuscules dans la table ASCII) et donc tu te retrouves proche de la fin de ta table (en tout cas après tes noms en majuscules) et tu atteinds ta fin de Table
    -> traitement fini alors qu'il reste des noms en majuscule...

    exemple
    DA1, DA2, DA3
    1er appel: DA2, DA3, da1
    2eme appel: DA3, da1, da2
    3eme appel, da1, da2, da3
    ... donc 1 enreg à la fois à cause de l'index

    bon courage !
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  9. #29
    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
    Ce que je voulais dire par "Un à la fois" c'est qu'il faut que je clicque autant de fois combien il y a des enregistremments qui commencent par 'DA' pour que enfin tous soient traités.

  10. #30
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    donc tu dois être dans le 2eme cas... as-tu un index sur Table1 sur 'nom' avec différence Min/Maj ?

    Je suppose que oui

    Sinon, le code de parcours de la table et de modif est correct

    La solution la plus simple dans ce cas est celle de Malatar.
    Si tu ne veux pas utiliser de requete SQL:
    - soit tu enleves l'index avant ton parcours
    - soit, tu poses une autre table non indexée (pointant sur la même table physique) que tu parcours et modifies (avec un refresh sur Table1 au bout)
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  11. #31
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    Citation Envoyé par kikica
    Peux-tu me faire un exemple, stp? Je suppose que ce côde
    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%'
    devrait le faire, mais comment l'utiliser? je met dans un click du bouton? Ca ne marche pas...
    voir TQuery dans l'aide en ligne
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  12. #32
    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
    Bon, j'ai déposé un TQuery sur ma Form1 et j'ai mis le côde

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE table1
    SET nom= CONCAT('da', SUBSTRING(nom, 3)) 
    WHERE nom LIKE 'DA%'
    dans la propriété SQL de Query1.
    Ensuite, j'ai mis un bouton1 et dedans le côde:
    Et ça ne marche toujours pas...

  13. #33
    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
    Ca te fait une erreur ?

    As tu fait un rafraichissement de ta table après l'envoi de la requete ?
    Modérateur Delphi

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

  14. #34
    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
    Erreur: "Utilisation incorrecte du mot clé"

  15. #35
    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 kikica
    Erreur: "Utilisation incorrecte du mot clé"
    Il précise pas le "mot clé" qui bug ?
    Modérateur Delphi

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

  16. #36
    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
    J'ai résolu le problème: j'ai simplément mis tout le côde dans une nouvelle boucle for i=1 to 100 do, et je n'ai plus besoin de clicquer 100 fois!

    C'est pas la solution d'école, mais important c'est que ça marche!
    Merci @ vous tous pour votre aide!

  17. #37
    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 kikica
    J'ai résolu le problème: j'ai simplément mis tout le côde dans une nouvelle boucle for i=1 to 100 do, et je n'ai plus besoin de clicquer 100 fois!

    C'est pas la solution d'école, mais important c'est que ça marche!
    Merci @ vous tous pour votre aide!
    Et tu fais comment si tu as plus de 200 valeurs à modifier ? Tu vas changer ton code ?
    Modérateur Delphi

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

  18. #38
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut


    Tu aurais mieux fais de cliquer 100 fois alors si c'était pour arriver à ca !

    à raison de 2 clic par seconde, ca n'aurait pas pris plus d'une minute

    Rentrer 100 fois dans une boucle 'while not eof' en sachant que des la 1ere modif, tu te retrouves en fin de table à cause (probablement) des index...


    J'espère que ce n'est pas un projet professionel, et qu'il n'y a pas quelqu'un qui doit repasser ton code
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  19. #39
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE table1
    SET nom= CONCAT('da', SUBSTRING(nom, 3))
    WHERE nom LIKE 'DA%'
    je ne crois pas que CONCAT ou SUBSTRING sois reconnu par le moteur paradox
    D'abord ils vous ignorent, ensuite ils se moquent de vous, puis ils vous combattent, enfin vous gagnez (Gandhi)

  20. #40
    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
    Citation Envoyé par HumanTool
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE table1
    SET nom= CONCAT('da', SUBSTRING(nom, 3))
    WHERE nom LIKE 'DA%'
    je ne crois pas que CONCAT ou SUBSTRING sois reconnu par le moteur paradox
    Euh... Je sais pas, j'ai pêché ça dans l'aide de MySQL... Je n'ai jamais utilisé d'autre BD. Je pensais que c'était une sorte de standart
    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.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 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