Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > Delphi > Bases de données
Bases de données Vos questions concernant les bases de données (BDE, Access, SqlServer...)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 12/12/2012, 20h29   #1
leopold-lebel
 
Homme leopold akakpo
Technicien réseaux et télécoms
Inscription : 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?
leopold-lebel est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 12/12/2012, 22h24   #2
BuzzLeclaire
Membre Expert
 
Avatar de BuzzLeclaire
 
Homme
Dev/For/Vte/Ass
Inscription : août 2008
Messages : 1 499
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 499
Points : 1 059
Points : 1 059
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...

BuzzLeclaire est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2012, 22h29   #3
Ph. B.
Expert Confirmé
 
Avatar de Ph. B.
 
Homme Philippe
Inscription : avril 2002
Messages : 1 032
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Âge : 46
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2002
Messages : 1 032
Points : 2 665
Points : 2 665
Envoyer un message via ICQ à Ph. B. Envoyer un message via Skype™ à Ph. B.
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
Citation:
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.
Ph. B. est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/12/2012, 08h58   #4
SergioMaster
Modérateur
 
Avatar de SergioMaster
 
Homme Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 4 217
Détails du profil
Informations personnelles :
Nom : Homme Serge Girard
Âge : 56
Localisation : France

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

Informations forums :
Inscription : janvier 2007
Messages : 4 217
Points : 7 284
Points : 7 284
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
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 09h43   #5
Rayek
Modérateur
 
Avatar de Rayek
 
Homme
Développeur informatique
Inscription : mars 2005
Messages : 4 998
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39
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 : 4 998
Points : 7 742
Points : 7 742
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
Rayek est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 11h29.


 
 
 
 
Partenaires

Hébergement Web