PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV Mobile 2024 → rechercher contact android
rechercher contact android
Started by alezan, Dec., 10 2018 4:44 PM - 33 replies
Registered member
47 messages
Posted on December, 10 2018 - 4:44 PM
bonjour, j'ai un soucis avec la fonction recherche.
il me revoit vrai avec le code si dessous alors que le numéro de téléphone qui est extrait de ma chaine n'existe pas dans le répertoire ? pouvez vous me dire ou je loupe ? est ce dans le type une numéro de telephonne n'est peut être pas une chaine ?

POUR TOUT CHAÎNE sLigne de sContenuFichier SEPAREE PAR CRLF
// Traitement de la ligne
snumero est une chaîne
snumero=ExtraitChaîne(sLigne,3,";")

SI ContactCherche(contactTéléphone,snumero,mContact.TéléphoneMobile)=Vrai ALORS
Info(ExtraitChaîne(sLigne,3,";"))
Posted on December, 10 2018 - 4:49 PM
Je ne connais pas la cause de votre problème mais la doc indique que la fonction ContactCherche ne doit plus être utilisée depuis la version 17 et qu'il faut utiliser ContactListe à la place.
Je vous conseille donc vivement de suivre cette recommandation.
Registered member
47 messages
Posted on December, 10 2018 - 5:29 PM
merci je vais regarder dans se sens :)
Registered member
47 messages
Posted on December, 10 2018 - 5:44 PM
je suis tomber sur cette page la ?
https://doc.pcsoft.fr/?1000020266&name=contactliste_fonction

mais je ne comprend pas comment faire ma recherche avec ce que je voulais faire ? *

mon besoin est celui ci

POUR TOUT CHAÎNE sLigne de sContenuFichier SEPAREE PAR CRLF
// Traitement de la ligne
snumero est une chaîne
snumero=ExtraitChaîne(sLigne,3,";")

SI ContactCherche(contactTéléphone,snumero,mContact.TéléphoneMobile)=Vrai ALORS
Info(ExtraitChaîne(sLigne,3,";"))
// on créer le contact
SINON
// Initialisation des variables de la structure Contact
mContact.Nom = ExtraitChaîne(sLigne,1,";")
mContact.Prénom = ExtraitChaîne(sLigne,2,";")
mContact.TéléphoneMobile = ExtraitChaîne(sLigne,3,";")
ContactAjoute(contactTéléphone)
Multitâche(-1)
FIN
FIN


est ce que tu pourrais m'aider a écrire la bonne syntaxe de recherche avec la fonction conactliste pour arriver a mon résultat ?

merci de ton aide
Registered member
352 messages
Popularité : +12 (18 votes)
Posted on December, 12 2018 - 9:54 AM
wddev a écrit :
> Je ne connais pas la cause de votre problème mais la doc indique que la fonction ContactCherche ne doit plus être utilisée depuis la version 17 et qu'il faut utiliser ContactListe à la place.

Pas tout à fait, il est marqué cela sur la documentation:
Cette fonction est déconseillée si vous utilisez des variables de type Contact


D'après la documentation en ligne, je ferais un code qui ressemblerait à cela :
gtabContacts = ContactListe(Null)
bTrouve est un booléen=Faux
POUR TOUT tContact de gtabContacts
//je compare entre tContact ..Téléphone et snumero, tout en considérant le format du numéro de téléphone (ex: 0601020304, 06.01.02.03.04, 06-01-02-03-04, 06 01 02 03 04, ... )
FIN
Registered member
47 messages
Posted on December, 12 2018 - 2:55 PM
@romulus001 merci de ton message.
je n'y suis pas arrivé avec contacliste pff quel galère pour un truc qui semblait simple :o

j'ai changer mon fusil d'épaule. je compte taguer tout mes contact par le nom de ma société, puis tous les supprimer et les recréer a chaque MAJ

mais le code si dessous ne fonctionne pas je susi incapable de faire fonctionner contactcherche ??

SI ContactCherche(contactTéléphone,"DUCOURNAU",mContact.Société)=Vrai ALORS
TANTQUE mContact.EnDehors = Faux
ContactSupprime(contactTéléphone)
ContactSuivant(contactTéléphone)
Multitâche(-1)
FIN
FIN


