Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1

    Homme Profil pro leopold akakpo
    Technicien réseaux et télécoms
    Inscrit en
    décembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Nom : Homme leopold akakpo
    Localisation : Togo

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : décembre 2012
    Messages : 1
    Points : -1
    Points
    -1

    Par défaut Locate pour éviter doublon

    J'utilise delphi.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TForm1.EnregistrerClick(Sender: TObject);
    begin
        table1.Locate('Nom','valeur',[locaseinsensitive]);
        if messageDlg('Souhaitez-vous ajouter cet enregistrement?', mtconfirmation,[mbYes,mbNo],0)= mrYes then table1.Active :=true;
        table1.Post;
        DBedit1.ReadOnly :=true;
        DBedit2.ReadOnly :=true;
        DBedit3.ReadOnly :=true;
        DBgrid1.ReadOnly :=true;
    end;
    il s'agit d'un morceau de code. la fonction que j'ai souligné en rouge "LOCATE" me cause un peu de problème.
    elle devrai me permettre d'interdire l'enregistrement d'un même nom dans un tableau mais je n'arrive pas à dégoter la bonne syntaxe.
    QUI PEUT M'AIDER?

  2. #2
    Membre Expert Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    août 2008
    Messages
    1 527
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : août 2008
    Messages : 1 527
    Points : 1 024
    Points
    1 024

    Par défaut

    Citation Envoyé par leopold-lebel Voir le message
    ........ la fonction que j'ai souligné en rouge "LOCATE" ..... elle devrai me permettre d'interdire l'enregistrement d'un même nom dans un tableau .......
    Ah bon ? c'est tout récent alors....

    La fonction Locate n'interdit rien du tout, elle retourne VRAI si elle trouve au moins une correspondance et se positionner sur l'enregistrement trouvé, retourne FALSE dans le cas contraire.

    Imaginons une table avec 2 champs Code et libelle
    0 - coucou <= (gros méchant piège)
    1 - ici
    2 - Buzz
    3 - L'éclaire
    4 - Coucou <= (gros méchant piège)
    5 - ici
    6 - oxo la terre

    xtable.Locate('libelle','Coucou',[]) => return Vrai et se positionne sur l'enregistrement code 0
    xtable.Locate('libelle','Coucou',[locaseinsensitive]) => return Vrai et se positionne sur l'enregistrement code 4
    xtable.Locate('libelle','Buzz',[]) => return Vrai et se positionne sur l'enregistrement code 2
    xtable.Locate('libelle','Maman aaaaaaaaaah',[]) => return False et reste où il est...


  3. #3
    Expert Confirmé
    Avatar de Ph. B.
    Homme Profil pro Philippe
    Freelance
    Inscrit en
    avril 2002
    Messages
    1 328
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2002
    Messages : 1 328
    Points : 3 993
    Points
    3 993

    Par défaut

    Bonjour,
    Citation Envoyé par leopold-lebel Voir le message
    J'utilise delphi.
    Mais apparemment pas l'aide qui est fournie avec, sinon vous auriez trouvé !

    Une fois le curseur du source placé sur locate, appuyez sur
    Syntaxe Delphi :

    function Locate(const KeyFields: String; const KeyValues: Variant; Options: TLocateOptions): Boolean;
    Donc
    Code :
    1
    2
    3
      if table1.Locate('Nom', 'valeur', [locaseinsensitive]) then
      begin
        //...
    Mais vu le reste du code, il y aura d'autres corrections à faire...
    Philippe.

  4. #4
    Rédacteur/Modérateur
    Avatar de SergioMaster
    Homme Profil pro Serge Girard
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    5 393
    Détails du profil
    Informations personnelles :
    Nom : Homme Serge Girard
    Âge : 58
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : janvier 2007
    Messages : 5 393
    Points : 10 562
    Points
    10 562

    Par défaut

    déjà , il faudrait que la table1 soit active Avant de faire le Locate
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
    J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
    Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous

  5. #5
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2005
    Messages
    5 195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    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 195
    Points : 8 202
    Points
    8 202

    Par défaut

    Citation Envoyé par BuzzLeclaire Voir le message
    Imaginons une table avec 2 champs Code et libelle
    0 - coucou <= (gros méchant piège)
    1 - ici
    2 - Buzz
    3 - L'éclaire
    4 - Coucou <= (gros méchant piège)
    5 - ici
    6 - oxo la terre

    xtable.Locate('libelle','Coucou',[]) => return Vrai et se positionne sur l'enregistrement code 0
    xtable.Locate('libelle','Coucou',[locaseinsensitive]) => return Vrai et se positionne sur l'enregistrement code 4
    xtable.Locate('libelle','Buzz',[]) => return Vrai et se positionne sur l'enregistrement code 2
    xtable.Locate('libelle','Maman aaaaaaaaaah',[]) => return False et reste où il est...

    Je pense qu'il y a une petite erreur avec les deux première solution que tu donnes

    xtable.Locate('libelle','Coucou',[]) => return Vrai et se positionne sur l'enregistrement code 0 4
    xtable.Locate('libelle','Coucou',[locaseinsensitive]) => return Vrai et se positionne sur l'enregistrement code 4 0
    Modérateur Delphi Combattez la brute
    Aucune réponse aux sollicitations techniques par MP

    Le guide du bon forumeur :
    __________
    [Projet en cours] Des unités pour faciliter l'utilisation d'indy : EasyIndy 1.3

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •