• Advertisement

Stage BTS ig problème

Tout ce qui concerne la version 9 de windev
**Windev est une marque déposée de Pcsoft**

Stage BTS ig problème

Messagepar angellife51 » Ven Juin 25, 2010 1:22 pm

Bonjour je suis actuellement en stage et j'ai un problème pour rassembler plusiseurs lignes d'échance

avec ce code ci-dessous j'arive à sélectionner 1 client et j'aimerai que si le client suivant à la même adresse mail , que les écheances soit l'une en dessous de l'autre :

FONCTION sPrepareMessage(sMessageType,nLigne)


sContenu est une chaîne = sMessageType
// sContenu = remplace(sContenu, "%CIV%",Civilite[nligne])
// sContenu = remplace(sContenu, "%NOM_PRENOM%",olemail2.table1.NOM[nligne])
STOP
client=ad_mail
clisuivant=Mail_Cli[i+suiv]
nfac=NUFAC
//nfac1=nufac[suiv]
mont=MONTH
//mont1=MONTH[suiv]
dc=DATEC
//dc1=datec[suiv]
treg=RESTEREG
//treg1=restereg[suiv]

ente_rel est une chaîne
ente_rel="Numéro Date facture Montant Echéance Réglé Solde"
datef est une chaîne
djap est un monétaire
suiv est un entier

HLitRecherche("PARADIV","TOPCD","R"+Complète(SAISIE1,5))
SI HTrouve() ET PARADIV.TOP="R" ET SansEspace(PARADIV.CODE)=SansEspace(SAISIE1) ALORS
suiv=0
sContenu=PARADIV.MEMO1+RC
scontenu=ente_rel+RC
HLitRecherche(Echeanc,factech,NUFAC[i]+DATEC[i])
SI HTrouve(Echeanc) ALORS
datef=Echeanc.datefact
djap=Echeanc.montregF
FIN
scontenu=scontenu+nfac+TAB+datef+TAB+mont+TAB+dc+TAB+djap+TAB+treg+RC
POUR suiv=1 A 10
mon problème est ici ==> SI Mail_Cli[i]=client ALORS
scontenu=scontenu+NUFAC[1]+TAB+datef+TAB+mont1+TAB+dc1+TAB+djap+TAB+treg1+RC
SINON
SORTIR
FIN
FIN
scontenu=sContenu+PARADIV.MEMO2

Merci d'avance
angellife51
Nouveau Membre
 
Messages: 18
Inscription: Ven Juin 25, 2010 1:19 pm

Advertisement

Re: Stage BTS ig problème

Messagepar angellife51 » Lun Juin 28, 2010 7:26 am

HLitRecherche("PARADIV","TOPCD","R"+Complète(SAISIE1,5))
SI HTrouve() ET PARADIV.TOP="R" ET SansEspace(PARADIV.CODE)=SansEspace(SAISIE1) ALORS
suiv=0
sContenu=PARADIV.MEMO1+RC
sContenu=ente_rel+RC
HLitRecherche(Echeanc,factech,"E"+nfac+dc)
SI HTrouve(Echeanc) ALORS
datef=Echeanc.datefact
djap=Echeanc.montregF
FIN
sContenu=sContenu+nfac+TAB+datef+TAB+mont+TAB+dc+TAB+djap+TAB+treg+RC
POUR suiv=1 A 10
SI Mail_Cli[i+suiv]=client ALORS
sContenu=sContenu+NUFAC[i+suiv]+TAB+datef+TAB+MONTH[i+suiv]+TAB+DATEC[i+suiv]+TAB+djap+TAB+RESTEREG[i+suiv]+RC
SINON
SORTIR
FIN


Quelqu'un peut m'expliquer pourquoi le mail_cli[+suiv] ne marche pas?

Merci
angellife51
Nouveau Membre
 
Messages: 18
Inscription: Ven Juin 25, 2010 1:19 pm

Re: Stage BTS ig problème

Messagepar TheDuke » Lun Juin 28, 2010 7:45 am

Salut,

Qu'est ce que i represente? Ou est sa déclaration?
TheDuke
SUPER MEMBRE
 
Messages: 1268
Inscription: Mer Nov 22, 2006 8:24 pm

Re: Stage BTS ig problème

Messagepar angellife51 » Lun Juin 28, 2010 7:52 am

i est pour le client qui est selectionner

JE marque les 2 procédures :

ThreadBoutEnvoie :

i, index sont des entier
bOK est un booléen
//sMsg est une chaine
resteDivision est un réel

index = 0

// initialisation de la table
POUR i=1 A TableOccurrence(TABLE1)
olemail2.TABLE1.Statut[i] = ""
FIN

// pour chaque ligne de la table
POUR i=1 A TableOccurrence(TABLE1)
// si le client fait partie des destinataires
SI olemail2.TABLE1.C_MARQUE[i]=1 ALORS

timeout est un entier
timeout = EmailLitTimeOut()
Trace(timeout)

TableSelectPlus(TABLE1,i)
olemail2.TABLE1.Statut[i]="En cours"
Message("Envoi du mail à "+ olemail2.TABLE1.Mail_Cli[i]) ; MultitâcheRepeint()
// Message(chaineconstruit("Envoi du mail à ",ColMail[i])) ; multitacherepeint()
// Personnalisation du message
SI Mail_Cli[i]<>clientsuiv ALORS
STOP
ad_mail=Mail_Cli[i]
nfac=NUFAC[i]
dc=DATEC[i]
treg=RESTEREG[i]
mont=MONTH[i]

smsg=sPrepareMessage(Mail_Cli[i],i)

SI smsg = "erreur" ALORS
olemail2.TABLE1.C_MARQUE[i]="Echec" ; MultitâcheRepeint()
SINON

// Envoi du message

bOK=bEnvoyerMessage (olemail2.TABLE1.C_MARQUE[i],"",smsg,"")
SI PAS bOK ALORS
SI PAS gbSessionOuverte ALORS
olemail2.TABLE1.Statut[i]="Abandon"; MultitâcheRepeint()
SORTIR
SINON
olemail2.TABLE1.Statut[i]="Echec"; MultitâcheRepeint()
FIN
SINON
olemail2.TABLE1.C_MARQUE[i] =Faux
olemail2.TABLE1.Statut[i]="Envoyé" ; MultitâcheRepeint()
index++
//Tempo de 10sec tout les 5 mails envoyés
resteDivision = modulo ( index , 5 )
SI resteDivision = 0 ALORS
Message("tempo 10 secondes")
Multitâche(tempo)
EmailFermeSession(gsUser)
gbSessionOuverte = Faux
FIN
FIN
FIN
FIN
FIN
FIN

//sablier(faux)
Message()

SI bOK ALORS
Info("Envoi des eMails terminé.")
// Déconnexion du serveur de messagerie
SI gbSessionOuverte ALORS
EmailFermeSession(gsUser)
gbSessionOuverte = Faux
FIN
FIN

BoutonEnvoi..Etat = Actif
BoutonParamConnexion..Etat = Actif
CONTREP..Etat = Actif
ORDONN2..Etat = Actif
ROTATIO..Etat = Actif
CHERCHE1..Etat = Actif
ANNULE3..Etat = Actif
ANNULE4..Etat = Actif
IMPRIME..Etat = Actif

//ThreadArrête("ThreadEnvoie")



ET sPrepareMessage


// Syntaxe :
//[ <Résultat> = ] sPrepareMessage (<sMessageType>, <nLigne>)
//
// Paramètres :
// sMessageType : <indiquez ici le rôle de sMessageType>
// nLigne : <indiquez ici le rôle de nLigne>
// Valeur de retour :
// chaîne : <indiquez ici les valeurs possibles ainsi que leur interprétation>



FONCTION sPrepareMessage(sMessageType,nLigne)


sContenu est une chaîne = sMessageType
// sContenu = remplace(sContenu, "%CIV%",Civilite[nligne])
// sContenu = remplace(sContenu, "%NOM_PRENOM%",olemail2.table1.NOM[nligne])

clientsuiv=ad_mail




ente_rel est une chaîne
ente_rel="Numéro Date facture Montant Echéance Réglé Solde"
datef est une chaîne
djap est un monétaire
suiv est un entier

