[VB6] ADO UPDATE ????

cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 - 16 août 2005 à 18:40
Doro81079 Messages postés 380 Date d'inscription vendredi 22 avril 2005 Statut Membre Dernière intervention 24 février 2015 - 17 août 2005 à 18:57
Salut...

Je ne comprend plus rien du Update dans ADO....

Voici mon problème....

Je fais un ajout dans ma base de données ACCESS et je fais un UPDATE. Jusqu'ici ca fonctionne....

Si je fais une recherche de cette enregistrement et que je veux faire une modification le update ne fonction pas. Il change aucune information. Je suis capable d'Uptader (de midifier) uniquement la première enregistrement (qui se retourve sur la première ligne de ma Base de Données ACCESS).

Pourquoi ca fais ca....

J'ai vu sur le forum cette suggestion " il faut faire un update pour mettre à jour la table avec une condition portant le numéro d'identifiant"
Qu'est ce que le numéro identifiant (la clée primaire?????) et il y avant un exemple de code...
Update Table Set (champ '" & tavaleur & "'") where condition '" & tacondition & "'"


Est ce que je doit prendre cette ligne de code ??????

Donc si mon recordset est BD
le champs est DOSSIER
le "Tavaleur" = txtRecherche

et je ne sais pas quelle condition je peux mettre...

Si quelqu'un peut me donner un exemple de code..

merci d'avance...

16 réponses

neometaller Messages postés 28 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 5 juillet 2007
17 août 2005 à 09:23
Cette ligne : Update Table Set (champ = '" & tavaleur & "'") where condition = '" & tacondition & "'", c'est si tu veux passer par du SQL, mais perso avec Access et ADO, j'utilise des Recordset et ça fonctionne nickel...



Est-ce que tu te places sur le bon enregistrement avant modification ???

rst.Find "Critère" ou rst.Filter = "Critères"
0
Totoroyamada Messages postés 31 Date d'inscription jeudi 26 mai 2005 Statut Membre Dernière intervention 17 novembre 2005
17 août 2005 à 10:33
Peut-être me trompe-je, mais l'apostrophe en tant qu'identificateur de texte c'est sous SQL, sous Access c'est le guillemet...

Donc la chaîne à faire passer ne serait pas:

Update MaTable Set MonChamp 'MaValeur' Where MonChamp 'MaCondition'

mais:

Update MaTable Set MonChamp "MaValeur" Where MonChamp "MaCondition"

traduit en VB ça donne:

Dim MaRequete as String


MaRequete "Update MaTable Set MonChamp
" & """" & "MaValeur" & """" & " Where MonChamp = "
& """" & "MaCondition" & """"

(en remplaçant évidemment "MaValeur" et "MaCondition" par les variables adéquates)




Quelqu'un peut me dire si je divague?
0
neometaller Messages postés 28 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 5 juillet 2007
17 août 2005 à 10:37
en fait ça dépend du moteur utilisé avec Access...

si c'est Jet, normalement tu peux utiliser les " ou les ' mais si c'est MSDE (SQL Server) il n'y a que les '.

et comme JeffC1977 parle de ADO, j'en déduis que c'est du MSDE...
0
Totoroyamada Messages postés 31 Date d'inscription jeudi 26 mai 2005 Statut Membre Dernière intervention 17 novembre 2005
17 août 2005 à 11:20
"Réponse acceptée!"



Merci bien ;-)
0

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

Posez votre question
neometaller Messages postés 28 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 5 juillet 2007
17 août 2005 à 11:29
ça sert à koi "Réponse acceptée" ???
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
17 août 2005 à 11:35
Salut, pour fair l'update d'1 seul enregistrement, tu dois d'abord te positionner sur cet enreg comme dit NeoMettaller (méthode find). Puis :

rst.edit
rst!TonChampAModifier = tanouvellevaleur
rst.update

S'il s'agit d'updater toute la table, pas besoin de recordset :taconnexion.execute "UPDATE TaTable SET TonChampAModifier 'toto' WHERE TonChampAModifier 'titi'"
Avec cet exemple, tu remplaces 'toto' par 'titi' dans tous tes enregs.
Avec des variables texte ça donne :taconnexion.execute "UPDATE TaTable SET TonChampAModifier '" & var1 & "' WHERE TonChampAModifier '" & var2 & "'"

Avec des variables numériques ça donne :taconnexion.execute "UPDATE TaTable SET TonChampAModifier " & var1 & " WHERE TonChampAModifier " & var2

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
Totoroyamada Messages postés 31 Date d'inscription jeudi 26 mai 2005 Statut Membre Dernière intervention 17 novembre 2005
17 août 2005 à 11:47
Ben visiblement (parce que je ne suis pas un grand habitué du forum)
quand quelqu'un poste un sujet, sur les réponses des gens y a un bouton
"Réponse acceptée" qu'il peut cliquer si la réponse lui convient, ce
qui a pour effet de mettre le message en vert comme on peut le voir
ici: http://forum.vbfrance.com/forum.v2.aspx?ID=537767#5 Ca permet
ensuite aux autres de voir tout de suite que la solution a été trouvée.
Le mien était un faux "Réponse acceptée", c'était juste histoire de
dire que tu avais répondu à ma question...
0
neometaller Messages postés 28 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 5 juillet 2007
17 août 2005 à 11:49
ok merci Totroyamada.. je suis pas un grand habitué aussi :)