le code si dessus me supprime tout les contact , même ceux dont mContact.Société est null !!

je ne comprend pas ou je me loupe. je me base pourtant sur cette exemple https://doc.pcsoft.fr/?1000006102&name=contactcherche_fonction

si quelqu'un pouvez m'aider merci ?
Registered member
352 messages
Popularité : +12 (18 votes)
Posted on December, 12 2018 - 3:08 PM
je n'y suis pas arrivé avec contacliste

Que voulez vous dire?
Registered member
47 messages
Posted on December, 12 2018 - 4:37 PM
je n'ai pas trouver les bonnes syntaxes pour faire ma mise a jour du contact ou sa création du contact. en effet tout les exemple de windev de création et miise à jour se font avec mContact
https://doc.pcsoft.fr/?1000006104&name=contactmodifie_fonction
du coup je ne maitrise pas assez la mise à jour de contact android en passant par contacliste

après je débute en windev et je n'ai fait que des truc facile jusqu'a présent. même si j'ai déjà des notion de dev et algo sur d'autre langage.
ce je voudrais faire a partir du fichier csv que j'importe depuis mon ftp c'est créer les contact ou mettre à jour le nom et le prénom si le numéro de telephonne existe déja.
mon fichier csv se compose de 3 champs (nom, prénom, téléphone) séparer par des ;

si dessous tout mon code ou j'ai rajouter se que tu 'a conseillé et ou je n'ai pas trouvez quoi mettre après le
SI tContact..Téléphone=ExtraitChaîne(sLigne,3,";") ALORS

le code complet pour que tu comprenne mieux
tContact est un Contact
ResRepEnCours est une chaîne
ResRepEnCours = fRepEnCours()
sContenuFichier est une chaîne
sLigne est une chaîne
gtabContacts est un tableau de Contacts
nConnexion est un entier
nConnexion = FTPConnecte("137.74.171.22", "contact", "1234")
SI nConnexion = -1 ALORS
Erreur("La connexion au serveur n'a pas pu être établie")
SINON
SI FTPRécupère(nConnexion, "/export.csv", ResRepEnCours) = Vrai ALORS
Info("Transfert terminé")
SINON
Erreur("Echec du transfert")
FIN
FIN
// Chargement en mémoire du contenu du fichier
sContenuFichier = fChargeTexte("export.csv")
Sablier(Vrai)

POUR TOUT CHAÎNE sLigne de sContenuFichier SEPAREE PAR CRLF
gtabContacts = ContactListe(Null)
bTrouve est un booléen=Faux
POUR TOUT tContact de gtabContacts
SI tContact..Téléphone=ExtraitChaîne(sLigne,3,";") ALORS

FIN
FIN
// on créer le contact
mContact.Nom = ExtraitChaîne(sLigne,1,";")
mContact.Prénom = ExtraitChaîne(sLigne,2,";")
mContact.TéléphoneMobile = ExtraitChaîne(sLigne,3,";")
mContact.Société="DUCOURNAU"
ContactAjoute(contactTéléphone)
Multitâche(-1)
FIN

Sablier(Faux)
Info("Terminé")
Message modified, December, 12 2018 - 4:44 PM
Registered member
352 messages
Popularité : +12 (18 votes)
Posted on December, 12 2018 - 5:40 PM
Je pense qu'avant de faire une mise à jour ou une création, il faudrait faire le test suivant :
POUR TOUT tContact de gtabContacts
info("Comparaison entre "+tContact..Téléphone+" et "+ExtraitChaîne(sLigne,3,";"))
FIN


Car comme je disais plus haut, je ne sais pas comment sont formatés les numéros de téléphone, en faisant comme cela, on sait ce qui va être comparé.
Commentez ensuite la ligne suivante :
ContactAjoute(contactTéléphone)
Registered member
47 messages
Posted on December, 12 2018 - 5:55 PM
Quand je mets ton code j'ai un erreur de compilation dans windevmobile Type incompatible au niveau des phrase entre ""
du coup j'ai mis
POUR TOUT tContact de gtabContacts
info(tContact..Téléphone+ExtraitChaîne(sLigne,3,";"))
FIN

