Comment faire j'ai une table "etudiant" et la valeur max=20
de cette table est de 9999999007, je souhaite garder que=20
les 15 premi=E8res lignes de chaque etudiants, un =E9tudiant=20
peux avoir jusqu'a 150 lignes dans cette table.
Quand je fais =E7a j'ai un message d'erreur memoire=20
insuffisante.
Dim Number(9999999999) As Long
Mon code:
Dim Matab1 As Recordset
Dim Number(9999999999) As Long=20
Dim Matab As Recordset
Set Matab =3D CurrentDb.OpenRecordset("SELECT=20
tempo_dmi_A1.Al_Num, tempo_dmi_A1.Al_nopat,=20
tempo_dmi_A1.Al_nofic FROM tempo_dmi_A1;")
If Not Matab.BOF Then
Matab.MoveFirst
While Not Matab.EOF
Number(Matab!Al_nopat) =3D Number(Matab!
Al_nopat) + 1
If Number(Matab!Al_nopat) > 15 Then
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE * FROM Tempo_dmi_A1=20
WHERE (((Tempo_dmi_A1.Al_Num)=3D" & Matab!Al_num & ") AND=20
((Tempo_dmi_A1.Al_nopat)=3D" & Matab!Al_nopat & "));"
DoCmd.SetWarnings True
End If
Matab.MoveNext
Wend
End If
Matab.Close
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jessy Sempere [MVP]
Bonjour
Le problème c'est que tu dois identifié le changement d'étudiant pour savoir quand tu dois supprimer les enregistrement ou non ???
Voilà en gros comment je procèderais :
Dim rst As Recordset Dim rstAll As Recordset
Set rst = CurrentDb.OpenRecordset("SELECT Etudiant FROM TaTable GROUP BY Etudiant;") With rst If Not .BOF Then .MoveFirst Do Until .EOF Set rstAll = CurrentDb.OpenRecordset( _ "Select * from TaTable Where Etudiant = '" _ & .Fields("Etudiant") & "';") With rstAll .Move 15 Do Until .EOF .Delete .MoveNext Loop .Close: Set rstAll = Nothing End With .MoveNext Loop .Close: Set rst = Nothing End If End With
-- @+ Jessy Sempere - Access MVP
------------------------------------ Site @ccess : http://access.jessy.free.fr/ Pour l'efficacité de tous : http://users.skynet.be/mpfa/ ------------------------------------ "mymoi" a écrit dans le message news: 246b801c45f64$9634fd80$ Bonjour,
Comment faire j'ai une table "etudiant" et la valeur max de cette table est de 9999999007, je souhaite garder que les 15 premières lignes de chaque etudiants, un étudiant peux avoir jusqu'a 150 lignes dans cette table.
Quand je fais ça j'ai un message d'erreur memoire insuffisante. Dim Number(9999999999) As Long
Mon code:
Dim Matab1 As Recordset Dim Number(9999999999) As Long Dim Matab As Recordset Set Matab = CurrentDb.OpenRecordset("SELECT tempo_dmi_A1.Al_Num, tempo_dmi_A1.Al_nopat, tempo_dmi_A1.Al_nofic FROM tempo_dmi_A1;") If Not Matab.BOF Then Matab.MoveFirst While Not Matab.EOF Number(Matab!Al_nopat) = Number(Matab! Al_nopat) + 1 If Number(Matab!Al_nopat) > 15 Then DoCmd.SetWarnings False DoCmd.RunSQL "DELETE * FROM Tempo_dmi_A1 WHERE (((Tempo_dmi_A1.Al_Num)=" & Matab!Al_num & ") AND ((Tempo_dmi_A1.Al_nopat)=" & Matab!Al_nopat & "));" DoCmd.SetWarnings True End If Matab.MoveNext Wend End If Matab.Close
Merci de votre aide
Bonjour
Le problème c'est que tu dois identifié le changement d'étudiant pour
savoir quand tu dois supprimer les enregistrement ou non ???
Voilà en gros comment je procèderais :
Dim rst As Recordset
Dim rstAll As Recordset
Set rst = CurrentDb.OpenRecordset("SELECT Etudiant FROM TaTable GROUP BY Etudiant;")
With rst
If Not .BOF Then
.MoveFirst
Do Until .EOF
Set rstAll = CurrentDb.OpenRecordset( _
"Select * from TaTable Where Etudiant = '" _
& .Fields("Etudiant") & "';")
With rstAll
.Move 15
Do Until .EOF
.Delete
.MoveNext
Loop
.Close: Set rstAll = Nothing
End With
.MoveNext
Loop
.Close: Set rst = Nothing
End If
End With
--
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"mymoi" <anonymous@discussions.microsoft.com> a écrit dans le message news:
246b801c45f64$9634fd80$a401280a@phx.gbl...
Bonjour,
Comment faire j'ai une table "etudiant" et la valeur max
de cette table est de 9999999007, je souhaite garder que
les 15 premières lignes de chaque etudiants, un étudiant
peux avoir jusqu'a 150 lignes dans cette table.
Quand je fais ça j'ai un message d'erreur memoire
insuffisante.
Dim Number(9999999999) As Long
Mon code:
Dim Matab1 As Recordset
Dim Number(9999999999) As Long
Dim Matab As Recordset
Set Matab = CurrentDb.OpenRecordset("SELECT
tempo_dmi_A1.Al_Num, tempo_dmi_A1.Al_nopat,
tempo_dmi_A1.Al_nofic FROM tempo_dmi_A1;")
If Not Matab.BOF Then
Matab.MoveFirst
While Not Matab.EOF
Number(Matab!Al_nopat) = Number(Matab!
Al_nopat) + 1
If Number(Matab!Al_nopat) > 15 Then
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE * FROM Tempo_dmi_A1
WHERE (((Tempo_dmi_A1.Al_Num)=" & Matab!Al_num & ") AND
((Tempo_dmi_A1.Al_nopat)=" & Matab!Al_nopat & "));"
DoCmd.SetWarnings True
End If
Matab.MoveNext
Wend
End If
Matab.Close
Le problème c'est que tu dois identifié le changement d'étudiant pour savoir quand tu dois supprimer les enregistrement ou non ???
Voilà en gros comment je procèderais :
Dim rst As Recordset Dim rstAll As Recordset
Set rst = CurrentDb.OpenRecordset("SELECT Etudiant FROM TaTable GROUP BY Etudiant;") With rst If Not .BOF Then .MoveFirst Do Until .EOF Set rstAll = CurrentDb.OpenRecordset( _ "Select * from TaTable Where Etudiant = '" _ & .Fields("Etudiant") & "';") With rstAll .Move 15 Do Until .EOF .Delete .MoveNext Loop .Close: Set rstAll = Nothing End With .MoveNext Loop .Close: Set rst = Nothing End If End With
-- @+ Jessy Sempere - Access MVP
------------------------------------ Site @ccess : http://access.jessy.free.fr/ Pour l'efficacité de tous : http://users.skynet.be/mpfa/ ------------------------------------ "mymoi" a écrit dans le message news: 246b801c45f64$9634fd80$ Bonjour,
Comment faire j'ai une table "etudiant" et la valeur max de cette table est de 9999999007, je souhaite garder que les 15 premières lignes de chaque etudiants, un étudiant peux avoir jusqu'a 150 lignes dans cette table.
Quand je fais ça j'ai un message d'erreur memoire insuffisante. Dim Number(9999999999) As Long
Mon code:
Dim Matab1 As Recordset Dim Number(9999999999) As Long Dim Matab As Recordset Set Matab = CurrentDb.OpenRecordset("SELECT tempo_dmi_A1.Al_Num, tempo_dmi_A1.Al_nopat, tempo_dmi_A1.Al_nofic FROM tempo_dmi_A1;") If Not Matab.BOF Then Matab.MoveFirst While Not Matab.EOF Number(Matab!Al_nopat) = Number(Matab! Al_nopat) + 1 If Number(Matab!Al_nopat) > 15 Then DoCmd.SetWarnings False DoCmd.RunSQL "DELETE * FROM Tempo_dmi_A1 WHERE (((Tempo_dmi_A1.Al_Num)=" & Matab!Al_num & ") AND ((Tempo_dmi_A1.Al_nopat)=" & Matab!Al_nopat & "));" DoCmd.SetWarnings True End If Matab.MoveNext Wend End If Matab.Close