modif d'un attribut d'une table

modif d'un attribut d'une table - VB/VBA/VBS - Programmation

Marsh Posté le 21-06-2002 à 15:43:38    

Bonjour.
Voilà mon problème:
Je cherche à savoir comment faire pour incrémenter la valeur d'un attribut d'un enregistrement en vba
Pourriez vous svp me décrire les déclarations car g bien une idée avec l'action recorset mais je rame!!!
 
merci d'avance

Reply

Marsh Posté le 21-06-2002 à 15:43:38   

Reply

Marsh Posté le 21-06-2002 à 15:47:54    

Salut !
je ne sais pas si j'ai bien compris, mais est-ce que tu veux pouvoir incrémenter une valeur (un champ de ta table) à chaque fois que tu insères un nouvel enregistrement dans cette table ??
Cette valeur est bien de type numérique ?

Reply

Marsh Posté le 21-06-2002 à 15:51:24    

en fait g une table vocabulaire(Num voc, Nom..., Compteur)
Et dans un formulaire, g une liste box dans laquelle sont chargés tous les noms de ma table vocabulaire
 
Mon problème est que je veut incrémenter Mon compteur à chaque fois que je clique sur un Nom de la liste
 
PS:Chaque nom à un compteur
 
Merci. :eek2:  :hello:  :D

Reply

Marsh Posté le 21-06-2002 à 15:56:25    

Hummm..
 
ok, recapitulons
tu as une table VOCABULAIRE dans laquelle chaque occurence (chaque ligne) correspond entre autres à un NOM et aussi à un COMPTEUR  (donc chaque nom à un compteur qui lui est propre)..
 
tu voudrais donc, à chaque fois que dans ta listbox tu cliques sur un NOM, que le COMPTEUR qui correspond à ce NOM soit incrémenté ?

Reply

Marsh Posté le 21-06-2002 à 15:58:56    

QUINE!!!T'as tout compris, et ceci bien évidemment en vba.... :eek2:

Reply

Marsh Posté le 21-06-2002 à 16:07:04    

Hihi,
bah créé une fonction avec ça dedans , t'as qu'a recopier en mettant les bons noms de champs et d'objets:
 
-----------------------
Private Sub la_fonction()
Dim vl_req As String
Dim vl_rset As Recordset
 
vl_req = "Select COMPTEUR from VOCABULAIRE where NOM='" & LISTBOX1 & "'"
Set vl_rset = CurrentDb.OpenRecordset(vl_req, dbOpenSnapshot)
 
vl_req = "Insert into VOCABULAIRE(compteur) values(" & (vl_rset!COMPTEUR) + 1 & " ) where NOM='" & LISTBOX1 & "'"
DoCmd.RunSQL vl_req
 
End Sub
-------------
 
ensuite dans l'évènement CLICK de ta LISTBOX tua appelles cette fonction :
Call la_fonction
 
 
dis moi si ça marche :D

Reply

Marsh Posté le 21-06-2002 à 16:15:36    

Quand je compile, g un piti mes d'erreur:
 
"Trop peu de paramètres, 1 attendu", et ça concerne la ligne "Set vl_rset = CurrentDb.OpenRecordset(vl_req, dbOpenSnapshot)"
 
Tu vois le pb?moi g du mal... :benetton:

Reply

Marsh Posté le 21-06-2002 à 16:19:24    

fragile a écrit a écrit :

Quand je compile, g un piti mes d'erreur:
 
"Trop peu de paramètres, 1 attendu", et ça concerne la ligne "Set vl_rset = CurrentDb.OpenRecordset(vl_req, dbOpenSnapshot)"




 
ca vient de la requete.
 
met un point d'arret sur la ligne "Set vl_rset... " et regarde la valeur de VL_REQ dans le débogeur (Ctrl + G, puis tu tapes ça: ?vl_req)

Reply

Marsh Posté le 21-06-2002 à 16:27:21    

Voilà ce que ça me donne:
 
Break :   : vl_req : <Hors du contexte> : Empty : Form_voc/alpha.lbttvoc_Click
 
Alors là s'en m'en dit pas bcp plus, à part pour la valeur.
o fait, Form_Voc/Alpha, c mon formulaire ou g la liste... :bounce:

Reply

Marsh Posté le 21-06-2002 à 16:31:31    

C'est bien une listbox (liste deroulante) ou c'est une liste tout court ?

Reply

Marsh Posté le 21-06-2002 à 16:31:31   

Reply

Marsh Posté le 21-06-2002 à 16:33:43    

c'est une zone de liste dans laquelle g numvoc en clé cachée, et Nom visible pour l'utilisateur...

