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

Messages postés
135
Date d'inscription
lundi 20 novembre 2006
Dernière intervention
11 octobre 2010
- - Dernière réponse : cs_cantador
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
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 

Votre réponse

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 118 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Utilisateur anonyme
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
15
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 118 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
Dernière intervention
9 janvier 2013
25
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 118 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
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 118 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
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
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
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
15
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

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.