IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windev Mobile Discussion :

Rechercher une information dans toute la base de données [WM19]


Sujet :

Windev Mobile

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 16
    Points : 11
    Points
    11
    Par défaut Rechercher une information dans toute la base de données
    Bonjour à tous,

    J'aimerais pouvoir programmer une sorte de recherche par mot clés pour mon application android et j'aimerais savoir par quel côté je devais prendre le problème. J'ai vu qu'il y avait un truc qu'on appelé index full-text qu'on peut utiliser mais c'est que pour les chaines de caractères je crois. J'aurais donc besoin de vos lumières pour m'éclairer.

    Je travail avec windev mobile 19 sous windows 7 et mon application doit être programmer sous android.

    Merci d'avance pour vos réponses.

  2. #2
    Membre habitué
    Avatar de jdsetls
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Décembre 2012
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2012
    Messages : 209
    Points : 164
    Points
    164
    Billets dans le blog
    1
    Par défaut Recherche complète
    Bonjour,

    L'exemple ci-dessous fonctionne en Windev mais les principes sont les mêmes.

    Je dispose de fiches de type dictionnaire, où je range mes collections de dictionnaires personnels (langues, culture g, répertoire).

    Lorsque je cherche quelqu'un dans le répertoire carnet d'adresses, souvent je dispose de faibles données, par exemple je me souviens que la personne que je cherche possède un téléphone contenant '99'. Ou encore qu'elle est dans le département 31.

    J'ai écrit une fonction de recherche qui s'efforce de trouver dans toutes les rubriques présentes (ici seulement 2), la présence de la chaine recherchée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    SI Ma_Recherche <> "" ALORS
    babouin2 = SAI_Mot 
    HLitPremier()
     
    	TANTQUE PAS HEnDehors()
    			SI Contient(Fichier_Latin.Définition, Ma_Recherche, SansCasse) OU ...
    			Contient(Fichier_Latin.Mot, Ma_Recherche, SansCasse) ALORS
    			FichierVersEcran()
    			Ma_Recherche = babouin3
    			RETOUR	
    			FIN
    	HLitSuivant()
    	FIN
    FIN
    //Retour à la fiche en cours à l'origine si recherche infructueuse
    HLitRecherchePremier(Mon_fichier, Ma_clé, babouin2)
    FichierVersEcran()
    Ma_Recherche = babouin3
    J'ai également un bouton Suivant et Précédent

    Le terme Fichier_latin est générique et correspond à une sorte d'alias (astuce de simplification) valable pour n'importe quel dictionnaire, puisqu'à l'origine j'ai écrit ce pgm pour m'aider dans mes traductions de latin moyen-âgeux. Il a ensuite été généralisé pour les cours de ma fille qui, bien sûr, ne s'en sert pas...

    Plus sur demande,

    Bien cordialement,

    Jacques De Schryver
    Mon dernier livre Si c'est simple, c'est du Windev, version 2014, disponible sur Lulu.com, mot-clé Windev.
    http://www.lulu.com/shop/search.ep?t...ch=lulu.com&q=

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    D'accord je vois mieux comment je dois procéder merci grandement en tout cas parce que ca va bcp m'aider.

    Juste une question dans ton code Ma_Recherche c'est un alias aussi comme fichier_Latin ?

    Cordialement et à nouveau merci.

  4. #4
    Membre habitué
    Avatar de jdsetls
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Décembre 2012
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2012
    Messages : 209
    Points : 164
    Points
    164
    Billets dans le blog
    1
    Par défaut Ma_recherche
    Bonjour,

    Ma_recherche est une zone de saisie, remise à zéro après la recherche effective.
    Je dois gérer trois cas :
    la recherche est trouvée et je veux lire la fiche suivante correspondant à la recherche
    la recherche est trouvée et je veux la précédente
    la recherche est vide et je dois l'effacer tout en rétablissant correctement le lien Ecran/Fichier

    En effet le fichier a été balayé en totalité et une simple modification de l'affichage en cours modifierait la dernière fiche lue et non pas la fiche à l'écran, désynchronisée par le parcours fichier.
    Donc je mémorise la fiche en cours avant de lancer la recherche.
    Si recherche infructueuse, je la relis et la réaffiche.
    Ceci est transparent pour l'utilisateur mais évite les incohérences.
    Attention également au 'contexte hyperfile indépendant' qui peut provoquer les mêmes drames, en pire.
    Toujours le cocher à Vrai dans les paramètres du programme. Sinon le moindre accès d'un programme B à une fiche utilisée par le pgm A provoque la désynchronisation. Des dizaines d'utilisateurs ont ainsi abandonné Windev sans jamais comprendre d'où venait l'incohérence.

    Bien cordialement
    nb : J'ajoute que le contexte hyperfile indépendant mériterait à lui seul un article, tout comme le fait de créer plusieurs fichiers identiques de structure, à utiliser depuis un même programme, dans mon cas une collection de dictionnaires thématiques (latin, anglais, culture G, répertoire) utilisables par simple swap ou encore en même temps, en instanciant plusieurs fenêtres du même nom, comme quelqu'un qui aurait plusieurs fichiers Word en cours en même temps.
    Mon dernier livre Si c'est simple, c'est du Windev, version 2014, disponible sur Lulu.com, mot-clé Windev.
    http://www.lulu.com/shop/search.ep?t...ch=lulu.com&q=

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    D'accord je vois un peu mieux comment cela fonctionne merci beaucoup. Dernières questions je voulais savoir si babouin2, babouin3 étaient bien des variables de type chaine ? à quoi te sert le sai_mot ?

    Je comprend pas bien la ligne pour retourner à la fiche en cours notamment avec les paramètres dans le HLitRecherchePremier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HLitRecherchePremier(Mon_fichier, Ma_clé, babouin2)
    Cordialement.

  6. #6
    Membre habitué
    Avatar de jdsetls
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Décembre 2012
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2012
    Messages : 209
    Points : 164
    Points
    164
    Billets dans le blog
    1
    Par défaut Mot et définition
    Bonjour,
    Sai_mot est la zone de saisie correspondant à la rubrique d'index principal d'un tri sur le mot (il s'agit d'une collection de dictionnaires personnels).
    La collection babouin 1 à 3 est, en raison de leurs quatre mains, représente un groupe de variables factotum, définies comme variants et présents dans tous mes programmes.
    Enfin avant d'entamer la recherche, la fiche en cours est mémorisée sous le terme babouin2.
    En effet la rechercher parcourt tout le fichier.
    Il convient, en cas d'échec de la recherche, de retourner à l'original car la fenêtre doit rester synchronisée avec le fichier.
    Et ma_clé est une variable générique qui fonctionne dans tous mes programmes, quels qu'ils soient.
    Je l'initialise dans les variables de début de programme, lors de la déclaration des variables globales.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Mon_fichier est une chaîne = "Fichier_Latin"//
    Ma_clé est une chaîne = "Mot"
    De cette façon ma gestion de fichier devient facile et identique pour tout programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    HLitPremier(Mon_fichier, Ma_clé) 
    // pas d'enregistrement
    SI HEnDehors() ALORS
    	Info("Fichier vide")
    	// sinon transfert du buffer du fichier dans les champs
    SINON
    	FichierVersEcran()
    FIN
    Action_en_cours = "Parcours"
    Quoi()
    Le Quoi affiche le nombre de fiches, le dictionnaire en cours, le mode (Parcours, création)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    HLitSuivant(Mon_fichier, Ma_clé)
    // pas d'enregistrement
    SI HEnDehors() ALORS
    	Info("Fin du fichier atteinte")
    SINON
    	// Sinon transfert du buffer du fichier dans les champs
    	FichierVersEcran()
    FIN
    Action_en_cours = "Parcours"
    Quoi()
    ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    SI SAI_Mot = "" ALORS 
    	Info("On ne peut pas enregistrer une fiche vierge")
    	RepriseSaisie(SAI_Mot)
    FIN
    babouin = SAI_catégorie
     
    SI Action_en_cours = "Création" ALORS
    EcranVersFichier()
    HAjoute(Mon_fichier)
    	SI ErreurDétectée ALORS	
    	Erreur("Impossible d'ajouter l'enregistrement."+RC+HErreurInfo())
    	RETOUR
    	FIN
    SINON
    	Info("Pour ajouter, vous devez être en mode Création."  + CR + ...
    	"Pour cela cliquez sur le bouton Nouveau" + CR + "Le bouton Modifier est également disponible.")
    	RETOUR
    FIN
    Action_en_cours = "Création"
    RAZ
    Quoi()
    SAI_catégorie = babouin
    RepriseSaisie(SAI_Mot)
    Plus sur demande,
    Cordialement.
    Mon dernier livre Si c'est simple, c'est du Windev, version 2014, disponible sur Lulu.com, mot-clé Windev.
    http://www.lulu.com/shop/search.ep?t...ch=lulu.com&q=

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Merci bcp pour toutes ces précisions mais j'en demandais pas tant ^^' mais au moins comme ca je vois le cheminement que je dois effectuer mnt.

    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 22/02/2013, 16h46
  2. [MySQL] Moteur de recherche qui recherche un champ dans toute ma base de données
    Par mademoizel dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 20/12/2010, 12h28
  3. Réponses: 3
    Dernier message: 21/01/2008, 11h55
  4. Réponses: 6
    Dernier message: 01/05/2007, 22h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo