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 Discussion :

pbs transfert structure


Sujet :

WinDev

  1. #1
    Membre du Club
    Homme Profil pro
    de
    Inscrit en
    Décembre 2012
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : de
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 62
    Points : 46
    Points
    46
    Par défaut pbs transfert structure
    Bonjour,

    j'ai créé des stuctures afin de créer un fichier sepa prélévement

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    bufxml est un Buffer 
    transacpv est une structure 
    tEndToEndID est une chaîne 
    tInstdAmt est une chaîne 
    TMndtId est une chaîne 
    TDtoofsgntr est une chaîne 
    Tvar1 est une chaîne 
    Tvar2 est une chaîne 
    tvar3 est une chaîne 
    Tvar4 est une chaîne 
    Tvar5 est une chaîne 
    Tvar6 est une chaîne 
    tvar7 est une chaîne 
    Tvar8 est une chaîne 
    Tvar9 est une chaîne 
    tvar10 est une chaîne 
    FIN 
     
    ttransac est une transacpv 
     
    lot est une structure 
    lPmtInID est une chaîne 
    lPmtMtd est une chaîne 
    lBtchBookg est une chaîne 
    lNbofTxs est une chaîne 
    lCtrlsum est une chaîne 
    lsvclvl est une chaîne 
    LCD est une chaîne 
    LSeqtp est une chaîne 
    lReqdColltnDt est une chaîne 
    lNm est une chaîne 
    Liban est une chaîne 
    Lbic est une chaîne 
    lChrgBr est une chaîne 
    Lics est une chaîne 
    lPrty est une chaîne 
    Slot est un tableau dynamique DE transacpv 
    FIN 
     
    Tlot est une lot 
     
    Entet est une structure 
    entmsgid est une chaîne 
    entcredtm est une chaîne 
    entnboftxs est un chaîne 
    entnomcrean est une chaîne 
    FIN 
     
    tentet est une Entet 
    totxml est une structure 
    sonentet est une Entet 
    sonlot est un tableau dynamique DE lot 
    FIN 
    xmltot est totxml
    J'arrive a bien renseigné les éléments unitaires de chaque structures mais je n’arrive pas à faire le transfert dans les tables dynamique. Cela plante a chaque test.


    cordialement

  2. #2
    Membre expérimenté
    Inscrit en
    Août 2010
    Messages
    726
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 726
    Points : 1 645
    Points
    1 645
    Par défaut
    Bonjour,

    Comment faites-vous ce "transfert" ?

    Déjà, un premier conseil :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    transacpv est une structure
        tEndToEndID est une chaîne
        tInstdAmt est une chaîne
        TMndtId est une chaîne
        TDtoofsgntr est une chaîne
        Tvar est un tableau fixe de 10 chaînes // C'est plus lisible, plus facile à manipuler, et identique en mémoire
    FIN

  3. #3
    Membre du Club
    Homme Profil pro
    de
    Inscrit en
    Décembre 2012
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : de
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 62
    Points : 46
    Points
    46
    Par défaut Réponse
    Bonjour

    Voici mes deux ordres de transferts.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Tlot:Slot[N1] = ttransac
    xmltot:sonlot[N]  = Tlot
    Je n'ai pas ajouté les autres codes merci déja pour le premier conseil.

    Cordialement

  4. #4
    Membre expérimenté
    Inscrit en
    Août 2010
    Messages
    726
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 726
    Points : 1 645
    Points
    1 645
    Par défaut
    Il faudrait poser une question plus précise, ou avec plus de code, parce que là c'est difficile à comprendre.

    2ème conseil :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    totxml est une structure 
    sonentet est une Entet 
    sonlot est un tableau local de lot 
    FIN
    Le mot "local" permet de garantir que le tableau appartiendra réellement à la structure, et sera copié quand on copiera la structure.
    Le mot "dynamique", quant à lui, était inutile.

    3ème conseil : si je peux me permettre, un code plus lisible avec des noms de variables clairs suivant une certaine logique.

    Peut-être avez vous du mal avec l'insertion de valeurs ?

    Dans ce cas, 2 possibilités :
    1. Utiliser les fonction TableauAjoute et TableauInsère. Comprendre qu'il est interdit de faire référence à un élément qui n'existe pas encore dans le tableau (par exemple l'élément n° 3 quand le tableau en contient 2)
    2. Utiliser la déclaration toto est un tableau <agrandissement=N> de titi. Et là, tous les éléments accédés seront créés automatiquement.

    cf. doc : http://doc.pcsoft.fr/fr-fr/?1514030

  5. #5
    Membre du Club
    Homme Profil pro
    de
    Inscrit en
    Décembre 2012
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : de
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 62
    Points : 46
    Points
    46
    Par défaut
    Bonjour,

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    transacpv        est une structure 
    	tEndToEndID  est une chaîne 
    	tInstdAmt    est une chaîne 
    	TMndtId      est une chaîne 
    	TDtoofsgntr  est une chaîne
    	tvar   est un tableau local  de 10 chaînes  
    FIN 
     
    ttransac       est une transacpv 
     
    lot  est une structure 
    	lPmtInID  est une chaîne 
    	lPmtMtd   est une chaîne 
    	lBtchBookg  est une chaîne 
    	lNbofTxs est une chaîne
    	lCtrlsum  est une chaîne
    	lsvclvl est une chaîne 
    	LCD       est une chaîne
    	LSeqtp    est une chaîne 
    	lReqdColltnDt est une chaîne
    	lNm          est une chaîne 
    	Liban        est une chaîne
    	Lbic         est une chaîne
    	lChrgBr      est une chaîne 
    	Lics         est une chaîne
    	lPrty        est une chaîne  
    	Slot  est un tableau local  de transacpv 
    FIN 
     
    Tlot  est une lot
     
    Entet est une structure
    	entmsgid est une chaîne
    	entcredtm est une chaîne
    	entnboftxs est un chaîne
    	entctrlsum est une chaîne
    	entnomcrean est une chaîne  
    FIN
     
    tentet est une Entet 
     
    totxml est une structure
    	sonentet est une entet
    	sonlot est un tableau dynamique de lot
    FIN
    xmltot est totxml
    //xmltot:sonlot = allouer un tableau dynamique de 20 chaînes
    //tlot:slot = allouer un tableau dynamique de 2000000 chaînes 
     
    // Chargement du contenu XML
    HExécuteRequête(REQ_totdet)
    res1=HLitPremier(REQ_totdet)
    res2=HLitPremier(Typentete)
    sMggif = Milieu(Typentete.Numctr,1,3) + heurjour1
    // mise en place entéte
    //datech = DateVersChaîne(DateSys(),"AAAA-MM-JJ")+"T"+HeureVersChaîne(HeureSys(),"hh:mm:ss")
    //prevXML.Document.CstmrDrctDbtInitn.GrpHdr.CreDtTm=DateVersChaîne(DateSys(),"AAAAMMJJ") +HeureVersChaîne(HeureSys(),"HHMMSS") 
    //prevXML.Document.CstmrDrctDbtInitn.GrpHdr.CreDtTm=DateVersChaîne(DateSys(),"AAAAMMJJ")+ hEurjour1
    //nfo(prevXML.Document.CstmrDrctDbtInitn.GrpHdr.CreDtTm)
    rMontent = Arrondi(REQ_totdet.la_somme_Montprel,2)
    dAtjour = DateSys()
    hEurjour =HeureVersChaîne(HeureSys(),"hhmmss")
    heurjour1 =Gauche(heurjour,6)
    sMggif = Milieu(Typentete.Numctr,1,3) + heurjour1
    datech = DateVersChaîne(DateSys(),"AAAAMMJJ")+heurjour1
    // prevXML.Document.CstmrDrctDbtInitn.GrpHdr.MsgId=sMggif
    tentet:entmsgid = sMggif
    // prevXML.Document.CstmrDrctDbtInitn.GrpHdr.CreDtTm=Datech
    tentet:entcredtm = Datech
    //prevXML.Document.CstmrDrctDbtInitn.GrpHdr.NbOfTxs= REQ_totdet.Comptage_1
    tentet:entnboftxs = REQ_totdet.Comptage_1
    // prevXML.Document.CstmrDrctDbtInitn.GrpHdr.CtrlSum = rMontent
    tentet:entctrlsum = rMontent
    //prevXML.Document.CstmrDrctDbtInitn.GrpHdr.InitgPty.Nm= Typentete.Nomcreancier
    tentet:entnomcrean = Typentete.Nomcreancier
    xmltot:sonentet= tentet 
    HLibèreRequête(REQ_totdet)
     
     
    HExécuteRequête(REQ_totlot)
    Res1=HLitPremier(REQ_totlot,REQ_totlot.Nomfichier,REQ_totlot.typeseq)
    TANTQUE HEnDehors(REQ_totlot) = Faux
    	// mise en place lot
    //	prevXML.document.CstmrDrctDbtInitn.PmtInf[N].PmtInfId = Typentete.Reférence
        Tlot:lPmtInID = Typentete.Reférence
    //	prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].PmtMtd = "DD" 
        tlot:lPmtMtd = "DD"
    //	prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].BtchBookG = "false"
        tlot:lBtchBookg  = "false"
    //	prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].NbOfTxs = REQ_totlot.nbrelot
        tlot:lNbofTxs  =  REQ_totlot.nbrelot
    	rMontlot = Arrondi(REQ_totlot.Totmontlotl,2)
    //	prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].CtrlSum = rMontlot
        tlot:lCtrlsum = rMontlot
    //	prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].PmtTpInf.SvcLvl.Cd="SEPA"
        tlot:lsvclvl = "SEPA"                   
    // 	prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].PmtTpInf.LclInstrm.Cd="CORE"
        tlot:lcd  = "CORE"  
    //	prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].PmtTpInf.SeqTp = REQ_totlot.typeseq
        Tlot:LSeqtp =  REQ_totlot.typeseq
    //	prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].ReqdColltnDt = DateVersChaîne(Typentete.Dateech,"AAAAMMJJ")
        tlot:lReqdColltnDt  = DateVersChaîne(Typentete.Dateech,"AAAAMMJJ")
    //	prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].Cdtr.Nm = Typentete.Nomcreancier
        Tlot:lNm = Typentete.Nomcreancier
    //	prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].CdtrAcct.id.IBAN=  Gauche(Typentete.Iban,27)
        tlot:Liban = Gauche(Typentete.Iban,27)    
    	droitech = Droite(Typentete.Bic,3) 
    	SI droitech = "   " 
    //     prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].CdtrAgt.FinInstnId.BIC = Gauche(Typentete.bic,8)
    		tlot:Lbic = Gauche(Typentete.Bic,8)
    		    SINON
    	    Tlot:Lbic = Typentete.Bic
    //	   prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].CdtrAgt.FinInstnId.BIC = Typentete.Bic 
       FIN   
    //	prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].ChrgBr = "SLEV"
        tlot:lChrgBr = "SLEV"
    //	prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].CdtrSchmeId.Id.PrvtId.Othr.Id = Typentete.Ics 
        tlot:Lics = Typentete.Ics 
    //	prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].CdtrSchmeId.Id.PrvtId.Othr.SchmeNm.Prtry= "SEPA"
    	tlot:lPrty = "SEPA"
     
     
    	clepar = HFiltreIdentique(Typdetail,Nomfichiertypeseq,REQ_totlot.Nomfichier,REQ_totlot.typeseq)
    	HLitPremier(Typdetail, CléPar,hSansRafraîchir)
    	N1 = 1
    	TANTQUE PAS HEnDehors()
    		nbmaj = 0 
    	    nbre = nbre + 1 
     		nBre1 = modulo(nBre,10000)
     		SI nbre1 = 0 ALORS
     	      memoira()
     	     gsGtoparch = "OK "
     		 creatarch("chgt",Nbre, "   ",DateSys() + HeureSys(),"201001010")   
     		FIN
    		// mise en place transaction
    //		prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].DrctDbtTxInf[N1].PmtId.EndToEndID = Typdetail.Libecomp
            ttransac:tEndToEndID = Typdetail.Libecomp
    //		prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].DrctDbtTxInf[N1].InstdAmt:Ccy = "EUR"
    //		prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].DrctDbtTxInf[N1].InstdAmt = Typdetail.Montprel
            ttransac:tInstdAmt = "CCY=EUR>" +  Typdetail.Montprel
    //		prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].DrctDbtTxInf[N1].DrctDbtTx.MndtRltdInf.MndtId = Typdetail.Rumd
            ttransac:TMndtId =  Typdetail.Rumd 
    //		prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].DrctDbtTxInf[N1].DrctDbtTx.MndtRltdInf.DtOfSgntr = Typdetail.Rumd
            ttransac:TDtoofsgntr = Typdetail.Rumd
      		topmaji  = " " 
     		Topmajin = "  "   
     		topmajm  = " " 
     		topmajib = " " 
     		Topmajs  = " " 
    		Pancrum = Typdetail.AncienRum
    		Pancics = Typentete.ancics
    		Ancinomcre = Typentete.anciennomcrean
    		anciban = Typdetail.ancieniban
    		 //		info(Typentete.ancicis,"     ",Typdetail.AncienRum)
     		Modifpain008(Typentete.Ics,Typdetail.Rumd,Typdetail.Iban,Pancics,Pancrum,Typentete.Nomcreancier,ancinomcre,anciban,topmajm,topmaji,topmajin,Topmajib,Topmajs) 
     		SI Topmaji = "OK" OU Topmajib = "OK" OU  Topmajm = "OK" OU Topmajs = "OK" OU topmajin = "OK" ALORS
     			 nbmaj = nbmaj + 1
    // 			 prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].DrctDbtTxInf[N1].DrctDbtTx.MndtRltdInf.AmdmntInd = "true"
               Insère (ttransac:tvar,nbmaj, "true")
     
            FIN
     		SI Topmajm = "OK" ALORS
     			nbmaj = nbmaj + 1
     			 Insère (ttransac:tvar,nbmaj, Typdetail.AncienRum)
    		    	ttransac:Tvar = Typdetail.AncienRum
    // 			prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].DrctDbtTxInf[N1].DrctDbtTx.MndtRltdInf.AmdmntInfdtls.OrgnlMndtID = Typdetail.AncienRum
     		FIN
    		SI TopmajIn = "OK" ALORS
    			nbmaj = nbmaj + 1
    			Insère (ttransac:tvar,nbmaj, Ancinomcre)
    //			prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].DrctDbtTxInf[N1].DrctDbtTx.MndtRltdInf.AmdmntInfdtls.OrgnlCdtrSchmeId.Nm = Ancinomcre
    		FIN
    		SI Topmaji = "OK" ALORS
    			nbmaj = nbmaj + 1
    			Insère (ttransac:tvar,nbmaj, Typentete.ancics)
    		    nbmaj = nbmaj + 1
    		    Insère (ttransac:tvar,nbmaj, "SEPA")
     
    //			prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].DrctDbtTxInf[N1].DrctDbtTx.MndtRltdInf.AmdmntInfdtls.OrgnlCdtrSchmeId.Id.PrvtId.Othr.Id= Typentete.ancics
    //		    prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].DrctDbtTxInf[N1].DrctDbtTx.MndtRltdInf.AmdmntInfdtls.OrgnlCdtrSchmeId.Id.PrvtId.Othr.SchmeNm.Prtry= "SEPA"
    		FIN
    		SI Topmajib = "OK" ALORS
    			nbmaj = nbmaj + 1
    			Insère (ttransac:tvar,nbmaj, Gauche(anciban,27))
    //			prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].DrctDbtTxInf[N1].DrctDbtTx.MndtRltdInf.AmdmntInfdtls.OrgnlDbtrAcct.Id.IBAN=Gauche(anciban,27)
    		FIN
    		SI Topmajs = "OK" ALORS
    			nbmaj = nbmaj + 1
    			Insère (ttransac:tvar,nbmaj,"SMNDA")
     
     
    //			prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].DrctDbtTxInf[N1].DrctDbtTx.MndtRltdInf.AmdmntInfdtls.OrgnlDbtrAgt.FinInstnId.Othr.Id = "SMNDA"
    		FIN
        	droitech = Droite(Typdetail.Bic,3)
     		SI droitech = "   " ALORS
     			nbmaj = nbmaj + 1
     			Insère (ttransac:tvar,nbmaj,Gauche(Typdetail.Bic,8))
     
    //		           prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].DrctDbtTxInf[N1].DbtrAgt.FinInstnId.BIC = Gauche(Typdetail.Bic,8)                                                
    			SINON
    		    nbmaj = nbmaj + 1 
    		    Insère (ttransac:tvar,nbmaj,Typdetail.Bic)
    			// 			prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].DrctDbtTxInf[N1].DbtrAgt.FinInstnId.BIC = Typdetail.Bic 
     		FIN   
     		nbmaj = nbmaj + 1 
    		ttransac:Tvar  = Typdetail.Nomdebiteur
     
    //		prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].DrctDbtTxInf[N1].Dbtr.Nm = Typdetail.Nomdebiteur
            nbmaj = nbmaj + 1 
    		Insère (ttransac:tvar,nbmaj,Gauche(Typdetail.Iban,27))
     
    		//		prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].DrctDbtTxInf[N1].DbtrAcct.Id.IBAN=Gauche(Typdetail.Iban,27)
            SI Milieu(Typdetail.librepiq,1,1) <> " " ALORS
            	nbmaj = nbmaj + 1
            	Insère (ttransac:tvar,nbmaj,Typdetail.librepiq)
    //               	prevXML.Document.CstmrDrctDbtInitn.PmtInf[N].DrctDbtTxInf[N1].RmtInf.Ustrd = Typdetail.librepiq
            FIN	
             Tlot:Slot[N1] = ttransac
            HLitSuivant(Typdetail, CléPar)
    		N1 = N1 + 1
     
    	FIN 
    	 xmltot:sonlot[N]  = Tlot
    	N = N + 1  
     
    	HLitSuivant(REQ_totlot,REQ_totlot.Nomfichier,REQ_totlot.typeseq)
    FIN
     
    HLibèreRequête(REQ_totlot)
    // Enregistrement du fichier XML
    gsGtoparch = "OK "
    creatarch("serialis",nBre, "   ",DateSys() + HeureSys(),"201001010") 
    Sérialise(xmltot,bufxml,psdXML)
    gsGtoparch = "OK "
    j'essaie de créer un fichier XML prélèvement SEPA. Je créais mon fichier Prélèvement avec les ordres XML Natifs mais le probléme était que mettais 3 minutes pour charger 10000 prélèvements mais plus je chargeais de prélèvements plus je mettais de temps.(21 heures pour charger 200000 prélévements). Une personne m'a conseillé de passer par les structures et l'ordre sérialise.

    Merci d'avance de vos réponses.

    Cordialement

  6. #6
    Membre éprouvé

    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    402
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 402
    Points : 915
    Points
    915
    Par défaut
    Bonjour,

    dans l'idée je ne suis pas contre mais je me pose une question sur l'intérêt d'utiliser une structure que tu aura du mal à passer en paramètre.
    Utilise plutôt une vrai classe avec des vrai instances d'objets puisque tu as la main pour le faire.
    Gardes les structures pour de petits traitements locaux dans ton code et pour les états (car on ne peut pas faire de classe dans un état)

    Avec une classe tu résoudras tes soucis de passage de paramètres et tu aura un meilleur code.

    Bon dev

  7. #7
    Membre du Club
    Homme Profil pro
    de
    Inscrit en
    Décembre 2012
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : de
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 62
    Points : 46
    Points
    46
    Par défaut réponse
    Bonjour,

    je suis en train de regarder comment marche les classes avant de commencer a faire mes modifications. Pourrais tu me faire un peti bout de code pour que je comprennes bien le principe.

    Merci d'avance

    Cordialement

  8. #8
    Membre éprouvé

    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    402
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 402
    Points : 915
    Points
    915
    Par défaut
    Bonjour,
    en fait ça marche pratiquement comme les structures mais tu déclare une classe au niveau de ton projet
    donc tu peux utiliser cette classe ou des instances (objets ) de cette classe dans tout ton projet.

    Par exemple tu déclare une classe EnteteSEPA
    avec les membres qui correspondent à tes balises XML
    (ce que tu fais déjà en fait avec des variables)

    puis tu crée un objet monEnteteSEPA est un EnteteSEPA
    que tu peux "remplir"

    jusque là tout est comme avec les structures
    sauf que tu peux passer l'objet monEnteteSEPA en paramêtre à une procédure
    sans avoir à redéclarer la structure.

    par exemple on imaginerai une classe VirementSEPA
    dont les membres sont :
    - une instance d'une classe EnteteSEPA,
    - un tableau dynamique d'une classe BlocInfoSEPA,

  9. #9
    Membre du Club
    Homme Profil pro
    de
    Inscrit en
    Décembre 2012
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : de
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 62
    Points : 46
    Points
    46
    Par défaut réponse
    Bonjour,

    je me n'en sort pas avec les classes et les objets.

    Pouvez vous m'aider ?

    Merci d'avance.

    Cordialement

  10. #10
    Membre expérimenté
    Inscrit en
    Août 2010
    Messages
    726
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 726
    Points : 1 645
    Points
    1 645
    Par défaut
    Un problème à la fois.
    Vous ne savez pas encore si vous allez être capable de générer un fichier XML dans le format attendu via la sérialisation.
    Faites un test rapide avec des structures. C'est pas le moment d'apprendre les classes, surtout quand on voit comme elles sont lourdes dans WinDev.

    Voici une discussion trouvée sur le forum PC Soft qui pourrait vous intéresser :
    http://forum.pcsoft.fr/thread.awp?gr...tid=242710&v=2

    Et une autre :
    http://forum.pcsoft.fr/thread.awp?gr...cur=292378&v=2

  11. #11
    Membre éprouvé

    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    402
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 402
    Points : 915
    Points
    915
    Par défaut
    En fait je crois que nocri5810 sait déjà faire un fichier XML
    même plutôt bien...
    Son problème ne vient pas de WD
    Il ne vient pas non plus de XML

    En y réfléchissant à deux fois le vrai problème est plus haut, c'est idiot de générer un virement SEPA de 200000 prélèvements !!!!

    Tu n'as pas compris la demande de ton client car personne ne génère ce genre de fichier.
    Tu dois forcement fractionner ton ordre de virement sinon ça n'est pas possible.
    Car ok il y a des sommes de contrôle dans les blocs pour vérifier qu'aucune info n'a été oubliée mais 200000 virements dans un seul fichier XML c'est du suicide.

    Bon dev

  12. #12
    Membre du Club
    Homme Profil pro
    de
    Inscrit en
    Décembre 2012
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : de
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 62
    Points : 46
    Points
    46
    Par défaut réponse
    bonjour,

    c'est le nombre de prélévements mensuel génére par un de nos clients.

    De plus un nouveau client lui en génére 1.500.000.
    j'en déduis que wd ou XML ne sont pas prévu pour de telles quantités.

    Cordiaelement

    ps j'ai compris la demande du client mais je ne peux pas lui demandé de faire moins de prélévements.

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 303
    Points : 812
    Points
    812
    Par défaut
    Bonjour,

    Citation Envoyé par nocri5810 Voir le message

    c'est le nombre de prélévements mensuel génére par un de nos clients.

    De plus un nouveau client lui en génére 1.500.000.
    j'en déduis que wd ou XML ne sont pas prévu pour de telles quantités.
    La question d'Atsibat ne concerne pas le nombre de prélèvements, mais le nombre de fichiers à utiliser pour les transmettre.

    Par exemple, tu pourrais générer 1000 fichiers XML contenant chacun 200 prélèvements.

    Maintenant, s'il faut absolument tout transmettre en une seule fois, tu peux toi-même procéder en découpant ton problème en 1000 fichiers distincts, et ensuite tu les concatènes en un seul gros fichier XML (modulo la suppression des balises redondantes qui encadrent les balises des prélèvements).

    Non ?

  14. #14
    Membre du Club
    Homme Profil pro
    de
    Inscrit en
    Décembre 2012
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : de
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 62
    Points : 46
    Points
    46
    Par défaut reponse onepoint
    Merci de ta réponse.

    Je me renseigne pour savoir si c'est posssible pour concaténer les fichiers XML.

  15. #15
    Membre expérimenté
    Inscrit en
    Août 2010
    Messages
    726
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 726
    Points : 1 645
    Points
    1 645
    Par défaut
    Renseignez-vous surtout pour savoir si vous pouvez envoyer plusieurs fichiers (par exemple 1 pour chaque journée voire chaque tranche horaire, puisque là vous parlez de volumes par mois).
    Concaténer ne sera pas forcément simple. Ca dépend du format, que je ne connais pas.

  16. #16
    Membre éprouvé

    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    402
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 402
    Points : 915
    Points
    915
    Par défaut
    Le XML est prévu pour ce type de document mais pas pour ce volume dans ce type de transfert.
    De plus c'est une mauvaise pratique qui peut entrainner de grosses difficultés pour votre client.
    Regardez bien votre XSD SEPA il y a des rubriques pour les jours et il y a aussi un ID unique qui vous permet de généréer autant de fichier que vous le souhaitez.
    Ensuite c'est un accord avec la banque mais je ne vois pas de contre indications à faire plusieurs virements, c'est même plus sécurisant car si un des ordres ne passe pas les autres sont tout de même enregistrés alors qu'avec un seul fichier votre client aura bloqué le chiffre total jusqu'à régularisation.
    Je suis sur qu'il sera très sensible à cet argument.

Discussions similaires

  1. Transfert de table avec modification de structure
    Par poussinvert dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 27/07/2012, 15h10
  2. Réponses: 0
    Dernier message: 15/05/2012, 21h19
  3. [WD15] Transfert de structure avec PostMessage()
    Par bastiencb dans le forum WinDev
    Réponses: 3
    Dernier message: 18/08/2010, 16h01
  4. Transfert de structure entre 2 applications
    Par OttisToole dans le forum Threads & Processus
    Réponses: 12
    Dernier message: 04/08/2009, 23h15
  5. Pb transfert structure par socket
    Par Wriggles dans le forum Débuter
    Réponses: 3
    Dernier message: 12/06/2008, 14h04

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