1. #1

    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    décembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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é Sénior
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    avril 2002
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    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 562
    Points : 4 686
    Points
    4 686

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    6 250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : janvier 2007
    Messages : 6 250
    Points : 12 616
    Points
    12 616
    Billets dans le blog
    3

    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 : 41
    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 208
    Points
    8 208

    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

Discussions similaires

  1. [AC-2007] Indéxer 2 champs pour éviter doublon
    Par MaryR dans le forum Modélisation
    Réponses: 2
    Dernier message: 10/02/2010, 16h04
  2. in_array pour éviter les cas de doublons
    Par Pampa92 dans le forum PHP & MySQL
    Réponses: 3
    Dernier message: 11/07/2008, 15h08
  3. problème pour éviter les doublons dans une table
    Par bonnet85 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 19/02/2008, 04h35
  4. Condition pour éviter les doublons
    Par guismoman33 dans le forum PHP & MySQL
    Réponses: 2
    Dernier message: 28/01/2008, 21h23
  5. [XsL/xpath]Comment faire pour éviter les doublons?
    Par BigBarbare dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 22/05/2007, 20h31

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