Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2288 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Access 2007] Cocher cases pour une requête

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Access 2007] Cocher cases pour une requête

n°2006228
le_sayan
Posté le 01-07-2010 à 09:51:45  profilanswer
 

Bonjour,  
j'aimerais créer dans un formulaire sous access des cases, à coté de chacun de mes champs contenant une valeur, afin de créer une requête de sélection à partir de ces cases.
J'aimerais en effet, juste cliquer sur ces cases depuis mon formulaire et puis sur un bouton pour qu'access réalise une requête simple avec comme champs, les champs des cases sélectionner.
Quelqu'un à une idée de comment faire?
Merci d'avance

mood
Publicité
Posté le 01-07-2010 à 09:51:45  profilanswer
 

n°2006494
dje69r
Arme de distraction massive
Posté le 02-07-2010 à 08:52:14  profilanswer
 

Re ;)
 
Qu'entends tu par "requete simple" ?
Les champs de ton formulaires (controle textbox je suppose) contiennent des infos ? Le formulaire est basé sur une requete ou une table et les controles textbox renvoient les données de ces dernieres ou pas ?
Tu veux t'en servir pour faire des filtres ?
 
Faut etre un peu plus explicite, il y a tellement de solutions differentes ou de manieres d'aborder une problématique, qu'il faut cibler le besoin plus pertinament...
 
Un screen de ton formulaire, un fichier etc. ?


---------------
Plus tu pédales moins vite, moins tu avances plus vite — SuperLoustic ! La radio des Loustics !
n°2006518
le_sayan
Posté le 02-07-2010 à 09:51:13  profilanswer
 

Salut dje69r  :jap:  
Alors, requête simple signifie requête de sélection ( désolé, j'apprend au fur et à mesure le vocabulaire d'access).
Les champs de mon formulaire sont issus pour la majorité des tables, mais aussi des requêtes, de listes déroulantes et de sous formulaires.
Je pense qu'il est possible de faire des filtres mais je ne vois pas dans quel but...
Je pensais au départ faire un code VBA avec un truc du genre  
 if check_box= true, alors ajouter le champs X à la requête de section, et à la fin exécuter ( je connais pas toute la synthaxe  :??: )
Mais bon, étant donnée le nombre de champ, cela risque d'être long.
Voilà un extrait de mon formulaire
http://img203.imageshack.us/img203/5940/exempley.jpg
 
Je voudrais que les cases à gauche commandent l'ajout des champs correspondants dans une requête de sélection (ceci afin d'extraire des données sous excel et de faire des calculs/stats)

n°2006554
dje69r
Arme de distraction massive
Posté le 02-07-2010 à 11:08:37  profilanswer
 

Désolé je ne comprends pas ce que tu veux...
Explique ce que tu voudrais avec le formulaire que tu as mis en exemple, où Identité, Domiciliation et Code NAF sont cochés.


---------------
Plus tu pédales moins vite, moins tu avances plus vite — SuperLoustic ! La radio des Loustics !
n°2006581
le_sayan
Posté le 02-07-2010 à 11:43:56  profilanswer
 

