(1) 2 »


Help:Recherche Avancee dans une table
Anonyme
Salut
J'aimerais savoir comment faire une Recherche multicritere dans une table et selectionner l'enregistrement trouve.
J'ai une table Etudiant et je veux faire une recherche a partir de 2 ou trois de ces criteres suivants: codeEtudiant, AnneeInscription et Departement
Une fois la recherche lancee, comment selectionner cet enregistrement.
Merci

Contribution le : 04/05/2004 03:41
Créer un fichier PDF de la contribution Imprimer


Re: Help:Recherche Avancee dans une table
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour,

Une méthode consiste à créer une requête SQL.
Faire une recherche via cette requete permet de trouver l'identifiant unique de l'enregistrement recherché ou bien le premier selon le nombre de réponses existantes dans la requête.
Il faut donc qu'il y ait dans la table une colonne qui peut être non visible et qui contienne l'identifiant unique de chacun des enregistrements.

On recherchera cette identiant via la requette SQL, puis on se positionnera dans la table en fonction du premier identifiant trouvé

A noter que l'on peut rajouter un tri dans la requete SQL si nécessaire.

Création de la requête qui retrouver les enregistrements correspondant aux critères
Exemple:
nIndice est un entier
Sql est une Chaine
Rs est une source de données
sIdentifiantUniqueEtudiant est une chaine = "<Nom de la Rubrique>"
sCondition est une chaine


Sql = " SELECT "+sIdentifiantUniqueEtudiant+" AS Id FROM Etudiant "

SI CodeEtudiant <> "" alors
 sCondition = "CodeEtudiant='"+CodeEtudiant+"' "
FIN
SI AnneeInscription <> "" alors
 SI Scondition <> "" Alors sCondition += "AND "
 sCondition += "AnneeInscription='"+AnneeInsription+"' "
FIN
SI Departement <> "" Alors
 Si sCondition <> "" Alors sCondition += "AND "
 sCondition += "Departement='"+Departement+"' "
FIN

Si sCondition <> "" Alors 
 Sql += "WHERE "+scondition
FIN

SI PAS HExecuteRequeteSql(Rs,HRequeteDefaut,Sql) Alors
 Erreur(HErreurInfo)
 Retour
FIN


On va rechercher dans la table en fonction de l'identifiant du premier enregistrement correspondant aux critères de recherche
HLitPremier(Rs)
SI Pas HEndehors(Rs) Alors
 nIndice = TableCherche(<Nom de la colonne Identifiant>,Rs.Id,Faux,1)
 SI nIndice <> -1 Alors TableSelectPlus(<Nom de la table>,nIndice)
FIN


Code saisi à la volé et non testé.

On peut pousser la recherche en modifiant par exemple le signe = dans la requete SQL par d'autre signe comme >, >= ou bien LIKE
exemple de Syntaxe du LIKE
ClientNom LIKE 'DUP*'
Pour rechercher les client dont le nom commence par DUP

Contribution le : 04/05/2004 10:46
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Help:Recherche Avancee dans une table
Animateur WDF
Inscrit:
26/06/2002 16:24
De wdforge.org
Post(s): 2822
Bonjour,
S'il s'agit de table fichier, je renvois à la recherche sur les clés... et précise que la sélection multiple n'y est permise (en tout cas j'ai pas trouvé).

S'il s'agit d'une table mémoire, la meilleure solution est de boucler des TableCherche sur les colonnes respectives en faisant varier la position de départ (à partir de la position trouvée + 1). Prévoir de flagguer respectivement chaque ligne correspondant au critère. Sélectionner l'ensemble des lignes flaguées... via TableSelectPlus.

ps : prévoir des champs de saisie pour la saisie des critères de sélection.

Je vous laisse lire en détail l'aide en lgne de ces fonctions très utiles.

Contribution le : 04/05/2004 10:48
_________________
R&B
Contact, CV.
Créer un fichier PDF de la contribution Imprimer


