Supprimer des records filtrés avec ado

ayadig Messages postés 14 Date d'inscription vendredi 8 janvier 2010 Statut Membre Dernière intervention 26 février 2010 - 24 janv. 2010 à 11:05
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 28 janv. 2010 à 14:33
bonjour

j'ai filtré un recordset avec le code suivant

MonRs.Filter = "DAT=" & "'" & Calendar1.Value & "'"

ça marche, je veux supprimer les records filtrés

j'ai essayer avec

MonRs.Delete adAffectAllchapters
et
MonRs.Delete adAffectgroup

mais ça marche pas

avec ces deux instructions un message d'erreur s'affiche;"l'opération demandé n'est pas autorisée dans ce context"

et avec
MonRs.Delete adAffectcurrent
le message d'erreur est;" informations sur la colonne clé insuffisantes ou incorrectes.trop de ligne sont affectérs par la mise à jours"



Merci bcp pour votre aide

16 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
24 janv. 2010 à 11:39
Salut
Comment est dimensionné MonRs ? de quel type DAO, ADODB ... ?
Tu es vriment sous VB.Net ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
ayadig Messages postés 14 Date d'inscription vendredi 8 janvier 2010 Statut Membre Dernière intervention 26 février 2010
24 janv. 2010 à 18:37
voilà le code de création de recordset
Calendar1.Value = Date
Set Cnn1 = New ADODB.Connection
Cnn1.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Nouveau dossier (2)\mes programmes\pro vb6\projet\temp.mdb"
Set MonRs = New ADODB.Recordset
MonRs.CursorLocation = adUseClient
MonRs.ActiveConnection = Cnn1
MonRs.Open "SELECT * FROM ert", , adOpenStatic, adLockOptimistic, adCmdText
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
26 janv. 2010 à 09:07
vive les données qui transitent.

si tu souhaites supprimer des données, à quoi bon les réppatrier dans un recordset ?

Cnn1.Execute "DELETE FROM ert WHERE DAT=#" & Format$(Calendar1.Value, "yyyy-mm-dd") & "# "


NB: Tu n'ES PAS en .Net
gaffe donc au theme utilisé pour poser tes questions.

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
ayadig Messages postés 14 Date d'inscription vendredi 8 janvier 2010 Statut Membre Dernière intervention 26 février 2010
26 janv. 2010 à 21:34
Merci bcp pour ton aide, les messages d'erreurs ne sont plus signalés. mais le nombre de records reste le même après suppression, il ne diminue qu'après redémarrage de l'application. comment faire pour l'actualisation au cours de son exécution ?
s.v.p j'ai un autre problème: l'ajout des records se fait par addnew comme suit

With MonRs
.AddNew
.Fields("TI1") = 130
.Fields("TIREG") = 220
.Fields("DAT") = Calendar1.Value
.Update
End With
Text1.Text = MonRs.RecordCount

le problème est que les données ne sont pas enregistrées dans l'ordre de leur création, est ce qu'il me manque quelques choses dans mon code?

Merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
26 janv. 2010 à 22:02
raffraichit ton Recordset...

tentes un Requery

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
ayadig Messages postés 14 Date d'inscription vendredi 8 janvier 2010 Statut Membre Dernière intervention 26 février 2010
27 janv. 2010 à 11:54
Merci Renfield

le premier problème est résolu mais comment enregistrer les données dans l'ordre de leur création

Merci d'avance
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
27 janv. 2010 à 11:57
pardon ?

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
ayadig Messages postés 14 Date d'inscription vendredi 8 janvier 2010 Statut Membre Dernière intervention 26 février 2010
27 janv. 2010 à 12:37
Je vais expliquer :

les données ne sont pas enregistrées dans l'ordre de leur création (il y a chevauchement entre les données enregistrées le 25/01/2010 et celles de 26/01/2010 et le 27 par exple)

DAT
25/01/2010
25/01/2010
25/01/2010
26/01/2010
26/01/2010
26/01/2010
27/01/2010
27/01/2010
27/01/2010
25/01/2010
25/01/2010
25/01/2010
alors qu'elles doivent être

DAT
25/01/2010
25/01/2010
25/01/2010
25/01/2010
25/01/2010
25/01/2010
26/01/2010
26/01/2010
26/01/2010
27/01/2010
27/01/2010
27/01/2010
comment le faire ? ( je sais qu'il y a une méthode de trie mais je ne souhaite pas les trier après leurs ajout, est ce qu'il est possible qu'ils soit dans l'ordre?)

pour plus expliquer:
si j'ai à ajouter v puis x puis y puis z
je dois avoir
v
x
y
z
le problème est que j'obtiens dans ma base
v
y
z
x
Merci pour ton suivi
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
27 janv. 2010 à 12:55
aucun interet a les trier avant ajout...

si tu souhaite malgré tout les trier, ajoutes les dans l'ordre :
rties tes données par toi même.

mais je le répète: strictement aucun interet a les trier, aucun gain de quoi que ce soit à quelque niveau que ce soit.

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
ayadig Messages postés 14 Date d'inscription vendredi 8 janvier 2010 Statut Membre Dernière intervention 26 février 2010
27 janv. 2010 à 13:23
Merci en tt cas

put être je me suis mal exprimé

voilà mon problème;
je veux que le record nouvellement ajouté s'ajoute toujours à la fin de table

même si mon problème n'est pas résolu, je te remercie vivement Renfield
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
27 janv. 2010 à 13:54
a la fin de table...
c'est une vue de l'esprit... la table se gère, ne t'occupe pas de l'endroit ou le record se place.

prend la main sur l'affichage dans ton application, pour trier les données avant de les afficher

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
ayadig Messages postés 14 Date d'inscription vendredi 8 janvier 2010 Statut Membre Dernière intervention 26 février 2010
27 janv. 2010 à 19:17
c vraiment indispensable l'ordre pour moi svp, s'il y a une méthode veuillez me le dire
Merci bcp
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
27 janv. 2010 à 20:02
une méthode, sufit de trier tes données, sous n'importe quelle forme
indispensable ? j'aimerais bien en connaitre la raison

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
ayadig Messages postés 14 Date d'inscription vendredi 8 janvier 2010 Statut Membre Dernière intervention 26 février 2010
27 janv. 2010 à 21:50
bon
j'enregistre des valeurs de températures à partir des sondes, pour les afficher ultérieurement, en supprimer celles de telle ou telle date, je veux avoir des courbes Température en fonction du temps, pour cela les valeurs doivent être enregistrées dans l'ordre. je n'avait pas de problème avec delphi car avec son ado tout nouvel record se met à la fin(ordre chronologique) mais avec VB6 (changement obligatoire) j'ai des problèmes.

je peux les trier en ajoutant un champs indice mais s'il est possible de le faire sans ceci ça sera bcp mieux.
ce que je n'arrive pas à comprendre pourquoi ce chevauchement (désordre) non commandé dans l'enregistrement des données?
Merci en tt cas
0
ayadig Messages postés 14 Date d'inscription vendredi 8 janvier 2010 Statut Membre Dernière intervention 26 février 2010
28 janv. 2010 à 14:31
bonjour renfield

le problème est résolu. c l'option compacter lors de la fermeture de la base qui manque,
maintenant tout marche bien
Merci pour tes messages
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
28 janv. 2010 à 14:33
suffit d'ajouter une clause

ORDER BY `DateDeMesure`

a tes requetes ...

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0