Reply

Marsh Posté le 21-06-2002 à 16:45:07    

ok je croyais que c'etait une liste deroulante :/
 
il faut remplacer LISTBOX1 par:
 
Liste1.Column(1, Liste1.ListIndex) si le NOM est le deuxième élément de la ligne selectionnée
si c'est le premier ça sera ..Column(0, ...

Reply

Marsh Posté le 21-06-2002 à 16:54:30    

je te renvoi mon code, car j'effectue ma recherche sur le numvoc:
 
Dim vl_req As String
Dim vl_rset As Recordset
 
vl_req = "Select COMPTEUR from VOCABULAIRE where NumVoc=lbttvoc.Column(0, Lbttvoc.ListIndex) "
Set vl_rset = CurrentDb.OpenRecordset(vl_req, dbOpenSnapshot)
vl_req = "Insert into VOCABULAIRE(compteur) values(" & (vl_rset!COMPTEUR) + 1 & " ) where NumVoc=lbttvoc.Column(0,lbttvoc.ListIndex) "
DoCmd.RunSQL vl_req
 
 
et une autre erreur s'affiche...
 
"Fonction 'lbttvoc.Column'Non définie dans l'expression..."
l'erreur point encore vers le "set....
 
"Break :   : vl_req : <Type incompatible> : Empty : Form_voc/alpha.lbttvoc_Click" :(

Reply

Marsh Posté le 21-06-2002 à 16:59:07    

là ça marchera mieux ;)
si numvoc est de type numérique:
vl_req = "Select COMPTEUR from VOCABULAIRE where NumVoc=" & lbttvoc.Column(0, Lbttvoc.ListIndex)
 
si c'est du String:
 
vl_req = "Select COMPTEUR from VOCABULAIRE where NumVoc='" & lbttvoc.Column(0, Lbttvoc.ListIndex)& "'"

Reply

Marsh Posté le 21-06-2002 à 17:06:30    

Je suis vraiment navré aussi bien pour moi que pour toi...mais y'a encore une fucking erreur...
 
Erreur de syntaxe dans l'instruction insert into et g bo regarder, je vois pas ou ça pe être... :ouch:

Reply

Marsh Posté le 21-06-2002 à 17:10:00    

patience .. ;)
 
refait la même chose que tout à l'heure: point d'arrêt, debogueur, tu tapes ?vl_req, et dans ta prochaine reponse met sa valeur, ça doit pas être grand chose

Reply

Marsh Posté le 21-06-2002 à 17:16:48    

apparament, la il ne peut pas exécuter l'insert into car la valeur est vide:
 
il me met ça:Insert into VOCABULAIRE(compteur) values( ) where NumVoc=8 :)

Reply

Marsh Posté le 21-06-2002 à 17:21:55    

fragile a écrit a écrit :

apparament, la il ne peut pas exécuter l'insert into car la valeur est vide:




 
regarde s'il y a qque chose dans vl_rset!COMPTEUR..
au pire passe par une variable ça sera plus lisible.. ton champ COMPTEUR est bien rempli au fait ?

Reply

Marsh Posté le 21-06-2002 à 17:27:25    

AHHH mais que je suis con faut faire un UPDATE pas un insert ...
 
rahhh tu peux me fouetter ouais je le mérite.. :fou:
 heureusement c le week end


Message édité par Bolino le 21-06-2002 à 17:27:46
Reply

Marsh Posté le 21-06-2002 à 17:32:19    

manque un point virgule à la fin de la requête...lol
et le pire ce con ve rien savoir même en rajoutant &";"àla fin de la requête....???on s'approche!

Reply

Marsh Posté le 21-06-2002 à 17:38:55    

voila maintenant la gueule de la requête et il aime pas la syntaxe...
 
Update VOCABULAIRE set compteur=(" & (vl_rset!COMPTEUR) + 1 & " ) where NumVoc=" & lbttvoc.Column(0, lbttvoc.ListIndex)&";"

Reply

Marsh Posté le 21-06-2002 à 17:46:57    

Tu sais pas quoi...Te fait pas chier, c l'heure de la débauche et je trouve que t'en a déjà fait beaucoup ...
je te remercie bien, et t'aurais même payé un coup si t'habitais près de chez moi....
 
Allé bon WE et surtout bonne fête de la musique
Merci de ta patience. :D  :jap:

Reply

Marsh Posté le 21-06-2002 à 17:58:35    

fragile a écrit a écrit :

 
je te remercie bien, et t'aurais même payé un coup si t'habitais près de chez moi....




envoie moi un chèque :D

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed