modif d'un attribut d'une table - VB/VBA/VBS - Programmation
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 ?
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.
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é ?
Marsh Posté le 21-06-2002 à 15:58:56
QUINE!!!T'as tout compris, et ceci bien évidemment en vba....
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
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...
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)
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...
Marsh Posté le 21-06-2002 à 16:31:31
C'est bien une listbox (liste deroulante) ou c'est une liste tout court ?
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...
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, ...
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"
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)& "'"
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...
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
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
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 ?
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..
heureusement c le week end
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!
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)&";"
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.
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
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