Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

la bonne solution

3 réponses
Avatar
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

3 réponses

Avatar
Patrice Scribe
Quel est le but ? Cela ressemble à une requête DELETE :

DELETE FROM Parler_langues WHERE ID_personne=<valeur>

Patrice

--

"gerard" a écrit dans le message de
news:btgb53$u4k$
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




Avatar
gerard
salut
oui je veux effectivement supprimer les enregistrement en fonction de la
valeur,
mais il m'est impossible de le faire depuis mon recordset issue de ma
requete,
la requete delete n'est possible que depuis la table et cela est long...(
travaille sur + de 15000 enregistrements)
est il possible de supprimmer tous les enregistrement de mon recordset (
travaille sur 4 enregistrements)
car dans mon idée c'est la meme chose....

merci
"Patrice Scribe" a écrit dans le message de
news:%
Quel est le but ? Cela ressemble à une requête DELETE :

DELETE FROM Parler_langues WHERE ID_personne=<valeur>

Patrice

--

"gerard" a écrit dans le message de
news:btgb53$u4k$
> 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
>
>



Avatar
Patrice Scribe
Si tu utilises :

StrRequete= "Delete From parler_langues where ID_PERSONNE= '" + RefCandidat
+ "'"

Au lieu de :

StrRequete= "Select * From parler_langues where ID_PERSONNE= '" +
RefCandidat + "'"

(exécute là directement via la connexion ou un objet Command).

Qu'est ce que cela donne ? Je pense qu'il est préférable d'envoyer la
requête SQL de destruciton directement plutôt que de sélectionner les
données dans un recordset avant de les détruire via ADO.

Patrice

--

"gerard" a écrit dans le message de
news:btgn26$mb4$
salut
oui je veux effectivement supprimer les enregistrement en fonction de la
valeur,
mais il m'est impossible de le faire depuis mon recordset issue de ma
requete,
la requete delete n'est possible que depuis la table et cela est long...(
travaille sur + de 15000 enregistrements)
est il possible de supprimmer tous les enregistrement de mon recordset (
travaille sur 4 enregistrements)
car dans mon idée c'est la meme chose....

merci
"Patrice Scribe" a écrit dans le message de
news:%
> Quel est le but ? Cela ressemble à une requête DELETE :
>
> DELETE FROM Parler_langues WHERE ID_personne=<valeur>
>
> Patrice
>
> --
>
> "gerard" a écrit dans le message de
> news:btgb53$u4k$
> > 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
> >
> >
>