Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

PB type incompatible - 159 eme passage

5 réponses
Avatar
Jean
Bonjour

Est-ce que 159 est un nombre particulier ?
Je m'explique j'ai une boucle qui effectue un traitement=20
sur une table, et au bout du 159eme passage ca plante, et=20
ce m=EAme en changeant les donn=E9es =E0 traiter.

Merci d'avance

Jean

5 réponses

Avatar
Jean
Merci pour vos réponses, mais en fait si je change mes
données (suppress de lignes ou autres), le pb apparait
encore à la 159eme itération, et les champs en question
n'ont pas de valeur null justement.

-----Message d'origine-----
Bonjour

Il y a de forte chance que l'enregistrement 159
contienne dans un

champ une valeur Null et c'est de la que doit venir le
problème


Faudrait avoir ton code pour t'en dire plus mais je
pense que ça doit être

ça...

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Jean" a écrit dans le
message news:

08f901c34aaa$a0ae7770$
Bonjour

Est-ce que 159 est un nombre particulier ?
Je m'explique j'ai une boucle qui effectue un traitement
sur une table, et au bout du 159eme passage ca plante, et
ce même en changeant les données à traiter.

Merci d'avance

Jean


.



Avatar
joyeux atchoum
sl't

D'après mes recherches,

159 donne en binaire 1001 1111
159 = 3 * 53
53 est 1 nombre premier
53 base 10 = 110 101 base 2

Ce qui me fait fortement penser que 159 n'est pas 1 nombre particulier :)


tu t'en serais rendu compte facilement si tu avais pris de suite en
considération l'age du capitaine, la variance de T° sur tout le
territoire français sans oublier les belges, suises,...


mais regarde quelle est la difference entre le l'enregistrement 158 159
et 160

as tu essayé de faire ta boucle en exluant cet enregistrement
ainsi tu pourras voir quel autre enregistrement est recalcitrant et
voir plus facilement quel est le pb contenu dans les dits
enregistrements

En gros.. mon post ne 'a pas servi à grand chose...


je te soutiens dans l'inutilité des posts


ja;)
qui passa par là, qui voulait perdre du temps car ne sais toujours pas
faire de graphique croisé dynamique :=)

Avatar
Jean
Oui merci, je veux bien mais c'est assez long :


Private Sub Commande15_Click()

Dim RepMsg
Dim NbApp, NbClient As Integer
RepMsg = MsgBox("Souhaitez-vous lancer la validation
mensuelle maintenant ?", 4)
If RepMsg = 6 Then
'Ouverture de la base
Dim dbscurrent As Database
Set dbscurrent = OpenDatabase(CurrentDb.Name)

'a faire ici requetes de mises à jour

'Déclaration des variables
Dim ValOpr, RetCherche, ResTmp, ValOprTmp
Dim OprPrec As Double
Dim OprPrecTmp As Double
Dim OptPrec As String
Dim bool_calc As Boolean
Dim NbLigneMAJ As Integer

'Récupération des bornes des dates
Dim qdfLimDate As QueryDef
Dim rstLimDate As Recordset
Set qdfLimDate = dbscurrent.CreateQueryDef("")
qdfLimDate.SQL = "SELECT [Date début mois], [Date
fin mois] FROM [Table des paramètres du mois] WHERE
[Impress] <> 0"
Set rstLimDate = qdfLimDate.OpenRecordset()
'Dim DateDeb, DateFin As Date
Dim Mois_Valid As Integer
With rstLimDate
'DateDeb = ![Date début mois]
'DateFin = ![Date fin mois]
Mois_Valid = Month(![Date début mois])
End With
rstLimDate.Close
qdfLimDate.Close
Set rstLimDate = Nothing
Set qdfLimDate = Nothing

