Merci d'essayer de m'aider

sirineb Messages postés 5 Date d'inscription samedi 22 avril 2006 Statut Membre Dernière intervention 25 juin 2006 - 25 mai 2006 à 21:05
erefdatacomputing Messages postés 165 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 24 avril 2018 - 27 mai 2006 à 23:53
Salut , <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>






 





J’ai un problème dans un programme en VB qui ne fonctionne pas toujours, parfois il se bloque , et parfois il termine l’exécution jusqu’à la fin  .


J’ai mis le code ici et j’espère bien qu’il y a quelqu’un qui peut m’aider, car je dois m’avancer dans le programme et je n’ai plus de temps. Merci d’avance pour tous ceux qui réfléchissent à ce problème et veulent m’aider.


J’ai deux maquettes la première marche correctement et la deuxième qui s’affiche à partir d’un bouton de la première maquette. le problème est dans le fonctionnement d’un bouton de la deuxième maquette qui utilise une table de la base  déjà remplie avec le code du premier bouton. J’espère que j’ai pu expliquer le problème rencontré.







 Voici le premier programme du bouton “suiv “ de la première maquette qui permet d’afficher la maquette suivante avec le calcul automatique des champs de la table prfinof et leur affichage dans la datagrid qui est liée à cette table à l’aide de l’ADODC  « datPrimaryRS » :

 

Private Sub suiv_Click()

  Dim min As Integer

  Dim max As Integer

  Dim pos As Integer

  Dim minap As Integer

  Dim maxap As Integer

  Dim f As New prfinof

  Dim sql As String

  D1.rsprfinof.Open

  sql = " delete from prfinof "

  D1.con.Execute sql

                D1.rsordre_fab.Open , , , 2

                D1.rsordre_fab.MoveFirst

                f.datPrimaryRS.Refresh

                For nof = 1 To D1.rsordre_fab.RecordCount

                    f.datPrimaryRS.Recordset.AddNew

                    min = 0

                    minap = 0

                    max = 0

                    maxap = 0

                    pos = D1.rsordre_fab.AbsolutePosition

                    D1.rsordre_fab.MoveFirst

                    For i = 1 To pos - 1

                     min = min + D1.rsordre_fab.Fields!dmin

                     max = max + D1.rsordre_fab.Fields!dmax

                     D1.rsordre_fab.MoveNext

                    Next

                    For i = pos To D1.rsordre_fab.RecordCount

                     minap = minap + D1.rsordre_fab.Fields!dmin

                     maxap = maxap + D1.rsordre_fab.Fields!dmax

                     D1.rsordre_fab.MoveNext

                    Next

                    D1.rsordre_fab.AbsolutePosition = pos

                    f.grdDataGrid.Columns(0) = D1.rsordre_fab.Fields!of

                    f.grdDataGrid.Columns(1) = min

                    f.grdDataGrid.Columns(2) = max

                    f.grdDataGrid.Columns(3) = minap

                    f.grdDataGrid.Columns(4) = maxap

                    f.datPrimaryRS.Recordset.Update

                    D1.rsordre_fab.MoveNext

                Next

                D1.rsordre_fab.close

     D1.rsprfinof.close

     D1.rsprfinof.Fields.Refresh

     Unload Me

     f.Show

  

End Sub

 

 

 

La procedure qui n’a pas pu fonctionné correctement tout le temps  dans la deuxième maquette est

 

Private Sub val_Click()

   

     D1.rsprfinof.Fields.Refresh

     D1.rsprfinof.Open

     D1.rsprfinof.MoveLast  ‘’’ ß  le programme se bloque ici et un message d’erreur : « l’opération demandée nécessite un enregistrement actuel »   qui s’affiche, je ne sais pas pourquoi le programme ne détecte pas toujours le changement effectué sur la table prfinof dans la base. Parfois le programme complète l’exécution correctement et parfois il se bloque. ‘’’

     …

1 réponse

erefdatacomputing Messages postés 165 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 24 avril 2018
27 mai 2006 à 23:53
pour eviter ce genre de pb, personnellement, je 'close' le recordset , et je le ré-ouvre !!
Car après un 'Delete' ou un 'AddNew' il se peut effectivement que le programme perdre le 'fil' de 'AbsolutePosition'.

Comprend vite mais il faut lui expliquer longtemp et tout en détail !!!
0
Rejoignez-nous