OVH Cloud OVH Cloud

suppression et creation

1 réponse
Avatar
gerard
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

1 réponse

Avatar
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