et j'ai une erreur dans l'appli opperation + interdite entre une valeur null et une chaine
Message modified, December, 12 2018 - 5:57 PM
Registered member
352 messages
Popularité : +12 (18 votes)
Posted on December, 12 2018 - 6:00 PM
je viens de le voir à l'instant, tContact..Téléphone est en fait un tableau de numéro de téléphones, du coup, mon code doit devenir ainsi :
POUR TOUT tContact de gtabContacts
POUR TOUT loop_numeroTelephone DE tContact..Téléphone
info("Comparaison entre "+loop_numeroTelephone +" du contact "+ tContact..NomAffiché+" et du numéro "+ExtraitChaîne(sLigne,3,";"))
FIN
FIN
Registered member
47 messages
Posted on December, 12 2018 - 6:04 PM
au top je teste !!
Registered member
47 messages
Posted on December, 12 2018 - 6:08 PM
le résultat :



en même temps je me rend compte que j'ai 300 contacts. est ce que cela va pas être lourd la comparaison de 300*300 contact ?
Message modified, December, 12 2018 - 6:16 PM
Registered member
47 messages
Posted on December, 13 2018 - 9:09 AM
je te remercie de ton aide.
on voit avec ton exemple que les numéro son bon pour la comparaison.
mais en suite je ne suis pas arriver a trouver la syntaxe pour lier les deux numéro de téléphones et encore moins faire la mise a jours.
j'ai tester les deux code si dessous aucun ne marche ?
POUR TOUT CHAÎNE sLigne DE sContenuFichier SEPAREE PAR CRLF
gtabContacts = ContactListe(Null)
bTrouve est un booléen=Faux
POUR TOUT tContact DE gtabContacts
POUR TOUT loop_numeroTelephone DE tContact..Téléphone
SI loop_numeroTelephone=ExtraitChaîne(sLigne,3,";") ALORS
Info("Comparaison entre "+loop_numeroTelephone +" du contact "+ tContact..NomAffiché+" et du numéro "+ExtraitChaîne(sLigne,3,";"))

FIN
FIN
FIN


ou
POUR TOUT CHAÎNE sLigne DE sContenuFichier SEPAREE PAR CRLF
gtabContacts = ContactListe(Null)
bTrouve est un booléen=Faux
POUR TOUT tContact DE gtabContacts
POUR TOUT loop_numeroTelephone DE tContact..Téléphone
SI mContact.TéléphoneMobile=ExtraitChaîne(sLigne,3,";") ALORS
Info("Comparaison entre "+loop_numeroTelephone +" du contact "+ tContact..NomAffiché+" et du numéro "+ExtraitChaîne(sLigne,3,";"))

FIN
FIN
FIN
Registered member
352 messages
Popularité : +12 (18 votes)
Posted on December, 13 2018 - 9:46 AM
Il n'est pas nécessaire de mettre ce bout de code suivant à l'intérieur de la boucle 1 :
gtabContacts = ContactListe(Null)


Déplacez-là juste avant d'entrer dans la boucle.
Le traitement sera long, en effet, surtout que là, je ne sais pas si la recherche se fait sur le téléphone, sur la carte SIM ou les 2...
Quand vous dites
j'ai tester les deux code si dessous aucun ne marche ?

Qu'est-ce qui ne marche pas? les 2 codes font juste une comparaison des numéros de téléphone.
Registered member
47 messages
Posted on December, 13 2018 - 10:01 AM
ok je place
gtabContacts = ContactListe(Null)
au dessus de la boucle ?

j'ai tester le 1er code
SI loop_numeroTelephone=ExtraitChaîne(sLigne,3,";") ALORS

me renvoi une erreur sur l’application 'L'opperation '=' est interdite entre un élément de type Téléphone et un élément de type chaine ?
du coup je ne sais pas comment faire la comparaison ?

le segond code
SI mContact.TéléphoneMobile=ExtraitChaîne(sLigne,3,";") ALORS

ne fait rien il ne passe jamais dans le "alors"
Registered member
352 messages
Popularité : +12 (18 votes)
Posted on December, 13 2018 - 10:19 AM
Remplacez
SI loop_numeroTelephone=ExtraitChaîne(sLigne,3,";") ALORS

par
SI loop_numeroTelephone..Numéro=ExtraitChaîne(sLigne,3,";") ALORS
Registered member
47 messages
Posted on December, 13 2018 - 10:26 AM
super avec
SI loop_numeroTelephone..Numéro=ExtraitChaîne(sLigne,3,";") ALORS

