bonjour
j'ai un recordset d'ouvert via une requete sql
strRequete=" Select parler_langues.ID_personnes,Parler_langues.langue_lib
where ID_personne = ' " + refcandidat + "'"
rsLangues.Open strRequete, Mconnect, adOpenDynamic, adLockOptimistic,
adCmdText
je voudrais mettre a jour ce recordset, car des langues peuvent avoir ete
modifiées voire supprimée ou ajoutée
je pensais supprimer tous les enregistrements
For I=0 to RsLangues.RecordCount
RrsLangues.Delete
I=I+1
Next I
et puis les recréer de nouveau,
If Form_Dossier.LstLangues.ListCount >0 then
I=1
For I=1 To Form_Dossier.LstLangues.ListCount -1
RsLangues.AddNew
RsLangues;ID_Personnes = RefCandidat
RsLangues!langue_lib = Form_Dossier.LstLangues.Column(0,I)
RsLangues!Niveau_ID = Form_Dossier.LstLangues.Coloumn(1,I)
Next I
End IF
rsLanngues.UpdateBatch
RsLangues.Close
mais je n'arrive pas a les supprimer
"" il me met erreur d'execution 3021
comme quoi BOF at EOF est egal a true ou l'enregistrement actuel a été
supprimé
l'opération demandée neccessite un enregoistrement actuel ""
alors qu'il y a bien un enregistrement
RsLangues.open "parler_langues", Mconnect, AdOpenDynamic, adLockOptimistic, adCmdTable RsLangues.MoveFirst Do While Not RsLangues.Eof If RsLangues!ID_Personne = RefCandidat then RsLangues.Delete End If TRsLangues.MoveNext Loop
cela fonctionne, mais cela prend du temps car elle passe en revue mes 3000 enregistrement alors qu'avec une requete du style StrRequete= "Select * From parler_langues where ID_PERSONNE= '" + RefCandidat + "'" RsLangues.open StrRequete , Mconnect, AdOpenDynamic, adLockOptimistic, adCmdText RsLangues.MoveFirst Do While Not RsLangues.Eof If RsLangues!ID_Personne = RefCandidat then RsLangues.Delete End If TRsLangues.MoveNext Loop
eh bien a l'instruction RsLangues.Delete ca plante avec le message suivant " Information sur la colonne clé insuffisante pour la mise a jour ou le rafraichissement " je ne comprend pas alors que la il n'y a que 4 enregistrement a parcourir
donc cela marche avec la table entiere mais pas une requete surprenant je suis pret a prendre toute les explication pour accelerere cette fonction
merci a tous
"gerard" a écrit dans le message de news:btbs5i$b13$
bonjour j'ai un recordset d'ouvert via une requete sql strRequete=" Select parler_langues.ID_personnes,Parler_langues.langue_lib where ID_personne = ' " + refcandidat + "'" rsLangues.Open strRequete, Mconnect, adOpenDynamic, adLockOptimistic, adCmdText
je voudrais mettre a jour ce recordset, car des langues peuvent avoir ete modifiées voire supprimée ou ajoutée je pensais supprimer tous les enregistrements For I=0 to RsLangues.RecordCount RrsLangues.Delete
I=I+1 Next I et puis les recréer de nouveau,
If Form_Dossier.LstLangues.ListCount >0 then I=1 For I=1 To Form_Dossier.LstLangues.ListCount -1 RsLangues.AddNew RsLangues;ID_Personnes = RefCandidat RsLangues!langue_lib = Form_Dossier.LstLangues.Column(0,I) RsLangues!Niveau_ID = Form_Dossier.LstLangues.Coloumn(1,I) Next I End IF rsLanngues.UpdateBatch RsLangues.Close
mais je n'arrive pas a les supprimer "" il me met erreur d'execution 3021 comme quoi BOF at EOF est egal a true ou l'enregistrement actuel a été supprimé l'opération demandée neccessite un enregoistrement actuel "" alors qu'il y a bien un enregistrement
merci pour votre aide
gerard
salut
j'ai trouvé une solution
RsLangues.open "parler_langues", Mconnect, AdOpenDynamic, adLockOptimistic,
adCmdTable
RsLangues.MoveFirst
Do While Not RsLangues.Eof
If RsLangues!ID_Personne = RefCandidat then
RsLangues.Delete
End If
TRsLangues.MoveNext
Loop
cela fonctionne, mais cela prend du temps car elle passe en revue mes 3000
enregistrement
alors qu'avec une requete du style
StrRequete= "Select * From parler_langues where ID_PERSONNE= '" +
RefCandidat + "'"
RsLangues.open StrRequete , Mconnect, AdOpenDynamic, adLockOptimistic,
adCmdText
RsLangues.MoveFirst
Do While Not RsLangues.Eof
If RsLangues!ID_Personne = RefCandidat then
RsLangues.Delete
End If
TRsLangues.MoveNext
Loop
eh bien a l'instruction RsLangues.Delete ca plante avec le message suivant
" Information sur la colonne clé insuffisante pour la mise a jour ou le
rafraichissement "
je ne comprend pas alors que la il n'y a que 4 enregistrement a parcourir
donc cela marche avec la table entiere mais pas une requete surprenant
je suis pret a prendre toute les explication pour accelerere cette fonction
merci a tous
"gerard" <gerard.v@wanadoo.fr> a écrit dans le message de
news:btbs5i$b13$1@news-reader4.wanadoo.fr...
bonjour
j'ai un recordset d'ouvert via une requete sql
strRequete=" Select parler_langues.ID_personnes,Parler_langues.langue_lib
where ID_personne = ' " + refcandidat + "'"
rsLangues.Open strRequete, Mconnect, adOpenDynamic, adLockOptimistic,
adCmdText
je voudrais mettre a jour ce recordset, car des langues peuvent avoir ete
modifiées voire supprimée ou ajoutée
je pensais supprimer tous les enregistrements
For I=0 to RsLangues.RecordCount
RrsLangues.Delete
I=I+1
Next I
et puis les recréer de nouveau,
If Form_Dossier.LstLangues.ListCount >0 then
I=1
For I=1 To Form_Dossier.LstLangues.ListCount -1
RsLangues.AddNew
RsLangues;ID_Personnes = RefCandidat
RsLangues!langue_lib = Form_Dossier.LstLangues.Column(0,I)
RsLangues!Niveau_ID = Form_Dossier.LstLangues.Coloumn(1,I)
Next I
End IF
rsLanngues.UpdateBatch
RsLangues.Close
mais je n'arrive pas a les supprimer
"" il me met erreur d'execution 3021
comme quoi BOF at EOF est egal a true ou l'enregistrement actuel a été
supprimé
l'opération demandée neccessite un enregoistrement actuel ""
alors qu'il y a bien un enregistrement
RsLangues.open "parler_langues", Mconnect, AdOpenDynamic, adLockOptimistic, adCmdTable RsLangues.MoveFirst Do While Not RsLangues.Eof If RsLangues!ID_Personne = RefCandidat then RsLangues.Delete End If TRsLangues.MoveNext Loop
cela fonctionne, mais cela prend du temps car elle passe en revue mes 3000 enregistrement alors qu'avec une requete du style StrRequete= "Select * From parler_langues where ID_PERSONNE= '" + RefCandidat + "'" RsLangues.open StrRequete , Mconnect, AdOpenDynamic, adLockOptimistic, adCmdText RsLangues.MoveFirst Do While Not RsLangues.Eof If RsLangues!ID_Personne = RefCandidat then RsLangues.Delete End If TRsLangues.MoveNext Loop
eh bien a l'instruction RsLangues.Delete ca plante avec le message suivant " Information sur la colonne clé insuffisante pour la mise a jour ou le rafraichissement " je ne comprend pas alors que la il n'y a que 4 enregistrement a parcourir
donc cela marche avec la table entiere mais pas une requete surprenant je suis pret a prendre toute les explication pour accelerere cette fonction
merci a tous
"gerard" a écrit dans le message de news:btbs5i$b13$
bonjour j'ai un recordset d'ouvert via une requete sql strRequete=" Select parler_langues.ID_personnes,Parler_langues.langue_lib where ID_personne = ' " + refcandidat + "'" rsLangues.Open strRequete, Mconnect, adOpenDynamic, adLockOptimistic, adCmdText
je voudrais mettre a jour ce recordset, car des langues peuvent avoir ete modifiées voire supprimée ou ajoutée je pensais supprimer tous les enregistrements For I=0 to RsLangues.RecordCount RrsLangues.Delete
I=I+1 Next I et puis les recréer de nouveau,
If Form_Dossier.LstLangues.ListCount >0 then I=1 For I=1 To Form_Dossier.LstLangues.ListCount -1 RsLangues.AddNew RsLangues;ID_Personnes = RefCandidat RsLangues!langue_lib = Form_Dossier.LstLangues.Column(0,I) RsLangues!Niveau_ID = Form_Dossier.LstLangues.Coloumn(1,I) Next I End IF rsLanngues.UpdateBatch RsLangues.Close
mais je n'arrive pas a les supprimer "" il me met erreur d'execution 3021 comme quoi BOF at EOF est egal a true ou l'enregistrement actuel a été supprimé l'opération demandée neccessite un enregoistrement actuel "" alors qu'il y a bien un enregistrement
merci pour votre aide
gerard
3stone
Salut,
"gerard"
alors qu'avec une requete du style StrRequete= "Select * From parler_langues where ID_PERSONNE= '" + RefCandidat + "'"
Concatène avec & pour voir...
"Select * From parler_langues where ID_PERSONNE= '" & RefCandidat & "'"
-- A+ Pierre (3stone) Access MVP ----------------------------- http://users.skynet.be/mpfa -----------------------------
Salut,
"gerard"
alors qu'avec une requete du style
StrRequete= "Select * From parler_langues where ID_PERSONNE= '" + RefCandidat + "'"
Concatène avec & pour voir...
"Select * From parler_langues where ID_PERSONNE= '" & RefCandidat & "'"
--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------
alors qu'avec une requete du style StrRequete= "Select * From parler_langues where ID_PERSONNE= '" + RefCandidat + "'"
Concatène avec & pour voir...
"Select * From parler_langues where ID_PERSONNE= '" & RefCandidat & "'"
-- A+ Pierre (3stone) Access MVP ----------------------------- http://users.skynet.be/mpfa -----------------------------
gerard
salut non cela ne marche pas en concatenant il faut des + pour delimiter une variable en sql merci "3stone" a écrit dans le message de news:
Salut,
"gerard"
alors qu'avec une requete du style StrRequete= "Select * From parler_langues where ID_PERSONNE= '" + RefCandidat + "'"
Concatène avec & pour voir...
"Select * From parler_langues where ID_PERSONNE= '" & RefCandidat & "'"
-- A+ Pierre (3stone) Access MVP ----------------------------- http://users.skynet.be/mpfa -----------------------------
salut
non cela ne marche pas en concatenant il faut des + pour delimiter une
variable en sql
merci
"3stone" <3stone@skynet.be> a écrit dans le message de
news:OrJ0A460DHA.3116@TK2MSFTNGP11.phx.gbl...
Salut,
"gerard"
alors qu'avec une requete du style
StrRequete= "Select * From parler_langues where ID_PERSONNE= '" +
RefCandidat + "'"
Concatène avec & pour voir...
"Select * From parler_langues where ID_PERSONNE= '" & RefCandidat & "'"
--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------