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
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
gerard
Bonjour
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" a écrit dans le message de news:btbrhr$pju$
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
Bonjour
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:btbrhr$pju$1@news-reader3.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:btbrhr$pju$
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