Re: Help:Recherche Avancee dans une table
Anonyme
C'est une table fichier deja generee par le RAD et qui dispose comme cle primaire StudentID(ID auto) qui est different de CodeEtudiant.Comme ce StudentID n'apparait sur les cartes, il me semblerait plus logique de proposer aux agents de l'universite d'effectuer la recherche a partir de ces trois criteres enonces ci-dessus(soit en utilisant au minimun deux des criteres ou au plus les trois criteres.
Merci

Contribution le : 04/05/2004 11:48
Créer un fichier PDF de la contribution Imprimer


Re: Help:Recherche Avancee dans une table
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Avec la méthode que je propose il n'est pas demandé de saisir le StudentID.

La requête extrait les StudentsID des étudiants correspondants aux critères de recherche avec 1, 2 ou trois critères de recherche selon les besoins.

en récupérant le premier StudiantID existant dans le résultat de la requete, on effectue ensuite, une recherche dans la table sur cette valeur (Cette valeur n'est à aucun moment demandée au niveau des critères critère).


Contribution le : 04/05/2004 12:05
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Help:Recherche Avancee dans une table
Anonyme
Salut drcharly93
J'ai suivi les instructions mais ca ne marche pas.Ma table est generee par le RAD et je voulais ajouter ces champs de saisie et lancer la recherche...Mais ca ne marche pas
Ma table Etudiant renferme plus d'informations....
Merci de votre aide.

Contribution le : 09/05/2004 17:36
Créer un fichier PDF de la contribution Imprimer


Re: Help:Recherche Avancee dans une table

Inscrit:
18/12/2003 13:14
Post(s): 212
bonjour
Citation :

Comme ce StudentID n'apparait sur les cartes, il me semblerait plus logique de proposer aux agents de l'universite d'effectuer la recherche a partir de ces trois criteres enonces ci-dessus(soit en utilisant au minimun deux des criteres ou au plus les trois criteres.


Je pense que Utiliser CodeEtudiant comme critère de recherche c'est beaucoup mieux pour une recherche plus souple, tant que ce CodeEtudiant est Unique et il n'y aura pas des doublons possibles.
Qu'est ce que tu en dis ?

Contribution le : 09/05/2004 18:33
_________________
Bonne Chance.
M'envoyer un message......
Créer un fichier PDF de la contribution Imprimer


Re: Help:Recherche Avancee dans une table
Anonyme
C'est une bonne idee...mais le consensus qu'on avait definit c'est de pouvoir effectuer la rechercher sur 2 ou 3 criteres.
Si tu peux nous aider ce serait bien apprecier.

Contribution le : 09/05/2004 18:39
Créer un fichier PDF de la contribution Imprimer


Re: Help:Recherche Avancee dans une table

Inscrit:
18/12/2003 13:14
Post(s): 212
OK
Si tu peux me dire est ce que la recherche peut se faire comme ça :

Avant d'afficher le résultat final, on fait une recherche avant, je m'explique :
>Une ou deux requêtes pour chercher ce que tu veux
>Une fois la recherche aboutit, on affiche le résultat dans une table.

Est ce que ça ne cause pas de problème avec ton cahier de charge ou avec ton convention ?

Contribution le : 09/05/2004 19:08
_________________
Bonne Chance.
M'envoyer un message......
Créer un fichier PDF de la contribution Imprimer


Re: Help:Recherche Avancee dans une table
Anonyme
Oui et ca ne causera aucun probleme
Merci Bassy

Contribution le : 09/05/2004 19:24
Créer un fichier PDF de la contribution Imprimer


Re: Help:Recherche Avancee dans une table
Anonyme
Ce n'est pas encore resolu

Merci

Contribution le : 11/05/2004 19:20
Créer un fichier PDF de la contribution Imprimer


Re: Help:Recherche Avancee dans une table

Inscrit:
18/12/2003 13:14
Post(s): 212
bonjour
Le code de DrCharly est très correcte, ce code te parviendra parfaitement, si tu fait ce qui suit :
>Une table nommé ici TABLE1
>3 champs de saisie nommés respectivement ici : CODE, ANNEE, DEPARTEMENT
>Fichier ETUDIANT avec comme clé "IDEtudiant" .
>un BOUTON
> copier/coler le code de DrCharly dans le code du bouton :
nIndice est un entier
Sql est une chaîne
Rs est une Source de Données
sIdentifiantUniqueEtudiant est une chaîne = "IDEtudiant"
sCondition est une chaîne


Sql = " SELECT "+sIdentifiantUniqueEtudiant+" AS Id FROM Etudiant "

SI CODE <> "" ALORS
	sCondition = "CodeEtudiant='"+CODE+"' "
FIN
SI ANNEE <> "" ALORS
	SI sCondition <> "" ALORS sCondition += "AND "
	sCondition += "AnneeInscription='"+ANNEE+"' "
FIN

SI DEPARTEMENT <> "" ALORS
	SI sCondition <> "" ALORS sCondition += "AND "
	sCondition += "Departement='"+DEPARTEMENT+"' "
FIN

SI sCondition <> "" ALORS 
	Sql += "WHERE "+sCondition
FIN

SI PAS HExécuteRequêteSQL(Rs,hRequêteDéfaut,Sql) ALORS
	Erreur(HErreurInfo)
	RETOUR
FIN

HLitPremier(Rs)
SI PAS HEnDehors(Rs) ALORS 
	nIndice = TableCherche(Table1.id,Rs.Id,Faux,1) 
	SI nIndice <> -1 ALORS 
	TableSelectPlus(Table1,nIndice)
	
	FIN
	
FIN 


> Le code en rouge, lit la requete et TIRE le IDEtudiant de l'étudiant trouvé et sélectionne ce IDEtudiant dans la Table TABLE1, alors si tu n'as pas une colonne pour IDEtudiant, il faut l'ajouter et mets la invisible si tu veux.


Contribution le : 11/05/2004 22:09
_________________
Bonne Chance.
M'envoyer un message......
Créer un fichier PDF de la contribution Imprimer


Re: Help:Recherche Avancee dans une table
Anonyme
Je tiens a te remercier Bassy ca marche a 75%, seulement la recherche a partir de cette combinaison(CODE + DEPARTEMENT) ne marche pas
Existe-t-il un moyen d'afficher l'enregistrement trouve directement sur la fiche de selection , une fois que tu clique sur celui-ci...
Merci

Contribution le : 12/05/2004 01:55
Créer un fichier PDF de la contribution Imprimer


Re: Help:Recherche Avancee dans une table

Inscrit:
18/12/2003 13:14
Post(s): 212
bonjour
Une chose, j'ai testé le code est ça fonctionne très bien.
Je te conseille ce Code. A ta place je creuse pour trouver ou se situe l' erreur
Sur Ma Fenetre :
>3 champs de Saisie : CODE, ANNEE, DEPARTEMENT
>Une Table Mémoire TABLE1 rempli de tous les enregistrements du FICHIER ETUDIANT avec comme colonnes : IDEtudiant (clé unique de l'étudiant), + les autres colonnes liées aux autres rubriques du FICHIER ETUDIANT.

Alors, maintenant j'ai devant moi une fenêtre contenant Une 3 champs de saisie, TABLE1 Rempli et un bouton qui contient le code déja donné.
En essaye la recherche, ça marche dans tous les cas.
Citation :

Je tiens a te remercier Bassy ca marche a 75%, seulement la recherche a partir de cette combinaison(CODE + DEPARTEMENT) ne marche pas


Si tu m'as bien suivi en Haut, ce problème ne se posera pas, sauf que Vos noms de vos Champs Saisie, ou les RUBRIQUE du FICHIER ETUDIANT ne sont pas ceux qui sont dans le Code (VERIFIE BIEN).
Citation :

Existe-t-il un moyen d'afficher l'enregistrement trouve directement sur la fiche de selection , une fois que tu clique sur celui-ci


Toujours en a affaire à la requête précédente, le résultat que donne cette requête est l'iD Etudiant, c'est à dire IDEtudiant unique dans le fichier ETUDIANT.
De là, on peut dire que : IDEtudiant trouvé, on peut chercher à qui il appartient, on utilisant les fonctions usuelles de Windev comme :
HlitRecherchePremier(ETUDIANT,IDEtudiant,IDEtudiant(trouvé par la requête))
Et on affiche le résultat par :
SI Htrouve(ETUDIANT) ALORS TableAjouteLigne(NOMTable,.....)

Voila, Si tu trouve d'autres difficultés, Notre forum est toujours la et Nous sommes toujours là, ne t'inquiète pas, on bossera pour toi


Contribution le : 12/05/2004 13:04
_________________
Bonne Chance.
M'envoyer un message......
Créer un fichier PDF de la contribution Imprimer


Re: Help:Recherche Avancee dans une table
Animateur WDF
Inscrit:
26/06/2002 16:24
De wdforge.org
Post(s): 2822
Citation :
ne t'inquiète pas, on bossera pour toi


Bassy est en forme ! je te poste mes projets, prends quelques jours au soleil et m'attend à les récupérer finis au mail à mon retour ! le tout evidement sans frais

Contribution le : 12/05/2004 13:11
_________________
R&B
Contact, CV.
Créer un fichier PDF de la contribution Imprimer


Re: Help:Recherche Avancee dans une table

Inscrit:
18/12/2003 13:14
Post(s): 212
Bonjour ROMU
Oui, évidemment, être en forme est la moindre chose à dire (Modérateur OBLIGE).

J'en profite de te féliciter pour le WDForge, et crois moi c'est maintenant que j'ai compris qu'étaient tes préocupations .

Bon courage.

Contribution le : 12/05/2004 13:27
_________________
Bonne Chance.
M'envoyer un message......
Créer un fichier PDF de la contribution Imprimer


Re: Help:Recherche Avancee dans une table
Anonyme
Salut Bassy

L'enregistrement est deja trouve et je pensais que FichierVersEcran pourrait faire l'affaire mais pas certain..C'est pourquoi la question a ete posee
Merci

Contribution le : 12/05/2004 13:47
Créer un fichier PDF de la contribution Imprimer


Re: Help:Recherche Avancee dans une table

Inscrit:
18/12/2003 13:14
Post(s): 212
reBonjour
Ok, tu sais que l'enregistrement trouvé par la requête est un simple ID c'est à dire l'IDEtudiant recherché, donc FichierversEcran() ne satisfait pas notre objectif.
On fait plutôt une recherche à l'identique de Cet ID dans le fichier ETUDIANT, comme ça on obtient toutes les données des RUBRIQUE fichier ETUDIANT de l'IDEtudiant concerné.

Contribution le : 12/05/2004 14:05
_________________
Bonne Chance.
M'envoyer un message......
Créer un fichier PDF de la contribution Imprimer


Re: Help:Recherche Avancee dans une table
Anonyme
HLitPremier(Rs)SI PAS HEnDehors(Rs) ALORS
nIndice = TableCherche(Table1.id,Rs.Id,Faux,1)
SI nIndice <> -1 ALORS TableSelectPlus(Table1,nIndice)
FIN
FIN
La recherche s'est faite avec succes, et la prochaine etape en selectionnant l'enregistrement on aimerait afficher l'information sur une fiche et non une autre table

Merci

Contribution le : 12/05/2004 17:59
Créer un fichier PDF de la contribution Imprimer


Re: Help:Recherche Avancee dans une table

Inscrit:
18/12/2003 13:14
Post(s): 212
Salut

Alors, pour ça il te faut une fenêtre qui contient des champs liées aux rubrique de ton fichier ETUDIANT.

Tu fais le RAD sur Ton fichier ETUDIANT en choisissant une fenêtre avec parcours, que tu peux modifier ensuite et on lui donne le nom FICHE_ETUDIANT.

Dans le code de ta TABLE dans l'évenement par exemple DOUBLE CLIQUE de LA SOURIS on pourra mettre ce code :
HLitRecherchePremier(Etudiant,IDEtudiant,Table1.ID)// l'enregistrement déja sélectionnée sur la TABLE.
Ouvre(Fiche_Etudiant,"Parcour")


Voila.

Contribution le : 12/05/2004 18:49
_________________
Bonne Chance.
M'envoyer un message......
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant
(1) 2 »




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2