Pour créer une requête de sélection, on peut aller dans "créer", "création de requête", "Afficher la table" et sélectionner les champs qui nous intéresse.
Moi, je voudrais juste cocher des cases en face des champs pour qu'ils s'ajoutent à ma requête.
Je vois mal comment je peux détailler plus que ça  :(


Message édité par le_sayan le 02-07-2010 à 11:44:11
n°2006607
dje69r
Arme de distraction massive
Posté le 02-07-2010 à 12:36:25  profilanswer
 

Aaaaaaaah ok
 
Le nom de ta coche a le meme nom que le champ ?


---------------
Plus tu pédales moins vite, moins tu avances plus vite — SuperLoustic ! La radio des Loustics !
n°2006644
le_sayan
Posté le 02-07-2010 à 14:14:45  profilanswer
 

Presque le même nom : chk_box_nom_du_champ .

n°2006667
dje69r
Arme de distraction massive
Posté le 02-07-2010 à 15:15:12  profilanswer
 

Imaginons que ta table se nomme "Table1" (oui je sais original...)
 

Code :
  1. 'On recupere le nom du champ, en pointant sur celui du formulaire et en enlevant les carcteristiques de la checkbox
  2. NomChamp = Mid(Forms("TonFormulaire" )(chk_box_nom_du_champ.name), 9)
  3. "definiotn du nom de la table
  4. NomTable = "Table1"
  5. 'requete
  6. R = "SELECT " & NomChamp & " FROM " & NomTable & ";"
  7. 'creation de la requete
  8. CurrentDb.CreateQueryDef "TOTO", R


Ta requete s'appellera TOTO..............................
 
ou sinon si tu ne veux pas parametrer la table :

Code :
  1. NomChamp = Mid(Forms("TonFormulaire" )(chk_box_nom_du_champ.name), 9)
  2. R = "SELECT " & NomChamp & " FROM Table1;"
  3. CurrentDb.CreateQueryDef "TOTO", R


Message édité par dje69r le 02-07-2010 à 15:16:32

---------------
Plus tu pédales moins vite, moins tu avances plus vite — SuperLoustic ! La radio des Loustics !
n°2006679
le_sayan
Posté le 02-07-2010 à 15:48:37  profilanswer
 

Alors petit souci. Pour tester, j'ai tapé moi même le nom du champ et de la table :  
 

Code :
  1. Nomchamp = Chiffre_affaire
  2. NomTable = "Entreprise"
  3. R = "SELECT " & Nomchamp & " FROM " & NomTable & ";"
  4. CurrentDb.CreateQueryDef "TOTO", R


 
J'obtiens une requête toto mais la table Entreprise n'est pas prise en compte et le champ "Chiffre_affaire" est remplacé par "expr1 : [Valeur du premier CA] et donc cela ne me liste rien...
 
J'ai mal remplacé ton code ?
Et aussi, ou est-ce qu'on prend en compte le fait que la case est coché ?


Message édité par le_sayan le 02-07-2010 à 15:53:52
n°2006684
dje69r
Arme de distraction massive
Posté le 02-07-2010 à 16:07:18  profilanswer
 

Bah NomChamp doit etre une string...
Donc :
Nomchamp = "Chiffre_affaire"
 
Ah bah non faut tester si la case est cochée...


Message édité par dje69r le 02-07-2010 à 16:07:46

---------------
Plus tu pédales moins vite, moins tu avances plus vite — SuperLoustic ! La radio des Loustics !
mood
Publicité
Posté le 02-07-2010 à 16:07:18  profilanswer
 

n°2006690
le_sayan
Posté le 02-07-2010 à 16:48:08  profilanswer
 

Ok, je rajoute donc un test de check_box.
Tu avais raison j'ai oublié les guillemets. Cette fois-ci cela marche, mais pas avec les noms avec des espaces ( erreur 3075 : erreur de syntaxe, opérateur absent).
Sinon, une fois la requête créée, je ne peux plus exécuter mon code car je ne peux pas ré-enregistrer sur TOTO.
Dernière chose, comment cumuler les champs ?

n°2006700
dje69r
Arme de distraction massive
Posté le 02-07-2010 à 17:17:51  profilanswer
 

Si tu as des noms de champs avec des espaces (des ° etc.), met le nom du champ entre crochet
Genre :
Nomchamp = "[Chiffre affaire]"


Message édité par dje69r le 02-07-2010 à 17:18:09

---------------
Plus tu pédales moins vite, moins tu avances plus vite — SuperLoustic ! La radio des Loustics !
n°2006706
le_sayan
Posté le 02-07-2010 à 17:35:29  profilanswer
 

Ok, ca marche. Pour rajouter un champ j'ai trouvé ( rajouter  ",nom_du_champ"& dans le SELECT après Nom_champ & ). Et pour forcer l'enregistrement ou bien pour l'incrémenter, il y a une commande ?

n°2006715
dje69r
Arme de distraction massive
Posté le 02-07-2010 à 18:10:33  profilanswer
 

Comment ça ?


---------------
Plus tu pédales moins vite, moins tu avances plus vite — SuperLoustic ! La radio des Loustics !
n°2006735
le_sayan
Posté le 02-07-2010 à 19:12:33  profilanswer
 

Eh bien, une fois que j'exécute la commande (j'ai fait un petit bouton cliquable), j'ai bien ma requête TOTO qui se créer. Mais si je reclique sur mon bouton : erreur, access ne peut pas remplacer l'ancien TOTO. Donc il faudrait que je puisse renommer ma requête depuis mon formulaire, ou bien que access puisse écrire sur l'ancienne requête ( voir crée une autre requête TOTO1...)