la comparaison se fait bien . :merci: et le message d'info montre bien qu'il retrouve le lien entre les numéros

qu'est ce que ^peux mettre comme syntaxe après le alors pour mettre a jour le contatc ou le créer. ?
je suppose que je ne doit pas utilise les fonction contactajoute() ou conatctmodifie() qui vont avec mContact ?
Registered member
352 messages
Popularité : +12 (18 votes)
Posted on December, 13 2018 - 10:42 AM
je verrais un code dans ce genre là (non testé):
POUR TOUT CHAÎNE sLigne DE sContenuFichier SEPAREE PAR CRLF
bTrouve est un booléen=Faux
sContact est un Contact
POUR TOUT tContact DE gtabContacts
POUR TOUT loop_numeroTelephone DE tContact..Téléphone
SI loop_numeroTelephone..Numéro=ExtraitChaîne(sLigne,3,";") ALORS
bTrouve=Vrai
sContact = tContact
SORTIR //je quitte la boucle POUR TOUT loop_numeroTelephone DE tContact..Téléphone
FIN
FIN

SI bTrouve ALORS //si j'ai trouvé le contact avec le bon numéro de téléphone
SORTIR //je quitte la boucle POUR TOUT tContact DE gtabContacts
FIN
FIN

SI bTrouve ALORS
//je met à jour le contact à l'aide de sContact
SINON
//je créée le contact à l'aide de sContact
FIN
FIN
Registered member
47 messages
Posted on December, 13 2018 - 10:48 AM
je vais tester, mais sans abuser de ta bonté :D est ce tu sais ou je peux trouver les syntaxe pour créer ou metrre ajour aves scontact
sur le net je n'ai trouver que du mconact avec conactajoute https://doc.pcsoft.fr/?1000006101&name=contactajoute_fonction ou contactmodifie https://doc.pcsoft.fr/?1000006104&name=contactmodifie_fonction

merci.
Registered member
47 messages
Posted on December, 13 2018 - 11:03 AM
alors j'ai fait cela
POUR TOUT CHAÎNE sLigne DE sContenuFichier SEPAREE PAR CRLF

bTrouve est un booléen=Faux
sContact est un Contact
POUR TOUT tContact DE gtabContacts
POUR TOUT loop_numeroTelephone DE tContact..Téléphone
SI loop_numeroTelephone..Numéro=ExtraitChaîne(sLigne,3,";") ALORS
bTrouve=Vrai
sContact = tContact
SORTIR //je quitte la boucle POUR TOUT loop_numeroTelephone DE tContact..Téléphone
FIN
FIN

SI bTrouve ALORS //si j'ai trouvé le contact avec le bon numéro de téléphone
SORTIR //je quitte la boucle POUR TOUT tContact DE gtabContacts
FIN
FIN

SI bTrouve ALORS
//je met à jour le contact à l'aide de sContact
mContact.Nom = ExtraitChaîne(sLigne,1,";")
mContact.Prénom = ExtraitChaîne(sLigne,2,";")
mContact.Société="DUCOURNAU"
ContactModifie(contactTéléphone)
Multitâche(-1)
SINON
// on créer le contact
mContact.Nom = ExtraitChaîne(sLigne,1,";")
mContact.Prénom = ExtraitChaîne(sLigne,2,";")
mContact.TéléphoneMobile = ExtraitChaîne(sLigne,3,";")
mContact.Société="DUCOURNAU"
ContactAjoute(contactTéléphone)
Multitâche(-1)
FIN
FIN


pour la création c'est ok, mais cela ne mais pas ajour le contact si il existe ?
Registered member
47 messages
Posted on December, 13 2018 - 11:18 AM
avec le code si dessous en cas de mise a jour j'ai j'ai le message :
impossible d'effectué l’opération car il n'y a pas de contact courant ?
Registered member
352 messages
Popularité : +12 (18 votes)
Posted on December, 13 2018 - 11:23 AM
vous avez confondu
ContactModifie(contactTéléphone)

avec
ContactModifie(sContact )