'Requete des formules
Dim qdfformule As QueryDef
Set qdfformule = dbscurrent.CreateQueryDef("")
qdfformule.SQL = "SELECT * FROM [data warehouse -
Liste Formules] WHERE [Calcul] = -1;"
Dim rstformule
Set rstformule = qdfformule.OpenRecordset()
With rstformule
Do While Not .EOF
NbLigneMAJ = 0
'Requete du DW
Dim qdfdw As QueryDef
Set qdfdw = dbscurrent.CreateQueryDef("")
'qdfdw.SQL = "SELECT * FROM [data
warehouse] WHERE [date de création] > #" & Format(!
[DateEffet], "dd/mm/yyyy") & "# AND [date de création] >
#" & Format(DateDeb, "dd/mm/yyyy") & "# AND [date de
création] < #" & Format(DateFin, "dd/mm/yyyy") & "#;"
qdfdw.SQL = "SELECT * FROM [data
warehouse] WHERE [mois] = " & Mois_Valid & ";"
Dim rstdw As Recordset
Set rstdw = qdfdw.OpenRecordset()
With rstdw
Do While Not .EOF
bool_calc = True
OprPrec = 0
'Requete des lignes de calcul
(avec appel récursif pour les conditions)
Dim qdfcalcul As QueryDef
Set qdfcalcul =
dbscurrent.CreateQueryDef("")
qdfcalcul.SQL = "SELECT * FROM
[data warehouse - Calculs formules] WHERE [NumFormule]
= " & rstformule![NumFormule] & ";"
Dim rstcalcul As Recordset
Set rstcalcul =
qdfcalcul.OpenRecordset()
With rstcalcul
Do While Not .EOF
'on prend la valeur de
l'opérande ou la valeur du champ dont le nom est dans
opérande
If (![OprIsChp] = "O")
Then
ValOpr = rstdw.Fields
(![Operande])
Else
ValOpr = ![Operande]
End If