n°2006739
dje69r
Arme de distraction massive
Posté le 02-07-2010 à 19:17:54  profilanswer
 

Il vaut mieux la supprimer avant...
 
CurrentDb.QueryDefs.Delete "TOTO"


---------------
Plus tu pédales moins vite, moins tu avances plus vite — SuperLoustic ! La radio des Loustics !
n°2007104
le_sayan
Posté le 05-07-2010 à 12:09:36  profilanswer
 

Ok, impeccable ! Merci pour ton aide dje69r !
Bonne journée

n°2007115
dje69r
Arme de distraction massive
Posté le 05-07-2010 à 12:33:26  profilanswer
 

:jap:


---------------
Plus tu pédales moins vite, moins tu avances plus vite — SuperLoustic ! La radio des Loustics !
n°2007337
le_sayan
Posté le 06-07-2010 à 11:21:56  profilanswer
 

Bonjour.
Je reviens sur ce post car j'ai a nouveau un problème avec ce sujet.
Le code fonctionne, sauf pour les cases issues d'un sous-formulaire  : le problème vient de mon "If chk_box_nom_du_champ =true then ...". En effet, Access ne situe pas l'endroit.
J'ai essayer plusieurs adresses :  
 
[sous_formulaire].chk_box_nom_du_champ
Forms![mon_formulaire]![sous_formulaire].chk_box_nom_du_champ
 
Mais cela ne change rien.
 
Quel est la bonne synthaxe pour accèder aux données d'un sous-formulaire ?


Message édité par le_sayan le 06-07-2010 à 11:23:17
n°2007381
dje69r
Arme de distraction massive
Posté le 06-07-2010 à 13:40:14  profilanswer
 

Il y a plusieurs syntaxex possibles, en voici une :

Citation :

Forms("NomFormulairePrincipal" )("NomDuSousFormulaire" )("chk_box_nom_du_champ" )=True


 
Un sous formulaire est un controle comme un autre.
 
Pour mettre le nom en dur on le met entre double cotes, pour passer une variable on met le nom de la variable
 
 
Exemple :
 
On connait le nom du formulairen du sous formulaire et de la checkbox :

Citation :

Forms("NomFormulairePrincipal")("NomDuSousFormulaire")("chk_box_nom_du_champ")


 
On ne connait pas le nom du formulaire :

Citation :

NomForm = "NomDuFormulaire"
Forms(NomForm)("NomDuSousFormulaire")("chk_box_nom_du_champ")


 
On ne connait pas le nom du sous formulaire :

Citation :

NomSSForm = "NomDuSousFormulaire"
Forms("NomFormulairePrincipal")(NomSSForm)("chk_box_nom_du_champ")


 
On ne connait pas le nom de la checkbox:

Citation :

CtlCheckBox = "chk_box_nom_du_champ"
Forms("NomFormulairePrincipal")("NomDuSousFormulaire")(CtlCheckBox )


Message édité par dje69r le 06-07-2010 à 13:42:50

---------------
Plus tu pédales moins vite, moins tu avances plus vite — SuperLoustic ! La radio des Loustics !
n°2007420
le_sayan
Posté le 06-07-2010 à 15:05:17  profilanswer
 

Impeccable ! Encore merci   :jap:  :jap:  :jap:

n°2007429
dje69r
Arme de distraction massive
Posté le 06-07-2010 à 15:14:45  profilanswer
 

;)


---------------
Plus tu pédales moins vite, moins tu avances plus vite — SuperLoustic ! La radio des Loustics !
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Access 2007] Cocher cases pour une requête

 

Sujets relatifs
definir parametre XL suite export accessComment accéder à une base Access à distance
Par défaut requete en de plusieurs tables en relations avec hibernatAccess / Entrer des valeurs au format numérique par SQL
exporter données à partir d'excel vers une table accessLancement de requête Sql automatisé
[RESOLU][vbs]access deniedProblème de mise à jours avec une requête Microsoft Query
Base Access "usée" ?Probleme avec requete sql NOT EXISTS et NOT IN
Plus de sujets relatifs à : [Access 2007] Cocher cases pour une requête


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR