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 :

Locate pour éviter doublon


Sujet :

Bases de données Delphi

  1. #1
    Nouveau Candidat au Club
    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 : 0
    Points
    0
    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 éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    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 606
    Points : 1 113
    Points
    1 113
    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
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    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 784
    Points : 5 915
    Points
    5 915
    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 retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 935
    Points
    40 935
    Billets dans le blog
    62
    Par défaut
    déjà , il faudrait que la table1 soit active Avant de faire le Locate
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    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 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

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

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, 17h04
  2. [MySQL] in_array pour éviter les cas de doublons
    Par Pampa92 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 11/07/2008, 16h08
  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, 05h35
  4. [MySQL] Condition pour éviter les doublons
    Par guismoman33 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/01/2008, 22h23
  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, 21h31

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