'on teste s'il y a des
conditions sur la ligne de calcul sur laquelle on est
If (![IndCond] = "O") Then
ValOprTmp = ValOpr
RetCherche =
ChercheCondImbr(![NumFormule] & "L" & ![NumLigne],
ValOprTmp, dbscurrent, rstdw, "", "")
If IsNumeric
(RetCherche) Then
'elle renvoit
numérique, on met en tant qu'opérande
RetCherche =
Replace(RetCherche, ",", ".")
ValOpr =
RetCherche
Else
'elle renvoit du
texte, si c vrai on fait calcul, sinon non
If RetCherche
= "Faux" Then
bool_calc =
False
End If
End If
End If
'CALCUL
If (![NumLigne] <> 1) Then
If bool_calc = True
Then
ValOpr = Replace
(ValOpr, ",", ".")
'MsgBox "opération
: " & CDbl(ValOpr) & OptPrec & OprPrec
OprPrec =
EffectuerOpération(CDbl(ValOpr), OprPrec, OptPrec)
OprPrec = Replace
(OprPrec, ",", ".")
End If
If (![Operateur]
<> "") Then
OptPrec = !
[Operateur]
End If
Else
ValOpr = Replace
(ValOpr, ",", ".")
OprPrec = CDbl(ValOpr)
OptPrec = ![Operateur]
End If
.MoveNext
Loop
End With
If (bool_calc = True) Then
'condition sur résultat final
If (rstformule![IndCond]
= "O") Then
OprPrecTmp = OprPrec
ResTmp = ChercheCondImbr
("R" & rstformule![NumFormule], OprPrecTmp, dbscurrent,
rstdw, "", "")
ResTmp = Replace
(ResTmp, ",", ".")
'MsgBox "avant erreur : "
& ResTmp & " et ref : " & rstdw![référence de l'opération]

dbscurrent.Execute "insert into [debug]([ref]) VALUES ('"
& rstdw![référence de l'opération] & "');"

'LA LIGNE RENVOYE PAR LE DEBOGGUEUR EST CELLE CI :
OprPrec = CDbl(ResTmp)


End If
OprPrec = Arrondi(OprPrec, 2)
'update du résultat
rstdw.Edit
rstdw.Fields(rstformule!
[NomChpRes]) = OprPrec
rstdw.Update
NbLigneMAJ = NbLigneMAJ + 1
End If
'fermeture et libération espace
mémoire
rstcalcul.Close
qdfcalcul.Close
Set rstcalcul = Nothing
Set qdfcalcul = Nothing
.MoveNext
Loop
End With
'fermeture et libération espace mémoire
'MsgBox "" & NbLigneMAJ & " lignes mises
à jour !"
rstdw.Close
qdfdw.Close
Set rstdw = Nothing
Set qdfdw = Nothing
.MoveNext
Loop
End With
'fermeture et libération espace mémoire
rstformule.Close
qdfformule.Close
dbscurrent.Close
Set dbscurrent = Nothing
Set qdfformule = Nothing
Set rstformule = Nothing

MsgBox "fin"
End If

End Sub


Sinon il y a deux autres fonctions fait maison appelées
dans ce code mais je ne pense pas que ce soit utile

Merci beaucoup !

-----Message d'origine-----
Ah !!!!!

Peux-tu nous donner ton code histoire de voir de plus
près ce

qu'il en est...

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------


Avatar
Jean
Petite précision supplémentaire, mais qui ajoute du flou,
sur ma machine ca passe très bien (Access 97, WinXP)
c'est sur une autre machine que le problème survient
(Access 97, WinNT, mais mêmes param régionaux pour les
dates et les nums)

Merci encore

-----Message d'origine-----
Ah !!!!!

Peux-tu nous donner ton code histoire de voir de plus
près ce

qu'il en est...

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Jean" a écrit dans le
message news:

07a001c34aae$a25c51b0$
Merci pour vos réponses, mais en fait si je change mes
données (suppress de lignes ou autres), le pb apparait
encore à la 159eme itération, et les champs en question
n'ont pas de valeur null justement.

-----Message d'origine-----
Bonjour

Il y a de forte chance que l'enregistrement 159
contienne dans un

champ une valeur Null et c'est de la que doit venir le
problème


Faudrait avoir ton code pour t'en dire plus mais je
pense que ça doit être

ça...

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Jean" a écrit dans le
message news:

08f901c34aaa$a0ae7770$
Bonjour

Est-ce que 159 est un nombre particulier ?
Je m'explique j'ai une boucle qui effectue un traitement
sur une table, et au bout du 159eme passage ca plante,
et


ce même en changeant les données à traiter.

Merci d'avance

Jean


.




.




Avatar
jean
Je te remercie beaucoup.
Je t'ai envoyé tout à l'heure un extrait de base à
l'adresse sous ta signature.
Merci encore

-----Message d'origine-----
Effectivement c'est long... ;-))

Bon j'ai refait un peu à mon goût ton code mais le pb
est que je ne peux pas

tester...

Peux-tu m'envoyer un bout de ta base en la zippant s'il
te plaît pour que je

puisse
tester ?

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Jean" a écrit dans le
message news:

0a8501c34ab1$6bcc6510$
Oui merci, je veux bien mais c'est assez long :


Private Sub Commande15_Click()

Dim RepMsg
Dim NbApp, NbClient As Integer
RepMsg = MsgBox("Souhaitez-vous lancer la validation
mensuelle maintenant ?", 4)
If RepMsg = 6 Then
'Ouverture de la base
Dim dbscurrent As Database
Set dbscurrent = OpenDatabase(CurrentDb.Name)

'a faire ici requetes de mises à jour

'Déclaration des variables
Dim ValOpr, RetCherche, ResTmp, ValOprTmp
Dim OprPrec As Double
Dim OprPrecTmp As Double
Dim OptPrec As String
Dim bool_calc As Boolean
Dim NbLigneMAJ As Integer

'Récupération des bornes des dates
Dim qdfLimDate As QueryDef
Dim rstLimDate As Recordset
Set qdfLimDate = dbscurrent.CreateQueryDef("")
qdfLimDate.SQL = "SELECT [Date début mois], [Date
fin mois] FROM [Table des paramètres du mois] WHERE
[Impress] <> 0"
Set rstLimDate = qdfLimDate.OpenRecordset()
'Dim DateDeb, DateFin As Date
Dim Mois_Valid As Integer
With rstLimDate
'DateDeb = ![Date début mois]
'DateFin = ![Date fin mois]
Mois_Valid = Month(![Date début mois])
End With
rstLimDate.Close
qdfLimDate.Close
Set rstLimDate = Nothing
Set qdfLimDate = Nothing

'Requete des formules
Dim qdfformule As QueryDef
Set qdfformule = dbscurrent.CreateQueryDef("")
qdfformule.SQL = "SELECT * FROM [data warehouse -
Liste Formules] WHERE [Calcul] = -1;"
Dim rstformule
Set rstformule = qdfformule.OpenRecordset()
With rstformule
Do While Not .EOF
NbLigneMAJ = 0
'Requete du DW
Dim qdfdw As QueryDef
Set qdfdw = dbscurrent.CreateQueryDef("")
'qdfdw.SQL = "SELECT * FROM [data
warehouse] WHERE [date de création] > #" & Format(!
[DateEffet], "dd/mm/yyyy") & "# AND [date de création] >
#" & Format(DateDeb, "dd/mm/yyyy") & "# AND [date de
création] < #" & Format(DateFin, "dd/mm/yyyy") & "#;"
qdfdw.SQL = "SELECT * FROM [data
warehouse] WHERE [mois] = " & Mois_Valid & ";"
Dim rstdw As Recordset
Set rstdw = qdfdw.OpenRecordset()
With rstdw
Do While Not .EOF
bool_calc = True
OprPrec = 0
'Requete des lignes de calcul
(avec appel récursif pour les conditions)
Dim qdfcalcul As QueryDef
Set qdfcalcul =
dbscurrent.CreateQueryDef("")
qdfcalcul.SQL = "SELECT * FROM
[data warehouse - Calculs formules] WHERE [NumFormule]
= " & rstformule![NumFormule] & ";"
Dim rstcalcul As Recordset
Set rstcalcul =
qdfcalcul.OpenRecordset()
With rstcalcul
Do While Not .EOF
'on prend la valeur de
l'opérande ou la valeur du champ dont le nom est dans
opérande
If (![OprIsChp] = "O")
Then
ValOpr = rstdw.Fields
(![Operande])
Else
ValOpr = ![Operande]
End If

