Recherche dans une base de donnée [Résolu]

Messages postés
135
Date d'inscription
lundi 20 novembre 2006
Statut
Membre
Dernière intervention
11 octobre 2010
- - Dernière réponse : cs_cantador
Messages postés
4992
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
- 26 mai 2007 à 18:42
Salut ,  je voudrais faire une recherche dans une table personne.db cette recherche se fait par les champs nom et prenom je suis arrivé a faire la recherche a partir d'un seul champ qui est 'nom'  par la methode suivante  :
procedure TForm1.RechercheClick(Sender: TObject);
var
rech : string;
reslt: boolean ;
begin
rech:= InputBox('Recherche', 'entrer le nom de la personne :', '');   
table1.first;   
reslt:=false;
while(not table1.eof)do   
  if table1.FieldValues['NOM']= rech  then   
     begin
       reslt:=true;
       break;
     end
  else
      table1.next;
if not reslt then   
  MessageDlg('Enregistrement introuvable dans la table',mtInformation,[mbOk], 0)
end;

je n'ai pas su comment faire la recherche a partir des deux champs nom et prenom , j'ai essayé plusieurs combines mais a chaque fois sa ne marchait pas ,  pouvez vous m'aider
  merci d'avance                         Ali
Afficher la suite 

8 réponses

Meilleure réponse
3
Merci
Salut

Pour réaliser une recherche dans une table paradox il existe la fonction locate

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 196 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Utilisateur anonyme
Messages postés
4992
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
9
3
Merci
personne.locate('Nom;Prenom',VarArrayOf([RechNom,RechPrenom)],[]);

cantador

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 196 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_cantador
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
24
3
Merci
Hello,

Pourquoi ne pas, tout simplement, utiliser une requête ?

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Db, DbTables;

type
  
  TRecSearchResult =  (srCanceled, srNotFound, srFound);

  TForm1 =  class (TForm)
    Button1: TButton;
    Table1: TTable;
    procedure Button1Click(Sender: TObject);
  private
    function Recherche: TRecSearchResult;
  end;

var
  Form1: TForm1;

implementation

resourcestring
  sEnregistrementIntrouvableDansLaT  = 'Enregistrement introuvable dans la table';
  sEntrerLeNomDeLaPersonne =  'entrer le nom de la personne :';
  sEntrerLePrenomDeLaPersonne = 'entrer le prénom de la personne :';
  sRecherche = 'Recherche';

{$R *.dfm}

 function  TForm1.Recherche(): TRecSearchResult;
var
  nom, prenom: string;
  Q: TQuery;
begin
  Result : = srNotFound;
  nom :=  InputBox(sRecherche, sEntrerLeNomDeLaPersonne, '');
  prenom := InputBox(sRecherche, sEntrerLePrenomDeLaPersonne, '');
   if  (nom  EmptyStr) <gras>and (prenom</gras>  EmptyStr) then
  begin
    Result := srCanceled;
    Exit;
   end ;

  nom : = QuotedStr(nom);
  prenom :=  QuotedStr(prenom);

  Q := TQuery.Create(self);
  try
    Q.DataBaseName := Table1.DataBaseName;    Q.SQL.Text :'SELECT * FROM maTable WHERE nom :nom';
    Q.ParamByName('nom').AsString := nom;

     if  prenom <> EmptyStr then
    begin
      Q.Sql.Add('AND prenom  = :prenom');
      Q.ParamByName('prenom').AsString :=  prenom;
     end ;

    Q.Open;
    if Q.RecordCount > 0then
      Result : = srFound;
  finally
    FreeAndNil(Q);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if Recherche  =  srNotFound then
    MessageDlg(sEnregistrementIntrouvableDansLaT,mtInformation,[mbOk], 0);
 end ;

end.

Ce code n'est qu'un exemple simple pour illustrer la méthode préconisée.

May Delphi be with you !


<hr color ="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.afipa.net/

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 196 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Delphiprog
Messages postés
11
Date d'inscription
dimanche 26 mars 2006
Statut
Membre
Dernière intervention
15 juin 2007
3
Merci
Bonjour
Utilise une requête
Var ADO:Tadoquery;
ADO:=Tadoquery.creat(Nil);
ADO.ConnectionString:='Nom de la Connexion';
with ADO Do
 Begin
 Sql.clear;Sql.add('select Nom,Prenom ');
 Sql.add('From table1where Nom='+Quotedstr(Nom));
Sql.add('and prenom='+Quotedstr(prenom));
  open  
 End;
If  ADO.isempty then
Showmessage('Client N''existe Pas');
Une Aute :
with ADO Do
 Begin
 Sql.clear;Sql.add('select Nom+''+Prenom as Client ');
 Sql.add('From table1where Nom+''+Prenom=');
Sql.add('+Quotedstr(Nom+prenom));
open    
 End;
If  ADO.isempty then
Showmessage('Client N''existe Pas');
Bon Contuniation

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 196 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_guirat
Messages postés
446
Date d'inscription
vendredi 7 novembre 2003
Statut
Membre
Dernière intervention
8 octobre 2008
2
1
Merci
Bonjour,
S'il n'y a pas d'ndex, effectivement, c'est une façon de procéder.
peut être pas la plus rapide mais si ça marche.
Pour ajouter le prénom dans ta recherche, 
   if (table1.FieldValues['NOM']= rech) and (table1.FieldValues['PRENOM']=rech2) then    ....

Dom
Commenter la réponse de dominique.stock
Messages postés
135
Date d'inscription
lundi 20 novembre 2006
Statut
Membre
Dernière intervention
11 octobre 2010
0
Merci
Salut tout le monde j'ai essayé la fonction locate mais ça n'a pas voulu marcher  , est ce ke kelkun peut me montrer un ptit exemple   merci.
Commenter la réponse de Ali_usto
Messages postés
4992
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
9
0
Merci
la solution que je propose comporte une seule ligne..
Commenter la réponse de cs_cantador
-1
Merci
Hummm tu as cherché sous google ?
Commenter la réponse de Utilisateur anonyme