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

Alimenter une table en incrémentant une variable +0.01

6 réponses
Avatar
domivax
Bonjour =E0 tous,

J'ai deux TextBox (MonTextBox1 & MonTextBox2) avec deux variables qui
seront toujours deux nombres =E0 deux d=E9cimales

236.92
237.05 par exemple

Comment vider MaTable (seulement un champ) et l'alimenter avec ces
deux nombres + tous les autres qui sont entre.

236.92
236.93
236.94
236.95
236.96
236.97
236.98
236.99
237.00
237.01
237.02
237.03
237.04
237.05


Merci pour votre aide.
A bient=F4t.
Xavier

6 réponses

Avatar
Fabien
Bonjour à tous,

J'ai deux TextBox (MonTextBox1 & MonTextBox2) avec deux variables qui
seront toujours deux nombres à deux décimales

236.92
237.05 par exemple

Comment vider MaTable (seulement un champ) et l'alimenter avec ces
deux nombres + tous les autres qui sont entre.

236.92
236.93
236.94
236.95
236.96
236.97
236.98
236.99
237.00
237.01
237.02
237.03
237.04
237.05


Merci pour votre aide.
A bientôt.
Xavier
Bonjour,

Pour ce qui est de remplir la table

Dim i as double
I=me.valdeb


Pour Vider il faudrait savoir sur quels critére tu selectionne les
enregistrements a mettre à jour.


Dim Rst as dao.Recordset
Dim I as Double
I=Me.Valdeb
currentdb.execute "UPDATE Matable SET matable.mavaleur = 0;" ' On vide
les valeurs existantes

Set Rst=currentdb.openrecordset("MaTable")
While Not rst.eof 'On parcourt le jeu d'enregistrements
If I<=Valfin then
'Tant que l'on est pas a la valeur max on met a jour les
enregistrements existants
With Rst do
.Edit
!Mavaleur = I
.Update
End
I=I+0.01
Else
'Sinon on sort
Rst.close
Set Rst=Nothing
Exit Sub
End if
Rst.MoveNext
Wend
Rst.close
Set Rst=Nothing
'Il reste des valeurs à attribuer !
While I<=Me.valFin
Currentdb.execute "INSERT INTO [MaTable] ( [Lavaleur] )
SELECT " & I &"AS exp;"

I=I+0.01
Wend


@ tester bien sur

Avatar
domivax
Bonjour Fabien et merci pour ta réponse,

J'ai retranscris ton code et voilà ce qui ce passe.

1) je ne comprends pas pourquoi il faudrait définir des critères pour
vider la table puisque je veux entièrement la vider ?
2) tu as mis With Rst do .... je pense qu'il faut enlever le "do"
3) bizarrement, Visual me dit "Compile error: Else without If" alors
que le If est bel et bien là
4) faire la fin du code j'ai un problème de syntaxe avec le SELECT " &
I &"AS exp;"

Merci pour ton aide.
Xavier
Avatar
Fabien
Bonjour Fabien et merci pour ta réponse,

J'ai retranscris ton code et voilà ce qui ce passe.

1) je ne comprends pas pourquoi il faudrait définir des critères pour
vider la table puisque je veux entièrement la vider ?
2) tu as mis With Rst do .... je pense qu'il faut enlever le "do"
3) bizarrement, Visual me dit "Compile error: Else without If" alors
que le If est bel et bien là
4) faire la fin du code j'ai un problème de syntaxe avec le SELECT " &
I &"AS exp;"

Merci pour ton aide.
Xavier
Salut Xavier,

A dire vrai j'ai tapé ce code a la volée rapidement hier sans trop le
relire ;-)
Donc
1) Ok c'était juste une question ;-)
2) effectivement le do est en trop
3) Enleve le with end et Change les lignes suivante en
Rst.Edit
Rst("Mavaleur")=I
Rst.Update
4) Essai avec la syntaxe " value (" & I & ");" bien que l'erreur
viendrais me semble t il d'un espace manquant dans
I & "AS exp;"
Doit être
I & " As Exp;"
Voila
à+

Avatar
domivax
Bonjour Fabien,

Ca joue parfaitement merci beaucoup.

Voilà le code final :

Dim Rst As dao.Recordset
Dim I As Double
I = Me.MonTextBoxMinimum


CurrentDb.Execute "UPDATE MaTable SET MaTable.MonChamp = 0;"

Set Rst = CurrentDb.OpenRecordset("MaTable ")
While Not Rst.EOF

If I <= MonTextBoxMaximum Then

Rst.Edit
Rst("MonChamp ") = I
Rst.Update

I = I + 0.01
Else

Rst.Close
Set Rst = Nothing
Exit Sub

End If

Rst.MoveNext

Wend
Rst.Close
Set Rst = Nothing

While I <= Me.MonTextBoxMaximum
CurrentDb.Execute "INSERT INTO [MaTable] ( [MonChamp] ) SELECT " &
I & " AS exp;"

I = I + 0.01
Wend


Bonne journée :-)
Xavier
Avatar
Fabien
Bonjour Fabien,

Ca joue parfaitement merci beaucoup.

Voilà le code final :

Dim Rst As dao.Recordset
Dim I As Double
I = Me.MonTextBoxMinimum


CurrentDb.Execute "UPDATE MaTable SET MaTable.MonChamp = 0;"

Set Rst = CurrentDb.OpenRecordset("MaTable ")
While Not Rst.EOF

If I <= MonTextBoxMaximum Then

Rst.Edit
Rst("MonChamp ") = I
Rst.Update

I = I + 0.01
Else

Rst.Close
Set Rst = Nothing
Exit Sub

End If

Rst.MoveNext

Wend
Rst.Close
Set Rst = Nothing

While I <= Me.MonTextBoxMaximum
CurrentDb.Execute "INSERT INTO [MaTable] ( [MonChamp] ) SELECT " &
I & " AS exp;"

I = I + 0.01
Wend


Bonne journée :-)
Xavier
Derniére petite question : on fait quoi s'il y a moins de valeurs a

enregistrer que d'enregistrements dans la table ?
If I <= MonTextBoxMaximum Then

Rst.Edit
Rst("MonChamp ") = I
Rst.Update

I = I + 0.01
Else

Rst.Close
Set Rst = Nothing
ICI Y'aurait pas quelque chose a faire du genre

Currentdb.execute "delete * from Matable where MonChamp=0;"
Exit Sub

End If


Avatar
domivax
Salut Fabien,

Tu as effectivement raison, le début de ton code écrase les anciennes
données alors que je voulais que la table se vide.
Pendant mes test le nombre de nouveaux enregistrementx correspondait
avec le nombre d'enregistrements écrasés mais des fois je me trouvait
avec un ou deux enregistrements avec la valeur 0 qui n'avaient rien à
faire dans ma table.

Il m'a suffit de remplacer

CurrentDb.Execute "UPDATE MaTable SET MaTable.MonChamp = 0;"

par

DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE TableIVAAmount.* FROM TableIVAAmount;"
DoCmd.SetWarnings True

et le tour est joué.

Merci beaucoup pour ton aide.
A bientôt
Xavier