STOP
HLitRecherche("PARADIV","TOPCD","R"+Complète(SAISIE1,5))
SI HTrouve() ET PARADIV.TOP="R" ET SansEspace(PARADIV.CODE)=SansEspace(SAISIE1) ALORS
suiv=0
sContenu=PARADIV.MEMO1+RC
sContenu=ente_rel+RC
HLitRecherche(Echeanc,factech,"E"+nfac+dc)
SI HTrouve(Echeanc) ALORS
datef=Echeanc.datefact
djap=Echeanc.montregF
FIN
sContenu=sContenu+nfac+TAB+datef+TAB+mont+TAB+dc+TAB+djap+TAB+treg+RC
POUR suiv=1 A 10
SI Mail_Cli[i+suiv]=clientsuiv ALORS
sContenu=sContenu+NUFAC[i+suiv]+TAB+datef+TAB+MONTH[i+suiv]+TAB+DATEC[i+suiv]+TAB+djap+TAB+RESTEREG[i+suiv]+RC
SINON
SORTIR
FIN
FIN
sContenu=PARADIV.MEMO1+RC+sContenu+RC+PARADIV.MEMO2





FIN




RENVOYER sContenu



POur le 1er client selectionner cela marche mais pour le suivant il ne trouve pas

Merci
angellife51
Nouveau Membre
 
Messages: 18
Inscription: Ven Juin 25, 2010 1:19 pm

Re: Stage BTS ig problème

Messagepar emidev » Lun Juin 28, 2010 8:00 am

Bonjour,

dans votre deuxieme procedure i n'est pas defini
je pense que c'est nbligne qui devrait etre ecrit a la place de i

vous le passez en parametre donc dans la procedure qui recoit le parametre il ne faut pas utiliser i
a mon avis vous n'avez pas bien compris le role des procedures et fonction et le passage de parametre

vous faites dans la premiere procedure
Code: Tout sélectionner
smsg=sPrepareMessage(Mail_Cli[i],i)


dans la declaration de la dite procedure
Code: Tout sélectionner
FONCTION sPrepareMessage(sMessageType,nLigne)


dans le code qui suit apres on ne doit pas trouver i mais nLigne
par exemple plus loin dans le code de la procedure

Code: Tout sélectionner
SI Mail_Cli[i+suiv]=clientsuiv ALORS

devrait plus etre
Code: Tout sélectionner
SI Mail_Cli[nLigne+suiv]=clientsuiv ALORS
une erreur peut s'avérer exacte ! il suffit que celui qui la commise se soit trompé...

Bon dev
@+

Firetox
http://www.Emidev.fr

[PS] je ne repond pas au message privé[/PS]
emidev
Membre Confirmé
 
Messages: 622
Inscription: Lun Nov 16, 2009 10:05 am
Localisation: GRENOBLE

Re: Stage BTS ig problème

Messagepar TheDuke » Lun Juin 28, 2010 8:01 am

Salut Angel

As tu essayé de mettre un point d'arrêt juste avant la boucle et suivre la valeur de i ?

Edit : oops le grand maitre a déjà répondu , vaut mieux suivre ces indics... :P
TheDuke
SUPER MEMBRE
 
Messages: 1268
Inscription: Mer Nov 22, 2006 8:24 pm

Re: Stage BTS ig problème

Messagepar angellife51 » Lun Juin 28, 2010 8:07 am

En fait j'ai 6 procédures locales + le code de la page principale

J'ai jamais fait de windev donc un peu compliqué pour moi , donc est-ce que je peux mettre tous les codes et est-ce que vous pouvez m'expliquez tout ce qui ne vas pas ?
angellife51
Nouveau Membre
 
Messages: 18
Inscription: Ven Juin 25, 2010 1:19 pm

Re: Stage BTS ig problème

Messagepar emidev » Lun Juin 28, 2010 8:12 am

Bonjour,

En fait j'ai 6 procédures locales + le code de la page principale
J'ai jamais fait de windev donc un peu compliqué pour moi


peut importe en c , visual basic , pascal , delphi vous auriez les memes soucis les procedures et fonctions et les passages de parametres sont les memes pour tous les languages.
une erreur peut s'avérer exacte ! il suffit que celui qui la commise se soit trompé...

Bon dev
@+

Firetox
http://www.Emidev.fr

[PS] je ne repond pas au message privé[/PS]
emidev
Membre Confirmé
 
Messages: 622
Inscription: Lun Nov 16, 2009 10:05 am
Localisation: GRENOBLE

Re: Stage BTS ig problème

Messagepar angellife51 » Lun Juin 28, 2010 8:16 am

