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

Ali_usto 135 Messages postés lundi 20 novembre 2006Date d'inscription 11 octobre 2010 Dernière intervention - 24 mai 2007 à 16:37 - Dernière réponse : cs_cantador 4989 Messages postés dimanche 26 février 2006Date d'inscription 3 août 2017 Dernière intervention
- 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 
135Messages postés lundi 20 novembre 2006Date d'inscription 11 octobre 2010 Dernière intervention

8 réponses

Répondre au sujet
Utilisateur anonyme - 24 mai 2007 à 20:12
+3
Utile
Salut

Pour réaliser une recherche dans une table paradox il existe la fonction locate
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Utilisateur anonyme
cs_cantador 4989 Messages postés dimanche 26 février 2006Date d'inscription 3 août 2017 Dernière intervention - 24 mai 2007 à 23:07
+3
Utile
personne.locate('Nom;Prenom',VarArrayOf([RechNom,RechPrenom)],[]);

cantador
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_cantador
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 25 mai 2007 à 14:44
+3
Utile
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/
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Delphiprog
cs_guirat 11 Messages postés dimanche 26 mars 2006Date d'inscription 15 juin 2007 Dernière intervention - 25 mai 2007 à 15:17
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_guirat
dominique.stock 446 Messages postés vendredi 7 novembre 2003Date d'inscription 8 octobre 2008 Dernière intervention - 24 mai 2007 à 17:15
+1
Utile
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
Ali_usto 135 Messages postés lundi 20 novembre 2006Date d'inscription 11 octobre 2010 Dernière intervention - 25 mai 2007 à 11:08
0
Utile
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
cs_cantador 4989 Messages postés dimanche 26 février 2006Date d'inscription 3 août 2017 Dernière intervention - 26 mai 2007 à 18:42
0
Utile
la solution que je propose comporte une seule ligne..
Commenter la réponse de cs_cantador
Utilisateur anonyme - 25 mai 2007 à 11:19
-1
Utile
Hummm tu as cherché sous google ?
Commenter la réponse de Utilisateur anonyme

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.