idem pour ContactAjoute
De plus, pourquoi utiliser mContact et non sContact?
Message modified, December, 13 2018 - 11:24 AM
Registered member
47 messages
Posted on December, 13 2018 - 11:25 AM
j'ai tanté cela, masui sans résulat le contact ne se mets pas a jour ?
SI bTrouve ALORS
//je met à jour le contact à l'aide de sContact
sContact..Nom = ExtraitChaîne(sLigne,1,";")
sContact..Prénom = ExtraitChaîne(sLigne,2,";")
ContactModifie(sContact)
Multitâche(-1)
Registered member
352 messages
Popularité : +12 (18 votes)
Posted on December, 13 2018 - 11:28 AM
si pas ContactModifie(sContact) Alors
Erreur("Le contact n'a pas été mis à jour",ErreurInfo)
FIN
Registered member
47 messages
Posted on December, 13 2018 - 11:35 AM
alors franchement bizarre
le messagae :
le conact n'a pas été mis à jour impossible de modifier le contact car il n'a pas étai retrouver dans la base de contatc de l'appareil ?
le code complet de l'action ?
tContact est un Contact
ResRepEnCours est une chaîne
ResRepEnCours = fRepEnCours()
sContenuFichier est une chaîne
sLigne est une chaîne
gtabContacts est un tableau de Contacts
gtabContacts = ContactListe(Null)
nConnexion est un entier
nConnexion = FTPConnecte("137.74.171.22", "contact", "1234")
SI nConnexion = -1 ALORS
Erreur("La connexion au serveur n'a pas pu être établie")
SINON
SI FTPRécupère(nConnexion, "/export.csv", ResRepEnCours) = Vrai ALORS
Info("Transfert terminé")
SINON
Erreur("Echec du transfert")
FIN
FIN
// Chargement en mémoire du contenu du fichier
sContenuFichier = fChargeTexte("export.csv")
Sablier(Vrai)

POUR TOUT CHAÎNE sLigne DE sContenuFichier SEPAREE PAR CRLF

bTrouve est un booléen=Faux
sContact est un Contact
POUR TOUT tContact DE gtabContacts
POUR TOUT loop_numeroTelephone DE tContact..Téléphone
SI loop_numeroTelephone..Numéro=ExtraitChaîne(sLigne,3,";") ALORS
bTrouve=Vrai
sContact = tContact
SORTIR //je quitte la boucle POUR TOUT loop_numeroTelephone DE tContact..Téléphone
FIN
FIN

SI bTrouve ALORS //si j'ai trouvé le contact avec le bon numéro de téléphone
SORTIR //je quitte la boucle POUR TOUT tContact DE gtabContacts
FIN
FIN

SI bTrouve ALORS
//je met à jour le contact à l'aide de sContact
//je met à jour le contact à l'aide de sContact
sContact..Nom = ExtraitChaîne(sLigne,1,";")
sContact..Prénom = ExtraitChaîne(sLigne,2,";")
ContactModifie(sContact)
SI PAS ContactModifie(sContact) ALORS
Erreur("Le contact n'a pas été mis à jour",ErreurInfo)
FIN
Multitâche(-1)
SINON
// on créer le contact
mContact.Nom = ExtraitChaîne(sLigne,1,";")
mContact.Prénom = ExtraitChaîne(sLigne,2,";")
mContact.TéléphoneMobile = ExtraitChaîne(sLigne,3,";")
mContact.Société="DUCOURNAU"
ContactAjoute(contactTéléphone)
Multitâche(-1)
FIN
FIN
// on créer le contact
// mContact.Nom = ExtraitChaîne(sLigne,1,";")
// mContact.Prénom = ExtraitChaîne(sLigne,2,";")
// mContact.TéléphoneMobile = ExtraitChaîne(sLigne,3,";")
// mContact.Société="DUCOURNAU"
// ContactAjoute(contactTéléphone)
// Multitâche(-1)


Sablier(Faux)
Info("Terminé")
Registered member
352 messages
Popularité : +12 (18 votes)
Posted on December, 13 2018 - 11:38 AM
Ou peut être faites appel à ContactSélectionne avant de modifier les infos du contact, n'ayant jamais fait appel à la notion de contacts, je fais ça à l'aveugle.
Registered member
47 messages
Posted on December, 13 2018 - 11:43 AM
tu parle de cette fonction ?
https://doc.pcsoft.fr/?1000019508&name=contactselectionne_fonction
ContactSélectionne(sContact)


