Repositionnement dans le databindingsource:

AchiSika Messages postés 6 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 31 octobre 2008 - 28 oct. 2008 à 16:46
AchiSika Messages postés 6 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 31 octobre 2008 - 31 oct. 2008 à 14:47
repositionnement dans le databindingsource:
Voici mon code.
Try

TblFactureSubBindingSource.Position = 0

PositionActuel = TblFactureSubBindingSource.Position

'

For fois = 0
To TblFactureSubBindingSource.Count - 1

'---------- affecte la position dans la boucleTblFactureSubBindingSource.Position = fois

'--------- se positionne à l'enregistrement courante
Me.txtessais.Text foisRwgB TblFactureSubBindingSource.Current

TotMontHT += RwgB(

"MontantHT")TotMontNet += RwgB(

"Montant")TotPartSte += RwgB(

"MontantPartSociete")TotPartPatient += RwgB(

"MontantPartPatient")

'

Next fois

' TblFactureSubBindingSource.Position = PositionActuel

Catch ex
As Exception

Exit
Sub

End
Try
'-------------- commentaire ---
Ce code est placé sur l'évènement Rowvalited
àprès la  ma première validation de  la ligne le cumul se fait correctement mais
à la deuxième validation j'ai le message suivant :  stackoverflowexception s'est produite dans system.data.dll.
J'ai constater au debogage que lorsque TblFactureSubBindingSource.Position = Fois  ,l'événement est activé. Donc le cumul boucle indéfiniment. ce qui provoque l'overflow.

Aidez moi
Merci
A voir également:

7 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
28 oct. 2008 à 21:03
A priori, je ne vois pas de raison que ce code rentre en boucle infinie.

Pourrais-tu préciser certaines choses stp.
Les controles TblFactureSubBindingSource, Rwgb, TotMontHT,
TotMontNet,
TotPartPatient, sont de quel type?

C'est ton code qui rentre en boucle infinie, ou c'est l'évènement qui est déclenché en boucle ?

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
AchiSika Messages postés 6 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 31 octobre 2008
29 oct. 2008 à 10:20
Merci pour votre aide
voici les présisions :
Dim

TotMontHT
As
Integer, TotMontNet
As
Integer, TotPartSte
As
Integer, TotPartPatient
As
Integer
Dim

RwgB As DataRowView
Merci
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
29 oct. 2008 à 20:57
Ton problème viens effectivement du fait que cet évènement est déclenché à chaque changement de ligne dans la datagrid. Or justement dans ta boucle tu redéfini en permanence la nouvelle ligne d'où déclenchement de l'évènement en cascade générant un débordement de la pile système.

Tu n'as pas besoin de redéfinir en permanance la ligne active, il te suffit juste de passer en revue la collection de ligne du bindingsource :

                Try
                        <strike>TblFactureSubBindingSource.Position = 0</strike>
                        <strike>PositionActuel = TblFactureSubBindingSource.Position</strike>

                        For fois = 0 To TblFactureSubBindingSource.Count - 1
                                '---------- affecte la position
dans la boucle
                                <strike>TblFactureSubBindingSource.Position = fois</strike>
                                '--------- se positionne à
l'enregistrement courante

                                Me.TextBox1.Text =
fois
                                RwgB = TblFactureSubBindingSource. Item(fois)
                                TotMontHT + = RwgB("MontantHT")
                                TotMontNet += RwgB("Montant")
                                TotPartSte += RwgB("MontantPartSociete")
                                TotPartPatient += RwgB("MontantPartPatient")
                        Next fois
                       <strike> ' TblFactureSubBindingSource.Position =
PositionActuel</strike>
                Catch ex As Exception
                        Exit Sub
                End Try

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
AchiSika Messages postés 6 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 31 octobre 2008
30 oct. 2008 à 10:43
Merci Sevyc64  (alias Casy)
ça marche à merveille
Je resterai beaucoup attaché à cette philosophie: LE PARTAGE EST NOTRE FORCE
Merci et à bientôt
Achi sika
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
AchiSika Messages postés 6 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 31 octobre 2008
30 oct. 2008 à 17:47
Bonjour,
J'ai un problème:
Quand j'enregistre mes saisies de l'entête et du détail d'un datagridview de ma facture, le champ père de l'entête n'est pas maj dans le champ fils du détail. de ma base sql server ceci se passe à l'ajout. Mais quand on vient à la modification ,la maj se fait correctement.
Aidez moi
Achi Sika
Merci
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
30 oct. 2008 à 21:43
difficile à dire comme ça, le champ fils est-il bien renseigné dans ta datagridview ?

sinon, si tu as créé une relation entre les 2 tables dans SQLServer, ou une clé étrangère, essaye de faire l'enregistrement en 2 étapes, l'entete d'abord, ensuite le détail

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
AchiSika Messages postés 6 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 31 octobre 2008
31 oct. 2008 à 14:47
Merci.
En fait j'ai vu le problème.
En effet j'ai importé des données d'access dans mes tables entete et détail des factures.Mais dans ma datasource
j'ai oublier de commencer incrémentation des numeroauto par le dernier numéro des factures importées.D'où le numéro Incrémentation est resté à 0 donc le numéro de l'entête s'incrémente mais le numero du détail prend la valeur 0. D'où la relation ne peut pas se faire.
En conclusion:
ça marche après avoir modifier les incréméntations dans la datasource.
Mais je pense que vous pouvez avoir une autre solution pour résoudre ce genre de problèmes.

Merci infiniment pour votre aide.
Achi
0
Rejoignez-nous