[access/vba/bdd] intégration de valeur par case à cocher

intégration de valeur par case à cocher [access/vba/bdd] - VB/VBA/VBS - Programmation

Marsh Posté le 13-03-2008 à 11:43:28    

Bonjour à tous, voila le probleme que j'ai : Gérant du personnel aux niveaux de qualifications, stages divers, je voudrais faire la chose suivante sur une base de données access pour gérer mon personnel. Est-il possible de faire écrire dans un champ texte une valeur en cochant une chkbox par exemple.  
 
En exemple le code que j'ai tenté mais apparement infructueux.
 

Code :
  1. Private Sub chk_PERMIS_Click()
  2. If chk_PERMIS = True Then
  3. SQL = SQL & insert & " And T_personnel_gen!permis = '" & VL & "' "
  4. Else
  5. SQL = SQL & insert & " And T_personnel_gen!permis = '" & "" & "' "
  6. End If
  7. End Sub


 
Donc mon champ dénommé permis est vierge au départ. Je voudrais adonc avoir une case à cocher qui écrirait dans le champ permis la valeur "VL" par exemple.
 
ma question est donc : est-ce possible en VBA ? Ou doi-je passer par une requête de type "INSERT INTO" par ex ?  
Si d'autres idées se font jour je suis preneur. un exemple serait le bienvenu car là je seche un peu :cry:  


---------------
On ne m'appelle l'iguane pour le côté rugueux de mon caractère mais pour ma langue.......
Reply

Marsh Posté le 13-03-2008 à 11:43:28   

Reply

Marsh Posté le 13-03-2008 à 14:47:22    

salut,
tu parles de mettre une valeur dans un champs, mais n'est-ce pas un update dans ce cas là ?


---------------
Les fautes d'orthographe coûtent des millions d'euros aux entreprises, marre des fau
Reply

Marsh Posté le 13-03-2008 à 23:01:28    

Code :
  1. if chk_PERMIS=true then
  2. champPERMIS="VL"
  3. end if


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
Reply

Marsh Posté le 14-03-2008 à 09:36:36    

Je vais tester pour voir. J'espere que c'est un simple update.
 
Merci pour la réponse. te tiens aus jus


---------------
On ne m'appelle l'iguane pour le côté rugueux de mon caractère mais pour ma langue.......
Reply

Marsh Posté le 14-03-2008 à 19:31:28    

Il est évident pour moi que que ton formulaire est lié à une table et que la textbox a comme source le champ PERMIS, hein ?
Sinon, effectivement, il faut passer par un update si ton formulaire est indépendant.


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
Reply

Marsh Posté le 17-03-2008 à 10:51:04    

Voila ! Ce  n'est pas un simple update malheureusement. J'ai besoin que s'inscrive la valeur en dur dans le champ permis, car j'ai une formulaire de sélection basé sur le tuto de caféine.developpez.com (recherche multicriteres). En changeant la valeur txt du champs permis par -1, ou en mettant Vl, cela me retourne un boite de dialogue indiquant une erreur dans le code.
 
Donc je ne sais pas comment faire pour intégrer une valeur "texte" dans le champ par case à cocher.


---------------
On ne m'appelle l'iguane pour le côté rugueux de mon caractère mais pour ma langue.......
Reply

Marsh Posté le 17-03-2008 à 19:32:37    

C'est pas très clair ton histoire...
Qu'entends tu exactement par champ ? Un champ dans une table de base de donnée est une colonne...
Tu parles de valeur txt... est-ce le contenu d'une textbox sur ton formulaire ?
Le formulaire de critère multi-recherche de caféine est un formulaire indépendant, c'est à dire qu'il n'est lié à aucune table. Donc, quoi que tu fasses dans ta requête ou table, ton textbox dans le formulaire ne se mettra jamais à jour, puisque la textbox n'est liée à aucun champ de la table/requête !

 

Si tu veux écrire "VL" dans la textbox après avoir cliqué sur une checkbox, c'est le code que je t'ai indiqué plus haut.

 

Ensuite, si tu veux lancer une recherche avec comme critère "VL" qui est inscrit dans ta textbox, il faut que dans ta requête sql tu aies un truc du genre :
"WHERE champPermis='" & textboxPermis & "';"
ce qui te donneras après concaténation de la chaine de caractères :
WHERE champPermis='VL';

 

En même temps, dire qu'on a un code d'erreur sans le donner, à moins d'être voyant, je ne vois pas à quoi ça sert ;)

 

JM


