J'ai une zone de liste dont la source de données est un Recordset.
Quand un enregistrement est sélectionné dans la zone de liste,
l'utilisateur a la possiblité dde l'effacer en appuyant sur la touche
"Del". Celle-ci active l'événement "Keydown" qui exécute l'intruction
"Delete" sur le Recordset.
Tout fonctionne tant que je me déplace dans la liste en cliquant sur des
enregistrements distincts. Mais, une fois un enregistrement effacé, si
je réappuie immédiatement sur "Del", l'instruction requery de la zone de
liste génère le message suivant :
"Erreur '2118'
Enregistrez le champs en cours avant d'exécuter l'action Actualiser.@"
et la zone de liste affiche un enregistrement dont chaque champs a pour
valeur "#Supprimé".
Ce problème ne se posant pas quand je me déplace dans la zone de liste,
j'ai essayé un "move" dans la table et un "close" de celle-ci avant le
"Requery" mais rien n'y change.
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
defluc
Voici ma source : Private Sub TerrNonBatiList_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode <> vbKeyDelete Or TerrNonBatiList.ListCount = 0 Then Exit Sub Dim Db As Database, Rst As Recordset Dim Rang As Integer Rang = TerrNonBatiList.ListIndex RefCadListe.RowSource = "" ProprioList.RowSource = "" RefCadListe.Requery ProprioList.Requery RefCadStrClef = TerrNonBatiList.Column(14, Rang) Set Db = CurrentDb Set Rst = Db.OpenRecordset("TableBienNonBati") Rst.MoveFirst Rst.Index = "RefCadStrClef" Rst.Seek "=", RefCadStrClef Rst.Delete Rst.Close Db.Close Set Db = Nothing Set Rst = Nothing TerrNonBatiList.Requery If Rang = TerrNonBatiList.ListCount - 1 Then Rang = Rang - 1 TerrNonBatiList.Selected(Rang) = True End Sub
Merci du suivi
Raymond a écrit:
Bonjour.
tu fais 2 fois Del sur le même enregistrement ? Quelle fonction tu utilises pour supprimer l'enregistrement ?
Voici ma source :
Private Sub TerrNonBatiList_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode <> vbKeyDelete Or TerrNonBatiList.ListCount = 0 Then Exit Sub
Dim Db As Database, Rst As Recordset
Dim Rang As Integer
Rang = TerrNonBatiList.ListIndex
RefCadListe.RowSource = ""
ProprioList.RowSource = ""
RefCadListe.Requery
ProprioList.Requery
RefCadStrClef = TerrNonBatiList.Column(14, Rang)
Set Db = CurrentDb
Set Rst = Db.OpenRecordset("TableBienNonBati")
Rst.MoveFirst
Rst.Index = "RefCadStrClef"
Rst.Seek "=", RefCadStrClef
Rst.Delete
Rst.Close
Db.Close
Set Db = Nothing
Set Rst = Nothing
TerrNonBatiList.Requery
If Rang = TerrNonBatiList.ListCount - 1 Then Rang = Rang - 1
TerrNonBatiList.Selected(Rang) = True
End Sub
Merci du suivi
Raymond a écrit:
Bonjour.
tu fais 2 fois Del sur le même enregistrement ?
Quelle fonction tu utilises pour supprimer l'enregistrement ?
Voici ma source : Private Sub TerrNonBatiList_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode <> vbKeyDelete Or TerrNonBatiList.ListCount = 0 Then Exit Sub Dim Db As Database, Rst As Recordset Dim Rang As Integer Rang = TerrNonBatiList.ListIndex RefCadListe.RowSource = "" ProprioList.RowSource = "" RefCadListe.Requery ProprioList.Requery RefCadStrClef = TerrNonBatiList.Column(14, Rang) Set Db = CurrentDb Set Rst = Db.OpenRecordset("TableBienNonBati") Rst.MoveFirst Rst.Index = "RefCadStrClef" Rst.Seek "=", RefCadStrClef Rst.Delete Rst.Close Db.Close Set Db = Nothing Set Rst = Nothing TerrNonBatiList.Requery If Rang = TerrNonBatiList.ListCount - 1 Then Rang = Rang - 1 TerrNonBatiList.Selected(Rang) = True End Sub
Merci du suivi
Raymond a écrit:
Bonjour.
tu fais 2 fois Del sur le même enregistrement ? Quelle fonction tu utilises pour supprimer l'enregistrement ?
Raymond
Bonjour.
tu fais 2 fois Del sur le même enregistrement ? Quelle fonction tu utilises pour supprimer l'enregistrement ? -- @+ Raymond Access MVP. http://access.seneque.free.fr/ http://users.skynet.be/mpfa/charte.htm pour une meilleure efficacité de tes interventions sur MPFA.
"defluc" a écrit dans le message de news:
J'ai une zone de liste dont la source de données est un Recordset. Quand un enregistrement est sélectionné dans la zone de liste, l'utilisateur a la possiblité dde l'effacer en appuyant sur la touche "Del". Celle-ci active l'événement "Keydown" qui exécute l'intruction "Delete" sur le Recordset. Tout fonctionne tant que je me déplace dans la liste en cliquant sur des enregistrements distincts. Mais, une fois un enregistrement effacé, si je réappuie immédiatement sur "Del", l'instruction requery de la zone de liste génère le message suivant : "Erreur '2118' Enregistrez le champs en cours avant d'exécuter l'action Actualiser.@" et la zone de liste affiche un enregistrement dont chaque champs a pour valeur "#Supprimé". Ce problème ne se posant pas quand je me déplace dans la zone de liste, j'ai essayé un "move" dans la table et un "close" de celle-ci avant le "Requery" mais rien n'y change.
Merci de m'éclairer
Bonjour.
tu fais 2 fois Del sur le même enregistrement ?
Quelle fonction tu utilises pour supprimer l'enregistrement ?
--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.
"defluc" <defluc@swing.be> a écrit dans le message de
news:3F668F2D.1020705@swing.be...
J'ai une zone de liste dont la source de données est un Recordset.
Quand un enregistrement est sélectionné dans la zone de liste,
l'utilisateur a la possiblité dde l'effacer en appuyant sur la touche
"Del". Celle-ci active l'événement "Keydown" qui exécute l'intruction
"Delete" sur le Recordset.
Tout fonctionne tant que je me déplace dans la liste en cliquant sur des
enregistrements distincts. Mais, une fois un enregistrement effacé, si
je réappuie immédiatement sur "Del", l'instruction requery de la zone de
liste génère le message suivant :
"Erreur '2118'
Enregistrez le champs en cours avant d'exécuter l'action Actualiser.@"
et la zone de liste affiche un enregistrement dont chaque champs a pour
valeur "#Supprimé".
Ce problème ne se posant pas quand je me déplace dans la zone de liste,
j'ai essayé un "move" dans la table et un "close" de celle-ci avant le
"Requery" mais rien n'y change.
tu fais 2 fois Del sur le même enregistrement ? Quelle fonction tu utilises pour supprimer l'enregistrement ? -- @+ Raymond Access MVP. http://access.seneque.free.fr/ http://users.skynet.be/mpfa/charte.htm pour une meilleure efficacité de tes interventions sur MPFA.
"defluc" a écrit dans le message de news:
J'ai une zone de liste dont la source de données est un Recordset. Quand un enregistrement est sélectionné dans la zone de liste, l'utilisateur a la possiblité dde l'effacer en appuyant sur la touche "Del". Celle-ci active l'événement "Keydown" qui exécute l'intruction "Delete" sur le Recordset. Tout fonctionne tant que je me déplace dans la liste en cliquant sur des enregistrements distincts. Mais, une fois un enregistrement effacé, si je réappuie immédiatement sur "Del", l'instruction requery de la zone de liste génère le message suivant : "Erreur '2118' Enregistrez le champs en cours avant d'exécuter l'action Actualiser.@" et la zone de liste affiche un enregistrement dont chaque champs a pour valeur "#Supprimé". Ce problème ne se posant pas quand je me déplace dans la zone de liste, j'ai essayé un "move" dans la table et un "close" de celle-ci avant le "Requery" mais rien n'y change.
Merci de m'éclairer
Raymond
Est-ce que tu as vu l'usine à gaz que tu as monté ? tu vas chercher la colonne 15 d'une combobox pour supprimer un champ dans une table qui n'a rien à voir avec ta combo, tu ne testes aucune condition d'erreur sur le seek et tu t'étonnes du résultat ? En aucun cas une suppression d'enregistrement ne doit intervenir sur l'événement d'une combo. Une suppression doit être testée et demander une confirmation par un msgbox à l'opérateur après affichage d'un minimum d'éléments significatifs.
-- @+ Raymond Access MVP. http://access.seneque.free.fr/ http://users.skynet.be/mpfa/charte.htm pour une meilleure efficacité de tes interventions sur MPFA.
"defluc" a écrit dans le message de news:
Voici ma source : Private Sub TerrNonBatiList_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode <> vbKeyDelete Or TerrNonBatiList.ListCount = 0 Then Exit Sub
Dim Db As Database, Rst As Recordset Dim Rang As Integer Rang = TerrNonBatiList.ListIndex RefCadListe.RowSource = "" ProprioList.RowSource = "" RefCadListe.Requery ProprioList.Requery RefCadStrClef = TerrNonBatiList.Column(14, Rang) Set Db = CurrentDb Set Rst = Db.OpenRecordset("TableBienNonBati") Rst.MoveFirst Rst.Index = "RefCadStrClef" Rst.Seek "=", RefCadStrClef Rst.Delete Rst.Close Db.Close Set Db = Nothing Set Rst = Nothing TerrNonBatiList.Requery If Rang = TerrNonBatiList.ListCount - 1 Then Rang = Rang - 1 TerrNonBatiList.Selected(Rang) = True End Sub
Est-ce que tu as vu l'usine à gaz que tu as monté ?
tu vas chercher la colonne 15 d'une combobox pour supprimer un champ dans
une table qui n'a rien à voir avec ta combo, tu ne testes aucune condition
d'erreur sur le seek et tu t'étonnes du résultat ?
En aucun cas une suppression d'enregistrement ne doit intervenir sur
l'événement d'une combo. Une suppression doit être testée et demander une
confirmation par un msgbox à l'opérateur après affichage d'un minimum
d'éléments significatifs.
--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.
"defluc" <defluc@swing.be> a écrit dans le message de
news:3F669633.6@swing.be...
Voici ma source :
Private Sub TerrNonBatiList_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode <> vbKeyDelete Or TerrNonBatiList.ListCount = 0 Then Exit
Sub
Dim Db As Database, Rst As Recordset
Dim Rang As Integer
Rang = TerrNonBatiList.ListIndex
RefCadListe.RowSource = ""
ProprioList.RowSource = ""
RefCadListe.Requery
ProprioList.Requery
RefCadStrClef = TerrNonBatiList.Column(14, Rang)
Set Db = CurrentDb
Set Rst = Db.OpenRecordset("TableBienNonBati")
Rst.MoveFirst
Rst.Index = "RefCadStrClef"
Rst.Seek "=", RefCadStrClef
Rst.Delete
Rst.Close
Db.Close
Set Db = Nothing
Set Rst = Nothing
TerrNonBatiList.Requery
If Rang = TerrNonBatiList.ListCount - 1 Then Rang = Rang - 1
TerrNonBatiList.Selected(Rang) = True
End Sub
Est-ce que tu as vu l'usine à gaz que tu as monté ? tu vas chercher la colonne 15 d'une combobox pour supprimer un champ dans une table qui n'a rien à voir avec ta combo, tu ne testes aucune condition d'erreur sur le seek et tu t'étonnes du résultat ? En aucun cas une suppression d'enregistrement ne doit intervenir sur l'événement d'une combo. Une suppression doit être testée et demander une confirmation par un msgbox à l'opérateur après affichage d'un minimum d'éléments significatifs.
-- @+ Raymond Access MVP. http://access.seneque.free.fr/ http://users.skynet.be/mpfa/charte.htm pour une meilleure efficacité de tes interventions sur MPFA.
"defluc" a écrit dans le message de news:
Voici ma source : Private Sub TerrNonBatiList_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode <> vbKeyDelete Or TerrNonBatiList.ListCount = 0 Then Exit Sub
Dim Db As Database, Rst As Recordset Dim Rang As Integer Rang = TerrNonBatiList.ListIndex RefCadListe.RowSource = "" ProprioList.RowSource = "" RefCadListe.Requery ProprioList.Requery RefCadStrClef = TerrNonBatiList.Column(14, Rang) Set Db = CurrentDb Set Rst = Db.OpenRecordset("TableBienNonBati") Rst.MoveFirst Rst.Index = "RefCadStrClef" Rst.Seek "=", RefCadStrClef Rst.Delete Rst.Close Db.Close Set Db = Nothing Set Rst = Nothing TerrNonBatiList.Requery If Rang = TerrNonBatiList.ListCount - 1 Then Rang = Rang - 1 TerrNonBatiList.Selected(Rang) = True End Sub
defluc
Quelle sévérité. Je n'ai pas envoyé tout le contenu de la source pour ne pas alourdir le message. Il est bien évident que la source de zone de liste est bien la table dans laquelle l'enregistrement sera effacé après une demande de confirmation. Je récupère la clé de l'enregistrement sélectionné dans la zone de liste, je demande confirmation, je me déplace sur l'enregistrement correspondant dans la table, j'efface l'enregistrement et je remets la liste à jour. Si ça c'est une usine à gaz où un marteau pour écraser une mouche alors quelle est la roue à eau ?
Salut Raymond a écrit:
Est-ce que tu as vu l'usine à gaz que tu as monté ? tu vas chercher la colonne 15 d'une combobox pour supprimer un champ dans une table qui n'a rien à voir avec ta combo, tu ne testes aucune condition d'erreur sur le seek et tu t'étonnes du résultat ? En aucun cas une suppression d'enregistrement ne doit intervenir sur l'événement d'une combo. Une suppression doit être testée et demander une confirmation par un msgbox à l'opérateur après affichage d'un minimum d'éléments significatifs.
Quelle sévérité. Je n'ai pas envoyé tout le contenu de la source pour ne
pas alourdir le message. Il est bien évident que la source de zone de
liste est bien la table dans laquelle l'enregistrement sera effacé après
une demande de confirmation.
Je récupère la clé de l'enregistrement sélectionné dans la zone de
liste, je demande confirmation, je me déplace sur l'enregistrement
correspondant dans la table, j'efface l'enregistrement et je remets la
liste à jour. Si ça c'est une usine à gaz où un marteau pour écraser une
mouche alors quelle est la roue à eau ?
Salut
Raymond a écrit:
Est-ce que tu as vu l'usine à gaz que tu as monté ?
tu vas chercher la colonne 15 d'une combobox pour supprimer un champ dans
une table qui n'a rien à voir avec ta combo, tu ne testes aucune condition
d'erreur sur le seek et tu t'étonnes du résultat ?
En aucun cas une suppression d'enregistrement ne doit intervenir sur
l'événement d'une combo. Une suppression doit être testée et demander une
confirmation par un msgbox à l'opérateur après affichage d'un minimum
d'éléments significatifs.
Quelle sévérité. Je n'ai pas envoyé tout le contenu de la source pour ne pas alourdir le message. Il est bien évident que la source de zone de liste est bien la table dans laquelle l'enregistrement sera effacé après une demande de confirmation. Je récupère la clé de l'enregistrement sélectionné dans la zone de liste, je demande confirmation, je me déplace sur l'enregistrement correspondant dans la table, j'efface l'enregistrement et je remets la liste à jour. Si ça c'est une usine à gaz où un marteau pour écraser une mouche alors quelle est la roue à eau ?
Salut Raymond a écrit:
Est-ce que tu as vu l'usine à gaz que tu as monté ? tu vas chercher la colonne 15 d'une combobox pour supprimer un champ dans une table qui n'a rien à voir avec ta combo, tu ne testes aucune condition d'erreur sur le seek et tu t'étonnes du résultat ? En aucun cas une suppression d'enregistrement ne doit intervenir sur l'événement d'une combo. Une suppression doit être testée et demander une confirmation par un msgbox à l'opérateur après affichage d'un minimum d'éléments significatifs.
Raymond
RE.
excuses-moi si je t'ai froissé, je ne le voulais en aucun cas. je pensais que c'était le code réel.
vu qu'on n'a pas tout le code, il serait préférable de travailler directement sur le formulaire, si tu peux me l'envoyer par mail avec des tables presque vides, on irait plus vite.
-- @+ Raymond Access MVP. http://access.seneque.free.fr/ http://users.skynet.be/mpfa/charte.htm pour une meilleure efficacité de tes interventions sur MPFA.
"defluc" a écrit dans le message de news:
Quelle sévérité. Je n'ai pas envoyé tout le contenu de la source pour ne pas alourdir le message. Il est bien évident que la source de zone de liste est bien la table dans laquelle l'enregistrement sera effacé après une demande de confirmation. Je récupère la clé de l'enregistrement sélectionné dans la zone de liste, je demande confirmation, je me déplace sur l'enregistrement correspondant dans la table, j'efface l'enregistrement et je remets la liste à jour. Si ça c'est une usine à gaz où un marteau pour écraser une mouche alors quelle est la roue à eau ?
RE.
excuses-moi si je t'ai froissé, je ne le voulais en aucun cas.
je pensais que c'était le code réel.
vu qu'on n'a pas tout le code, il serait préférable de travailler
directement sur le formulaire, si tu peux me l'envoyer par mail avec des
tables presque vides, on irait plus vite.
--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.
"defluc" <defluc@swing.be> a écrit dans le message de
news:3F66E268.6090508@swing.be...
Quelle sévérité. Je n'ai pas envoyé tout le contenu de la source pour ne
pas alourdir le message. Il est bien évident que la source de zone de
liste est bien la table dans laquelle l'enregistrement sera effacé après
une demande de confirmation.
Je récupère la clé de l'enregistrement sélectionné dans la zone de
liste, je demande confirmation, je me déplace sur l'enregistrement
correspondant dans la table, j'efface l'enregistrement et je remets la
liste à jour. Si ça c'est une usine à gaz où un marteau pour écraser une
mouche alors quelle est la roue à eau ?
excuses-moi si je t'ai froissé, je ne le voulais en aucun cas. je pensais que c'était le code réel.
vu qu'on n'a pas tout le code, il serait préférable de travailler directement sur le formulaire, si tu peux me l'envoyer par mail avec des tables presque vides, on irait plus vite.
-- @+ Raymond Access MVP. http://access.seneque.free.fr/ http://users.skynet.be/mpfa/charte.htm pour une meilleure efficacité de tes interventions sur MPFA.
"defluc" a écrit dans le message de news:
Quelle sévérité. Je n'ai pas envoyé tout le contenu de la source pour ne pas alourdir le message. Il est bien évident que la source de zone de liste est bien la table dans laquelle l'enregistrement sera effacé après une demande de confirmation. Je récupère la clé de l'enregistrement sélectionné dans la zone de liste, je demande confirmation, je me déplace sur l'enregistrement correspondant dans la table, j'efface l'enregistrement et je remets la liste à jour. Si ça c'est une usine à gaz où un marteau pour écraser une mouche alors quelle est la roue à eau ?
defluc
Merci
Je vais essayer de faire une copie la plus dépouillée possible mais cela va me prendre du temps pour vérifier la cohérence. La base compactée fait 16Mb une dizaine de tables, plusieurs formulaires et états. Je vais tenter une version allégée ne comportant que le formulaire concerné mais cela va me prendre un certain temps, comme le fut du canon, et je n'ai pas que cela à faire.
A bientôt
Raymond a écrit:
RE.
excuses-moi si je t'ai froissé, je ne le voulais en aucun cas. je pensais que c'était le code réel.
vu qu'on n'a pas tout le code, il serait préférable de travailler directement sur le formulaire, si tu peux me l'envoyer par mail avec des tables presque vides, on irait plus vite.
Merci
Je vais essayer de faire une copie la plus dépouillée possible mais cela
va me prendre du temps pour vérifier la cohérence. La base compactée
fait 16Mb une dizaine de tables, plusieurs formulaires et états. Je vais
tenter une version allégée ne comportant que le formulaire concerné
mais cela va me prendre un certain temps, comme le fut du canon, et je
n'ai pas que cela à faire.
A bientôt
Raymond a écrit:
RE.
excuses-moi si je t'ai froissé, je ne le voulais en aucun cas.
je pensais que c'était le code réel.
vu qu'on n'a pas tout le code, il serait préférable de travailler
directement sur le formulaire, si tu peux me l'envoyer par mail avec des
tables presque vides, on irait plus vite.
Je vais essayer de faire une copie la plus dépouillée possible mais cela va me prendre du temps pour vérifier la cohérence. La base compactée fait 16Mb une dizaine de tables, plusieurs formulaires et états. Je vais tenter une version allégée ne comportant que le formulaire concerné mais cela va me prendre un certain temps, comme le fut du canon, et je n'ai pas que cela à faire.
A bientôt
Raymond a écrit:
RE.
excuses-moi si je t'ai froissé, je ne le voulais en aucun cas. je pensais que c'était le code réel.
vu qu'on n'a pas tout le code, il serait préférable de travailler directement sur le formulaire, si tu peux me l'envoyer par mail avec des tables presque vides, on irait plus vite.