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.
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.
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.
-----Message d'origine-----
Bonjour
Le problème c'est que tu dois identifié le changement
savoir quand tu dois supprimer les enregistrement ou
Voilà en gros comment je procèderais :
Dim rst As Recordset
Dim rstAll As Recordset
Set rst = CurrentDb.OpenRecordset("SELECT 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
23d7301c45f5b$40e9e6f0$
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
.
-----Message d'origine-----
Bonjour
Le problème c'est que tu dois identifié le changement
savoir quand tu dois supprimer les enregistrement ou
Voilà en gros comment je procèderais :
Dim rst As Recordset
Dim rstAll As Recordset
Set rst = CurrentDb.OpenRecordset("SELECT 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
23d7301c45f5b$40e9e6f0$a601280a@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
Merci de votre aide
.
-----Message d'origine-----
Bonjour
Le problème c'est que tu dois identifié le changement
savoir quand tu dois supprimer les enregistrement ou
Voilà en gros comment je procèderais :
Dim rst As Recordset
Dim rstAll As Recordset
Set rst = CurrentDb.OpenRecordset("SELECT 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
23d7301c45f5b$40e9e6f0$
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
.
Dim rst As Recordset
Dim rstAll As Recordset
Set rst = CurrentDb.OpenRecordset("SELECT 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
-----Message d'origine-----
Bonjour
Le problème c'est que tu dois identifié le changement
savoir quand tu dois supprimer les enregistrement ou
Voilà en gros comment je procèderais :
Dim rst As Recordset
Dim rstAll As Recordset
Set rst = CurrentDb.OpenRecordset("SELECT 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
23d7301c45f5b$40e9e6f0$
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
.
Dim rst As Recordset
Dim rstAll As Recordset
Set rst = CurrentDb.OpenRecordset("SELECT 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
-----Message d'origine-----
Bonjour
Le problème c'est que tu dois identifié le changement
savoir quand tu dois supprimer les enregistrement ou
Voilà en gros comment je procèderais :
Dim rst As Recordset
Dim rstAll As Recordset
Set rst = CurrentDb.OpenRecordset("SELECT 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
23d7301c45f5b$40e9e6f0$a601280a@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
Merci de votre aide
.
Dim rst As Recordset
Dim rstAll As Recordset
Set rst = CurrentDb.OpenRecordset("SELECT 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
-----Message d'origine-----
Bonjour
Le problème c'est que tu dois identifié le changement
savoir quand tu dois supprimer les enregistrement ou
Voilà en gros comment je procèderais :
Dim rst As Recordset
Dim rstAll As Recordset
Set rst = CurrentDb.OpenRecordset("SELECT 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
23d7301c45f5b$40e9e6f0$
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
.
-----Message d'origine-----
Ok
Alors :Dim rst As Recordset
Dim rstAll As Recordset
Là on déclare les 2 variables RecordsetSet rst = CurrentDb.OpenRecordset("SELECT Etudiant
FROM TaTable GROUP BY Etudiant;")
Ouverture du premier recordset, qui représentre le nombre
fait il faut mettre le SQL qui représente la sélection et
l'identifiant de l'étudiant (ici c'est "Etudiant")With rst
If Not .BOF Then
.MoveFirst
Là s'il y a des enregistrement on se positionne sur le
Do Until .EOF
Set rstAll = CurrentDb.OpenRecordset( _
"Select * from TaTable Where
& .Fields("Etudiant") & "';")
Là, on ouvre le recordset représentant tous les
que l'on est en train de traitéWith rstAll
.Move 15
Là on saute les 15 premiers enregistrementsDo Until .EOF
.Delete
.MoveNext
Loop
.Close: Set rstAll = Nothing
Ici, on supprime tous les enregistrements qui sont après
premiersEnd With
.MoveNext
Là on passe à l'étudiant suivant et on refait toute la
de suppression des enregistrements au delà des 15 premiersLoop
.Close: Set rst = Nothing
End If
End With
Fermeture des recordset et libération des variables...
C'est bon ???
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
a écrit dans le
23fe401c45f79$4c259730$
Peux tu me détaillé un ce code.
Merci-----Message d'origine-----
Bonjour
Le problème c'est que tu dois identifié le changement
d'étudiant poursavoir 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:23d7301c45f5b$40e9e6f0$
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
.
.
-----Message d'origine-----
Ok
Alors :
Dim rst As Recordset
Dim rstAll As Recordset
Là on déclare les 2 variables Recordset
Set rst = CurrentDb.OpenRecordset("SELECT Etudiant
FROM TaTable GROUP BY Etudiant;")
Ouverture du premier recordset, qui représentre le nombre
fait il faut mettre le SQL qui représente la sélection et
l'identifiant de l'étudiant (ici c'est "Etudiant")
With rst
If Not .BOF Then
.MoveFirst
Là s'il y a des enregistrement on se positionne sur le
Do Until .EOF
Set rstAll = CurrentDb.OpenRecordset( _
"Select * from TaTable Where
& .Fields("Etudiant") & "';")
Là, on ouvre le recordset représentant tous les
que l'on est en train de traité
With rstAll
.Move 15
Là on saute les 15 premiers enregistrements
Do Until .EOF
.Delete
.MoveNext
Loop
.Close: Set rstAll = Nothing
Ici, on supprime tous les enregistrements qui sont après
premiers
End With
.MoveNext
Là on passe à l'étudiant suivant et on refait toute la
de suppression des enregistrements au delà des 15 premiers
Loop
.Close: Set rst = Nothing
End If
End With
Fermeture des recordset et libération des variables...
C'est bon ???
@+
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/
------------------------------------
<anonymous@discussions.microsoft.com> a écrit dans le
23fe401c45f79$4c259730$a601280a@phx.gbl...
Peux tu me détaillé un ce code.
Merci
-----Message d'origine-----
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:
23d7301c45f5b$40e9e6f0$a601280a@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
Merci de votre aide
.
.
-----Message d'origine-----
Ok
Alors :Dim rst As Recordset
Dim rstAll As Recordset
Là on déclare les 2 variables RecordsetSet rst = CurrentDb.OpenRecordset("SELECT Etudiant
FROM TaTable GROUP BY Etudiant;")
Ouverture du premier recordset, qui représentre le nombre
fait il faut mettre le SQL qui représente la sélection et
l'identifiant de l'étudiant (ici c'est "Etudiant")With rst
If Not .BOF Then
.MoveFirst
Là s'il y a des enregistrement on se positionne sur le
Do Until .EOF
Set rstAll = CurrentDb.OpenRecordset( _
"Select * from TaTable Where
& .Fields("Etudiant") & "';")
Là, on ouvre le recordset représentant tous les
que l'on est en train de traitéWith rstAll
.Move 15
Là on saute les 15 premiers enregistrementsDo Until .EOF
.Delete
.MoveNext
Loop
.Close: Set rstAll = Nothing
Ici, on supprime tous les enregistrements qui sont après
premiersEnd With
.MoveNext
Là on passe à l'étudiant suivant et on refait toute la
de suppression des enregistrements au delà des 15 premiersLoop
.Close: Set rst = Nothing
End If
End With
Fermeture des recordset et libération des variables...
C'est bon ???
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
a écrit dans le
23fe401c45f79$4c259730$
Peux tu me détaillé un ce code.
Merci-----Message d'origine-----
Bonjour
Le problème c'est que tu dois identifié le changement
d'étudiant poursavoir 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:23d7301c45f5b$40e9e6f0$
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
.
.