non cette fonction m'ouvre le répertoire pour choisir un contact ou alors il ne faut pas mettre scontact entre ()?
il doit peut être y en avoir une autre ?
Message modified, December, 13 2018 - 11:45 AM
Registered member
352 messages
Popularité : +12 (18 votes)
Posted on December, 13 2018 - 2:28 PM
D'après ce que je comprends, votre manière de procédé n'est pas gérable en WM car non compatible avec les fonctions wlangage qui ont été définies, la recherche ne peut s'appliquer que sur l'un des attributs suivants :
- email
- Nom
- Prénom
- Société

Il faut que dans votre recherche, vous utilisiez cette manière de procédé.
Exemple pour illustrer : mon contact Bernard avec pour numéro de portable 06.01.02.03.04 qui est devenu le 06.01.02.03.05

Du coup, il ne faudrait pas avoir le contact Bernard 2 fois, l'un avec l'ancien numéro et le nouveau mais simplement changer son numéro de téléphone.
Registered member
47 messages
Posted on December, 13 2018 - 4:56 PM
alors que moi c'est l'inverse don j'ai besoin, les numéro ne change pas c'est une liste fixe de numéro (300 ligne) mais c'est le nom de la personnes a qui il est attribué le numéro qui peut changer (démission nouvelle embauche etc. )

quel est attribut correspondant a société dans la recherche, je ne l'ai pas trouver ?
car je vais tenter de tagué tout mes contact avec le nom de ma société, pour supprimer tous les contact tagué et tout recréer en suite. le résultat sera le même.
Message modified, December, 13 2018 - 5:01 PM
Registered member
352 messages
Popularité : +12 (18 votes)
Posted on December, 13 2018 - 5:22 PM
Je ne trouve pas la propriété Société sur un objet de type Contact mais je la trouve sur mContact...
Sinon, votre fichier texte, que contient-il précisément? la liste complète à jour des contacts ou bien les modifications / nouveaux contacts seulement?
Dans le cas où il s'agit de la liste complète et à jour, le mieux est de supprimer tous les contacts et tous les créer de nouveau à l'aide du fichier d'import.
Registered member
47 messages
Posted on December, 13 2018 - 5:50 PM
oui il contient tout les contact, mais je ne voudrais pas supprimer tout les contact, mais uniquement les contact de la société au cas ou il est rajouter un contact manuellement d’où mon idée de ta&gué les contact société pour touts les supprimer ?
a votre avis sur quel champs les tagué pour les supprimer en filtrant ceux de la société ?
Registered member
47 messages
Posted on December, 14 2018 - 5:56 PM
alors j'ai fini par trouver un peu grâce a toi.
voici le code qui fonctionne :merci:
il faut faire le filtre dans contactliste

sContenuFichier = fChargeTexte("export.csv")


POUR TOUT CHAÎNE sLigne DE sContenuFichier SEPAREE PAR CRLF
gtabContacts = ContactListe(Null,contactTéléphone,ExtraitChaîne(sLigne,3,","))
POUR TOUT tContact DE gtabContacts
// suppression des contacts
ContactSupprime(tContact)
Multitâche(-1)
FIN
FIN


Merci du temps que tu as passé a m'aider..
Message modified, December, 14 2018 - 5:57 PM
Registered member
47 messages
Posted on December, 14 2018 - 6:04 PM
petit explication pour les future lecteur :
avec l'extrait de code si dessus :
//je charge mon fichier csv
sContenuFichier = fChargeTexte("export.csv")
//je parcoure chaque ligne de mon fichier
POUR TOUT CHAÎNE sLigne DE sContenuFichier SEPAREE PAR CRLF
//pour chaque ligne de mon fichier je recherche avec conatcliste si le numero de tel existe dans un contact
gtabContacts = ContactListe(Null,contactTéléphone,ExtraitChaîne(sLigne,3,","))
//je parcoure chaque contact trouvé dans ma liste
POUR TOUT tContact DE gtabContacts
// suppression des contacts
ContactSupprime(tContact)
Multitâche(-1)
FIN
FIN


au passage pour 300 numeros moins de 30 secondes de temps de traitement
Message modified, December, 14 2018 - 6:06 PM