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

Variable Dim Number(9999999999) As Long

1 réponse
Avatar
mymoi
Bonjour,

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

Merci de votre aide

1 réponse

Avatar
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