juste pour info CanisLupus, avec ADO, il n'y a plus besoin de rst.Edit...
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
17 août 2005 à 12:24
Exact NeoMetaller, confusion avec DAO.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
Doro81079 Messages postés 380 Date d'inscription vendredi 22 avril 2005 Statut Membre Dernière intervention 24 février 2015 56
17 août 2005 à 13:44
bonjour;

je me permets de repondre car j'ai poser la meme question et on m?a repondu vaguement

Donc si j'ai bien compris il faut mettre cette ligne pour chaque champ
à modifier?!
Par contre au niveau des ' et des " quand c'est des textbox ?!

par exemple txtrecherche il faut '" & txtrecherche & "'"

là je pense avoir compris mais avec ces lignes on a pas besoin de se placer sur l'enregistrement avant?!
et si oui comment fait on parce que c'est ça la vrai question!!

merci
doro
0
Doro81079 Messages postés 380 Date d'inscription vendredi 22 avril 2005 Statut Membre Dernière intervention 24 février 2015 56
17 août 2005 à 13:46
une autre question find edit c'est pas du DAO???
doro
0
Totoroyamada Messages postés 31 Date d'inscription jeudi 26 mai 2005 Statut Membre Dernière intervention 17 novembre 2005
17 août 2005 à 13:53
Doro, c'est du contenu de ta textbox que tu dois te servir donc
txtrecherche.text... tu le stockes dans une variable et tu t'en sers
comme indiqué plus haut...
0
Doro81079 Messages postés 380 Date d'inscription vendredi 22 avril 2005 Statut Membre Dernière intervention 24 février 2015 56
17 août 2005 à 14:01
salut
oui je parler bien du contenu mais j'ai oublier de mettre text désolé
donc ok je vais me servir de variables
mais pour me placer sur le champ avant de placer ces lignes
je fais un truc du genre

tb.open "select* from matable where mon champ=txtrecherche
et ensuite je mets a jour la table
c'est ça

merci

doro

ps désolé pour les abréviations ou les oublis mais je me lève
0
neometaller Messages postés 28 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 5 juillet 2007
17 août 2005 à 14:11
Les ' en ADO ou " (ou ') en DAO
c'est pour les champs de ta bases qui contiennent du texte, si tu
enregistres un numéro t'es pas obligé de les mettre...



Sinon Find ou Filter c'est en ADO

En DAO c'est FindFirst (ou autre)




tb.open "select * from matable where mon_champ = '" & txtrecherche & "'"

ça fonctionne si tu cherches un seul enregistrement



Si tu es dans une boucle, tu peux faire :

tb.open "select * from matable"

et après tu fais des :

tb.Find "mon_champ = '" & txtrecherche & "'" (1 seul critère)

ou

tb.Filter "mon_champ '" & txtrecherche & "' AND mon_champ2 = '" & txtrech2 & "'"... (plusieurs critères)



Ca te va à peu près???
0
Doro81079 Messages postés 380 Date d'inscription vendredi 22 avril 2005 Statut Membre Dernière intervention 24 février 2015 56
17 août 2005 à 14:21
re,
merci neometaler
enfin une réponse complète...
j'essais et je te dis
encore merci
salut
doro
0
Doro81079 Messages postés 380 Date d'inscription vendredi 22 avril 2005 Statut Membre Dernière intervention 24 février 2015 56
17 août 2005 à 18:57
rebonjour,
alors d'abord merci a neometaler,totoroyamada et a cannislupus
je vous aurez bien mis réponse accepter mais c'est pas moi qui est poster

j'ai mis le code entier sur ce post
http://www.vbfrance.com/forum.v2.aspx?ID=537104

pour les débutants comme moi qui ne comprendront pas les codes sortis de leur contexte

j'y ais mis également un appel aux membres de vb pour le post des débutants

encore merci à vous trois car ça fait un moment qu'on post sur ce problème et il n'y a jamais eu de réponse satisfaisante

merci(grand)
salut
doro
0
Rejoignez-nous