'on teste s'il y a des
conditions sur la ligne de calcul sur laquelle on est
If (![IndCond] = "O")
Then

ValOprTmp = ValOpr
RetCherche =
ChercheCondImbr(![NumFormule] & "L" & ![NumLigne],
ValOprTmp, dbscurrent, rstdw, "", "")
If IsNumeric
(RetCherche) Then
'elle renvoit
numérique, on met en tant qu'opérande
RetCherche =
Replace(RetCherche, ",", ".")
ValOpr =
RetCherche
Else
'elle renvoit du
texte, si c vrai on fait calcul, sinon non
If RetCherche
= "Faux" Then
bool_calc =
False
End If
End If
End If
'CALCUL
If (![NumLigne] <> 1)
Then

If bool_calc = True
Then
ValOpr = Replace
(ValOpr, ",", ".")
'MsgBox "opératio
n

: " & CDbl(ValOpr) & OptPrec & OprPrec
OprPrec =
EffectuerOpération(CDbl(ValOpr), OprPrec, OptPrec)
OprPrec = Replace
(OprPrec, ",", ".")
End If
If (![Operateur]
<> "") Then
OptPrec = !
[Operateur]
End If
Else
ValOpr = Replace
(ValOpr, ",", ".")
OprPrec = CDbl
(ValOpr)

OptPrec = !
[Operateur]

End If
.MoveNext
Loop
End With
If (bool_calc = True) Then
'condition sur résultat final
If (rstformule![IndCond]
= "O") Then
OprPrecTmp = OprPrec
ResTmp = ChercheCondImbr
("R" & rstformule![NumFormule], OprPrecTmp, dbscurrent,
rstdw, "", "")
ResTmp = Replace
(ResTmp, ",", ".")
'MsgBox "avant erreur : "
& ResTmp & " et ref : " & rstdw![référence de
l'opération]


dbscurrent.Execute "insert into [debug]([ref]) VALUES ('"
& rstdw![référence de l'opération] & "');"

'LA LIGNE RENVOYE PAR LE DEBOGGUEUR EST CELLE CI :
OprPrec = CDbl(ResTmp)


End If
OprPrec = Arrondi(OprPrec, 2)
'update du résultat
rstdw.Edit
rstdw.Fields(rstformule!
[NomChpRes]) = OprPrec
rstdw.Update
NbLigneMAJ = NbLigneMAJ + 1
End If
'fermeture et libération espace
mémoire
rstcalcul.Close
qdfcalcul.Close
Set rstcalcul = Nothing
Set qdfcalcul = Nothing
.MoveNext
Loop
End With
'fermeture et libération espace mémoire
'MsgBox "" & NbLigneMAJ & " lignes mises
à jour !"
rstdw.Close
qdfdw.Close
Set rstdw = Nothing
Set qdfdw = Nothing
.MoveNext
Loop
End With
'fermeture et libération espace mémoire
rstformule.Close
qdfformule.Close
dbscurrent.Close
Set dbscurrent = Nothing
Set qdfformule = Nothing
Set rstformule = Nothing

MsgBox "fin"
End If

End Sub


Sinon il y a deux autres fonctions fait maison appelées
dans ce code mais je ne pense pas que ce soit utile

Merci beaucoup !

-----Message d'origine-----
Ah !!!!!

Peux-tu nous donner ton code histoire de voir de plus
près ce

qu'il en est...

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------




.