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
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.
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;"
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
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
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;"
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
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 à+
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
à+
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 à+
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
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;"
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
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
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
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