Message édité par otobox le 17-03-2008 à 19:33:54

---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
Reply

Marsh Posté le 18-03-2008 à 09:28:44    

Je vais tentere d'être plus clair  
 
J'ai l'impression que je me suis un peu fourvoyé en cherchant absolument par une CHKbox la valeur oui/non . A savoir, si la valeur de la checkbox était vrai, ecriture dans le champ permis de la table le texte  "VL", si faux  " ".  
 
mon besoin est plutôt du genre : un champ permis qui est en texte ou je voudrais juste un code me permettant d'insérer le texte "VL" dans ce champ permis quand je clique sur une case à cocher, ou un bouton d'option ou autre
 

Code :
  1. 1. Private Sub chk_PERMIS_Click()
  2.    2. If chk_PERMIS = True Then
  3.    3. SQL = SQL & insert & " And T_personnel_gen!permis = '" & VL & "' "
  4.    4. Else
  5.    5. SQL = SQL & insert & " And T_personnel_gen!permis = '" & "" & "' "
  6.    6. End If
  7.    7. End Sub


 
Voila comme précédemment ce que j'ai fait. Le problème c'est que je suis un vrai noob. Le msg d'erreur retourné est erreur 424 "objet requis".?????
Sachant qu'une case à cocher n'a qu'un triple état (vrai, faux,  inactif) est-il possible d'intégrer une autre commande pour forcer une insertion de texte  dans un champ de table si la valeur est vrai ? Sinon, je suis preneur d'une autre solution.
 
 
 


Message édité par james west le 18-03-2008 à 09:36:21

---------------
On ne m'appelle l'iguane pour le côté rugueux de mon caractère mais pour ma langue.......
Reply

Marsh Posté le 18-03-2008 à 18:25:39    

Telle qu'est écrite ta requête le  
" And T_personnel_gen!permis = '"....
est situé après un WHERE, c'est un critère de sélection.
En gros, tu mets à jour des lignes si : ..." T_personnel_gen!permis = 'VL'"
Si tu veux insérer (ajouter une nouvelle ligne) dans une table (ou requête), ta requête ajout devrait ressembler à ça :
 

Code :
  1. sql="INSERT INTO nomTable (champPermis) VALUES ('VL') WHERE Condition1='quelquechose' AND Condition2='autrechose';"


 
Par exemple, dans une table tableExemple qui comporte un champ CléPrimaire, un champ Propriétaire et un dernier champ Permis, tu veux rajouter la chaine de caractère VL dans le champ Permis après avoir cliqué sur une checkbox qui s'appelle chkbox1 tu as le code suivant :

Code :
  1. sub chkbox1_beforeupdate()
  2. dim sql as string 'dimensionnement de la variable sql
  3. if chkbox1 then 'si la checkbox est cochée
  4.   sql="INSERT INTO tableExemple (Propriétaire, Permis) VALUES ('Toto', 'VL');" 'Ecriture de la requête ajout
  5.   with docmd
  6.     .setwarning false 'Désactivation des messages d'alertes d'Access
  7.     .runsql sql 'Exécute la requete ajout
  8.     .setwarning true 'Réactive les messages d'alerte Access
  9.   end with
  10. end if
  11. end sub


 
Tu auras comme résultat une nouvelle ligne avec dedans :
CléPrimaire : n° d'ordre unique
Propriétaire : Toto
Permis : VL
 
Si tu veux mettre à jour la table citée en exemple précédemment, à l'aide de la checkbox, ton code devient:

Code :
  1. sub chkbox1_beforeupdate()
  2. dim sql as string 'dimensionnement de la variable sql
  3. if chkbox1 then 'si la checkbox est cochée
  4.   sql="UPDATE tableExemple SET Permis) = 'VL') WHERE Proprietaire='Toto';" 'Ecriture de la requête ajout
  5. else
  6.   sql="UPDATE tableExemple SET Permis) = '') WHERE Proprietaire='Toto';" 'Si la chkbox n'est pas cochée
  7. end if
  8. with docmd
  9.   .setwarning false 'Désactivation des messages d'alertes d'Access
  10.   .runsql sql 'Exécute la requete ajout
  11.   .setwarning true 'Réactive les messages d'alerte Access
  12. end with
  13. end sub


 
Bon courage


Message édité par otobox le 18-03-2008 à 18:35:34

---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
Reply

Marsh Posté le 01-06-2009 à 17:55:48    

De rien :o


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
Reply

Sujets relatifs:

Leave a Replay

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