|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Inscription : octobre 2010 Messages : 65 ![]() |
Bonjour,
J'ai un problème concernant la transmission de l'information sur les valeurs des cases à cocher par les requêtes. Contexte : L'utilisateur effectue une recherche, selectionne un resultat et ouvre le formulaire correspondant à son résultat. En VBA, lorsque l'utilisateur clic sur le bouton pour ouvrir le formulaire, une marco execute des commande SQL sur plusieurs tables, le resultat de ces requetes est ensuite inseré dans le formulaire. Jusqu'ici pas de probléme. Mais (parce qu'il y a toujours un mais) la table contenant les informations possède des champs Oui/Non. Lorsque la macro exécute une commande Select puis OpenRecordSet, la valeur de ma case à cocher dans le formulaire est VRAI/FAUX, alors que lorsque l'utilisateur change la valeur de la case à cocher dans le formulaire, la valeur et 0/-1. Donc lorsque l'utilisateur sauvegarde les changement en cliquant sur un bouton, la macro exécute la commande SQL Update et toutes les cases à cocher qui ont des valeurs VRAI/FAUX (donc celles où l'utilisateur n'a rien changé) ne sont pas prises en compte et la commande Update renvoie 0 pour ces cases. J'ai donc perte des informations si l'utilisateur ne remet pas manuellement les valeur à 0 ou -1 dans chaque case à cocher. Y a-t-il un moyen d’harmoniser tout ça ? Ma requête Select pour les cases à cocher ne peut-elle pas renvoyer 0 ou -1 au lieu de vrai/faux ? |
|
|
00
|
|
|
#2 | ||
|
Futur Membre du Club
![]() Inscription : octobre 2010 Messages : 65 ![]() |
Bon une solution consiste à écrire un nouveau code à la suite de la requete SELECT pour changer les valeur vrai/faux en 0/-1 :
Code :
Si quelqu'un à la solution miracle qui permet de configurer en amont dans la table et/ou dans Access pour changer cette aberration je suis preneur. |
||
|
|
00
|
|
|
#3 | ||
|
Membre éclairé
![]() |
Bonjour,
Je n'ai quasiment pas travaillé sur ACCESS 2007 et je ne suis encore qu'un débutant sur ACCESS 2003. Mais si tu as une 20aine de contrôles à modifier, tu peux faire un truc du genre : Code :
|
||
|
|
00
|
|
|
#4 |
|
Futur Membre du Club
![]() Inscription : octobre 2010 Messages : 65 ![]() |
Bien vu mais le CheckBox1 était un exemple, aucune de mes cases à cocher à une partie de nom commune.
J'ai créer mes 30 conditions (j'en avais pas une vingtaine mais une trentaine !)mais c'est vraiment trop encombrant. |
|
|
00
|
|
|
#5 |
|
Membre chevronné
![]() ![]() |
Salut
VBA et SQL ne traitent pas les champs boolean de la même manière: pour VBA c'est "true" et "false" pour SQL c'est "yes" et "no" @+
__________________
Le monde est trop bien programmé pour être l’œuvre du hasard… |
|
00
|
|
|
#6 | |
|
Membre éclairé
![]() |
Citation:
Au début je ne le faisais pas mais c'est super pratique et on ne peux plus s'en passer après ! Il y a un article très bien fait sur le sujet dans les tutos il me semble. Par exemple pour les : -textbox : txt_nomDuControle -Label : lbl_nomDuControle -Checkbox : chk_nomDuControle -Liste : lst_nomDuControle -bouton : btn_nomDuControle etc. Non seulement ça permet d'utiliser l'algorithme que je t'ai cité par exemple mais d'un seul coup d'oeil, tu sais de quel type de controle il s'agit |
|
|
|
00
|
|
|
#7 | ||||
|
Futur Membre du Club
![]() Inscription : octobre 2010 Messages : 65 ![]() |
Pourtant avec le code que j'est écrit plus haut, SQL semble comprendre 0 et -1.
De plus ma requete renvoie VRAI ou FAUX dans la case a cocher sans modification. Ce que je ne comprend pas c'est que sans rien modifier, la requete update ne comprend pas Vrai/Faux. ![]() Exemple: On a à disposition une table nommée Table1 avec un Champs "Prenom" en type Oui/Non. Dans le formulaire1: Code :
Lorsque l'utilisateur valide des changement dans le formulaire2 ce exécute : Code :
|
||||
|
|
00
|
|
|
#8 |
|
Membre éclairé
![]() |
Je n'ai peut-être pas assez de détails concernant ton appli, mais jusqu'alors, lorsque j'utilises des champs booléens dans mes tables, les formulaires sont directement basés sur les tables. Comme ça, lorsque l'utilisateur coche une case, elle est aussi cochée dans la table. Ce qui évite de passer par une requête UPDATE. Peut-être qu'en revoyant la conception de tes formulaires il est possible de faire ainsi (filtrage des formulaires pour un ID particulier par exemple)
|
|
|
00
|
|
|
#9 |
|
Futur Membre du Club
![]() Inscription : octobre 2010 Messages : 65 ![]() |
Ok Paidge, je prend note, j'ai mis du temps mais je viens de comprendre ton raisonnement lol.
Efectivement cela pourrait me permettre de simplifier mes 30 conversions. En fait je me sers de la génération automatique de formulaire dans Access pour copier la structure et donc les noms des contrôles correspondent aux noms des champs. Ce qui me simplifie la visibilité dans VBA et cela m'évite de retaper le nom de tous les contrôles. Mais je prend note de ta remarque
|
|
|
00
|
|
|
#10 |
|
Futur Membre du Club
![]() Inscription : octobre 2010 Messages : 65 ![]() |
lol ya un décalage dans nos réponse on va finir par faire des amalgame ^^.
Je ne voulais pas passer uniquement par la génération de formulaire car il n'y a pas assez de contrôle sur l'intégrité des données. La au moins l'utilisateur clique sur le bouton "Valider", je lui repose ensuite la question de savoir si il est sure de vouloir faire des changement et seulement après la mise à jour s’effectue. Avec la génération automatique de formulaire, les données sont mis a jour en direct, donc si il y a une fausse manip, les données sont faussées. |
|
|
00
|
|
|
#11 | |||
|
Membre éclairé
![]() |
Je t'accorde que ça peut paraître un peu lourd (et long) de renommer tous les contrôles. Mais c'est du temps de gagner pour plus tard
Par exmple dans ton code : Code :
Citation:
EDIT : facile à retrouver en plus : juste >>ICI<< ou >>LA<< |
|||
|
|
00
|
|
|
#12 |
|
Futur Membre du Club
![]() Inscription : octobre 2010 Messages : 65 ![]() |
![]() Merci beaucoup, je pense revoir (à mon grand regret) ma base de données. Encore merci du coup de main. Au passage, l'énigme de base n'a pas été résolue. C'est un problème connu et on fait avec ou c'est un problème dans ma base? Mais on va dire que c'est pour la curiosité. |
|
|
00
|
|
|
#13 |
|
Futur Membre du Club
![]() Inscription : octobre 2010 Messages : 65 ![]() |
Un dernier p'tit truc :
Ma méthode me permettais d'afficher les informations d'un seul enregistrement. La génération de formulaire met un compteur d’enregistrement en bas pour naviguer entre eux et choisir quel enregistrement modifier. Peut-on afficher les informations d'un seul enregistrement dans la génération automatique de formulaire ? Il faut obligatoirement passer par une requête et indiquer la clause WHERE ? |
|
|
00
|
|
|
#14 | |||
|
Membre éclairé
![]() |
Citation:
Perso j'ai fait ma première grosse appli en 6 mois. Cétait tellement le bordel dans les noms des contrôles et les bouts de code récupérés à droite et à gauche que j'ai tout recommencé...Mais l'expérience aidant, j'ai mis 3 mois au lieu de 6 à la refaire avec encore plus de fonctionnalités, du code bien propre et bien commenté et qui pèse deux fois moins lourd ! C'est comme ça qu'on apprend Citation:
Citation:
NB : quand tu te trouves dans VBE pour afficher ton code, place ton cursuer sur les mots-clés et appuies sur F1. L'aide est très bien faite |
|||
|
|
00
|
|
|
#15 | |||
|
Futur Membre du Club
![]() Inscription : octobre 2010 Messages : 65 ![]() |
Citation:
Citation:
Citation:
Aprés toutes ces émotions je pense pouvoir dire que le sujet est résolue ! Merci à toi Paidge
|
|||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com