J'ai fait pratiquement que du php pendant ma 1ère année de bts ig et plus je vais l'année prochaine en ARLE donc j'ai du mal!

Mon problème est réglé , i était déclaré 2 fois donc sa posait quelques petit problèmes
mais je suis arrivé a un autre problème , c'est que si le client a 2 lignes , il y a 2 mails qui s'envoient mais sur chaque y'a les informations des 2 lignes
angellife51
Nouveau Membre
 
Messages: 18
Inscription: Ven Juin 25, 2010 1:19 pm

Re: Stage BTS ig problème

Messagepar angellife51 » Lun Juin 28, 2010 8:18 am

Je pense que le problème est sur cette page là vu que c'est la procédure bEnvoyerMessage :

FONCTION bEnvoyerMessage(sAdresse,sObjet="",sContenu="",sPJ="")

// Envoi d'un mail

// Connexion à la messagerie
Message("Connexion en cours ...")
//Sablier(Vrai)

//SI PAS gbSessionOuverte ALORS
gbSessionOuverte=EmailOuvreSessionSMTP(gsUser, gsSMTP)
//fin

SI PAS gbSessionOuverte ALORS
Message("La connexion a échouée.")
//Sablier(Faux)
Erreur("Pb de connexion",EmailMsgErreur(Email.Erreur))
SINON
//// Connexion à la messagerie si pas de session en cours
//si pas gbSessionOuverte alors
// si pas Ouvre(MailingFenConnexion) alors renvoyer faux
//FIN

//// Remise à zéro de la structure du mail
//EmailRAZ()

// Préparation du message
Email.Expediteur = gsExpéditeur // L'expéditeur
Email.Destinataire[1] = ad_mail // Le destinataire
Email.NbDestinataire = 1 // Le nombre de destinataires
Email.Sujet = sObjet // Le sujet
Email.Message = sContenu // Le corps du message
// Pièces jointes
sListePJ est une chaîne = sPJ+";"
sFichier est une chaîne
ix est un entier
Email.NbAttache = 0
BOUCLE
ix++
sFichier=SansEspace(ExtraitChaîne(sListePJ,ix," ;"))
SI sFichier = EOT ALORS SORTIR
SI fFichierExiste(sFichier) = Vrai ALORS
Email.NbAttache++
Email.Attache[Email.NbAttache]=sFichier
FIN
FIN

// Envoi du mail
RENVOYER EmailEnvoieMessage(gsUser)
FIN
angellife51
Nouveau Membre
 
Messages: 18
Inscription: Ven Juin 25, 2010 1:19 pm

Re: Stage BTS ig problème

Messagepar emidev » Lun Juin 28, 2010 8:28 am

Bonjour,

non le probleme n'est pas la je pense
cette procedure envoie un message a 1 destinataire

je regarderais plus du cote de la table principale (votre client se trouve deux fois dans la table donc deux mail partent)
ce qui en soit n'est pas choquant mais n'est pas le resultat attendu

donc soit il faut que le client se trouve une seule fois dans la table soit vous traitez le fait que vous avez deja envoyé un mail a ce client
vous pouvez le faire avec 1 variable globale a mettre dans la fenetre principal

Code: Tout sélectionner
Vl_chaineEnvoyee est une chaine


et dans la procedure qui envoie le mail simplement verfifier qu'on a pas deja envoyé un mail sur cette adresse en ajoutant 2 lignes sur la procedure

Code: Tout sélectionner
FONCTION bEnvoyerMessage(sAdresse,sObjet="",sContenu="",sPJ="")

// Envoi d'un mail


// si on ne l'a pas deja fait
si position( vl_chaineEnvoyee ,sAdresse)> 0 alors retour
vl_chaineEnvoyee+= ";"+sAdresse


// Connexion à la messagerie
Message("Connexion en cours ...")
//Sablier(Vrai)

une erreur peut s'avérer exacte ! il suffit que celui qui la commise se soit trompé...

Bon dev
@+

Firetox
http://www.Emidev.fr

[PS] je ne repond pas au message privé[/PS]
emidev
Membre Confirmé
 
Messages: 622
Inscription: Lun Nov 16, 2009 10:05 am
Localisation: GRENOBLE

Re: Stage BTS ig problème

Messagepar angellife51 » Lun Juin 28, 2010 8:36 am

