Modification ADO

pulpul74 Messages postés 77 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 27 septembre 2010 - 12 mars 2008 à 16:31
pulpul74 Messages postés 77 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 27 septembre 2010 - 13 mars 2008 à 10:25
Bonjour.
J'aurais encore une fois besoin de votre aide.
J'accède actuellement à une base de données grace à le méthode ADO. Le problème que je rencontre se produit lors de la modification d'un donnée, celle ci est bien modifiée mais toute la colonne l'est aussi!! voici mon code:

connectionADO.Provider = "Microsoft.jet.OLEDB.4.0"
' Chemin de la Base de Données - ici le répertoire de l'application
connectionADO.ConnectionString = App.Path & "\territoire.mdb"
' Ouverture de la connection
connectionADO.Open
commandeADO.ActiveConnection = connectionADO
' Configuration de la conmande avec requete SQL
commandeADO.CommandText = "SELECT table1.Date_sortie FROM table1"
' Initialisation du Curseur Client
resultatADO.CursorLocation = adUseServer
' Utilisation d'un Curseur Client Dynamique
resultatADO.CursorType = adOpenDynamic
' Vérouillage de l'Enregistrement dès son accès
resultatADO.LockType = adLockPessimistic
' Transmission de la commande à la méthode Open
resultatADO.Open commandeADO

'Mise en position du curseur pour la modification de la ligne voulue
i = 0
Do Until i = pos_cursor
    resultatADO.MoveNext
    i = i + 1
Loop

'Je prend la date choisie
nouvelle_date = Calendar.Value
'Modification
        'Frm_details_liste.Data_frm_details.Recordset.Edit 'préparation du data pour modification de la base de données
        resultatADO!Date_sortie = nouvelle_date
        resultatADO.Update 'MAJ
        resultatADO.Requery
       

Donc ce qui arrive, c'est que j'ai plusieur enregistrement dans cette requette, et toute la colonne 'Date_sortie' est modifiée.
Alors que j'ai réalisé la meme opération sur une autre colonne de cette table (par contre c'est du texte), et cela marché bien!

Si quelqu'un a une idée de la cause... je sèche...

6 réponses

zen69 Messages postés 584 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 29 avril 2010 1
12 mars 2008 à 16:43
Ben premierement il semble innutile dans cet opération de scroller tous les enregistrement jusqu'a ce que tu tombes sur le bon. Tu deverais donc utlisé un meilleur method tel que :
resultatADO.Move(....)
a la place de resultatADO.MoveNext
de cette facon tu vas tomber directement sur l'enregistrement désiré.

Une autre amilioration qui reglerais ton probleme du meme coup serait de selectionner un enregistrement au lieu de la total de ta table.

commandeADO.CommandText = "SELECT table1.Date_sortie FROM table1WHERE id=monId"

Si tu utilises une commande de ce type... lors de ton updates seul les enregistrements selectionné seront mis a jour.

En esprérant que ceci puisse t'aider.

<hr size="2" width="100%" />  zen69 aka Ortho Le Profett
  [site web]
0
pulpul74 Messages postés 77 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 27 septembre 2010
12 mars 2008 à 17:32
Merci, c'est vrai que c'est une méthode plus fiable. Donc je l'ai testée... mais là autre problème, que je ne comprend pas non plus, j'ai beau chercher(ou je cherche mal alors..). Voici mon code:

Dim ID as integer
' Configuration de la conmande avec requete SQL
commande3ADO.CommandText = "SELECT table1.Id FROM table1
' Initialisation du Curseur Client
resultatADO.CursorLocation = adUseServer
' Utilisation d'un Curseur Client Dynamique
resultatADO.CursorType = adOpenDynamic
' Vérouillage de l'Enregistrement dès son accès
resultatADO.LockType = adLockPessimistic
' Transmission de la commande à la méthode Open
resultatADO.Open commandeADO

resultatADO.Move (pos_cursor)

ID = resultatADO!Id

et là, c'est le drame, il me met 'erreur d'execution 3265:Impossible de trouver l'objet dans la collection...


Là je vois pas...
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
12 mars 2008 à 17:39
Salut,

Juste au passage, prendre l'habitude de mettre le code au complet, c'est plus lisible(lecture) par la suite :

ID = resultatADO.Fields("Id").Value

A+
Exploreur

 Linux a un noyau, Windows un pépin

<hr />
Un jeu en flash sympa...? Voir ici
Si vous voulez vous inscrire mettez comme parrain : exploreur
Vous aurez grâce à cela des cadeaux virtuels
(Boites d'asticots, sachets de thé .....!)

<hr />
0
pulpul74 Messages postés 77 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 27 septembre 2010
13 mars 2008 à 09:00
Le code au complet? Tu parle du 'ID = resultatADO!Id', ou est ce qu'il faut que je mette plus de code?

Enfin pour mon problème, j'ai essayé ta méthode, mais c'est pareil, il n'a pas l'air de trouver le champ'Id' dans ma table, alors que ce champs est la clé primaire de ma table access... c'est quoi ce bug!!!
Et si je change le nom du champ ca me donne la meme erreur...
0

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

Posez votre question
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
13 mars 2008 à 09:31
Salut,

As-tu bien un champ dans ta table qui s'appel ID ?

Regarde s'il ne s'appel pas N°....

A+
Exploreur

 Linux a un noyau, Windows un pépin

<hr />
Un jeu en flash sympa...? Voir ici
Si vous voulez vous inscrire
0
pulpul74 Messages postés 77 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 27 septembre 2010
13 mars 2008 à 10:25
Alors oui, mon champ s'appelle bien Id, d'ailleur, je fait une copie de la requete SQL que j'ai créé sous Access.
J'ai essayé de faire la meme requete avec DAO, et là, ca marche, il me prend bien l'ID...bizard quand meme.

Bon donc ensuite, puisque j'ai récupéré l'ID, je fait donc la requete pour selectionné juste la ligne à modifier, grace à ADO et à la requete sql: "SELECT table1.Date_sortie, table1.Id From table1 WHERE (((table1.Id)=" & Idd & "))"
là je modifie, et surprise!!! ba ca me modifie les 2 champs 'Date_sortie' alors que là j'en ai selectionnée une seule... (à noté que ca me modifie les 2 que lorsque je selectionne là 2eme ligne, quand je prend la 1ere, ca me modifie que celle là).

Donc là, dans mon desespoir, je revient à la bonne vieille méthode DAO. donc je rentre la même requete, je modifie et là... ba meme problème, ca me modifie les 2 champs quand je selectionne le 2eme champ...
0
Rejoignez-nous