|
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
|
|
|
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
|
|
|
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
|
|
|
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
|
|
|
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
|
|
|
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
|
|
|
Re: Help:Recherche Avancee dans une table |
|
Inscrit: 18/12/2003 13:14
Post(s): 212
|
bonjourCitation : 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
|
|
|
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
|
|
|
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
|
|
|
Re: Help:Recherche Avancee dans une table |
|
Anonyme
|
Oui et ca ne causera aucun probleme Merci Bassy
Contribution le : 09/05/2004 19:24
|
|
|
Re: Help:Recherche Avancee dans une table |
|
Anonyme
|
Ce n'est pas encore resolu
Merci
Contribution le : 11/05/2004 19:20
|
|
|
Re: Help:Recherche Avancee dans une table |
|
Inscrit: 18/12/2003 13:14
Post(s): 212
|
bonjourLe 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
|
|
|
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
|
|
|
Re: Help:Recherche Avancee dans une table |
|
Inscrit: 18/12/2003 13:14
Post(s): 212
|
bonjourUne 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' erreurSur 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
|
|
|
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
|
|
|
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
|
|
|
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
|
|
|
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
|
|
|
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
|
|
|
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
|
|
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.
|
Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
|