Merci emidev , j'ai modifié comme tu ma dit mais du cout j'ai une erreur sur la procédure thredboutenvoie

bOK=bEnvoyerMessage (olemail2.TABLE1.C_MARQUE[i],"",smsg,"")

Erreur à la ligne 68 du traitement Procédure locale ThreadBoutEnvoie.
Ce code contient encore des erreurs de compilation et ne peut pas être exécuté.


**********************************************

Informations techniques

Projet : millésime

Dump de l'erreur du module <WD90VM.DLL> <9.01Ga>.

- Appel WL :
Traitement de <olemail2.PROCEDURE.ThreadBoutEnvoie>, ligne <68>, thread <0>

- Niveau : erreur fatale (EL_FATAL)

- Code erreur : 1001

- Code erreur WD55 : 0

- Pas de code d'erreur système

- Pas de message d'erreur système

- Que s'est-il passé ?
Ce code contient encore des erreurs de compilation et ne peut pas être exécuté.

- Pas d'info de debug

- Infos attachées :
EIT_DATEHEURE : 28/06/2010 10:35:51
EIT_PILEWL :
Procédure locale ThreadBoutEnvoie (olemail2.PROCEDURE.ThreadBoutEnvoie), ligne 68

- Identifiant dans le .err : 1001

EDIT : Il me dit que l'expresion ne renvoie pas de resultat : vous ne pouvez pas l'affecter a uen variable ; a un champ ..
angellife51
Nouveau Membre
 
Messages: 18
Inscription: Ven Juin 25, 2010 1:19 pm

Re: Stage BTS ig problème

Messagepar angellife51 » Lun Juin 28, 2010 8:40 am

Un problème sur cette page aussi car il me dit qu'il y a un retour et un renvoyer

FONCTION bEnvoyerMessage(sAdresse,sObjet="",sContenu="",sPJ="")

// Envoi d'un mail

// si on ne l'a pas deja fait
SI Position( Vl_chaineEnvoyee ,sAdresse)> 0 ALORS RETOUR
Vl_chaineEnvoyee+= ";"+sAdresse





// Connexion à la messagerie
Message("Connexion en cours ...")
//Sablier(Vrai)

//SI PAS gbSessionOuverte ALORS
gbSessionOuverte=EmailOuvreSessionSMTP(gsUser, gsSMTP)
//fin

SI PAS gbSessionOuverte ALORS
Message("La connexion a échouée.")
//Sablier(Faux)
Erreur("Pb de connexion",EmailMsgErreur(Email.Erreur))
SINON
//// Connexion à la messagerie si pas de session en cours
//si pas gbSessionOuverte alors
// si pas Ouvre(MailingFenConnexion) alors renvoyer faux
//FIN

//// Remise à zéro de la structure du mail
//EmailRAZ()

// Préparation du message
Email.Expediteur = gsExpéditeur // L'expéditeur
Email.Destinataire[1] = ad_mail // Le destinataire
Email.NbDestinataire = 1 // Le nombre de destinataires
Email.Sujet = sObjet // Le sujet
Email.Message = sContenu // Le corps du message
// Pièces jointes
sListePJ est une chaîne = sPJ+";"
sFichier est une chaîne
ix est un entier
Email.NbAttache = 0
BOUCLE
ix++
sFichier=SansEspace(ExtraitChaîne(sListePJ,ix," ;"))
SI sFichier = EOT ALORS SORTIR
SI fFichierExiste(sFichier) = Vrai ALORS
Email.NbAttache++
Email.Attache[Email.NbAttache]=sFichier
FIN
FIN

// Envoi du mail
RENVOYER EmailEnvoieMessage(gsUser)
FIN
angellife51
Nouveau Membre
 
Messages: 18
Inscription: Ven Juin 25, 2010 1:19 pm

Re: Stage BTS ig problème

Messagepar angellife51 » Lun Juin 28, 2010 9:25 am

Emidev tu es parti???
angellife51
Nouveau Membre
 
Messages: 18
Inscription: Ven Juin 25, 2010 1:19 pm

Re: Stage BTS ig problème

Messagepar angellife51 » Lun Juin 28, 2010 12:10 pm

Y'a plus personne?
angellife51
Nouveau Membre
 
Messages: 18
Inscription: Ven Juin 25, 2010 1:19 pm



  • Advertisement

Retourner vers Forum windev 9

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités