[Access 2007] Cocher cases pour une requête

Cocher cases pour une requête [Access 2007] - VB/VBA/VBS - Programmation

Marsh Posté le 01-07-2010 à 09:51:45    

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

Reply

Marsh Posté le 01-07-2010 à 09:51:45   

Reply

Marsh Posté le 02-07-2010 à 08:52:14    

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. ?


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 02-07-2010 à 09:51:13    

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)

Reply

Marsh Posté le 02-07-2010 à 11:08:37    

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.


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 02-07-2010 à 11:43:56    

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
Reply

Marsh Posté le 02-07-2010 à 12:36:25    

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


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 02-07-2010 à 14:14:45    

Presque le même nom : chk_box_nom_du_champ .

Reply

Marsh Posté le 02-07-2010 à 15:15:12    

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 SuppotDeSaTante le 02-07-2010 à 15:16:32

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 02-07-2010 à 15:48:37    

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
Reply

Marsh Posté le 02-07-2010 à 16:07:18    

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


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

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 02-07-2010 à 16:07:18   

Reply

Marsh Posté le 02-07-2010 à 16:48:08    

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 ?

Reply

Marsh Posté le 02-07-2010 à 17:17:51    

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 SuppotDeSaTante le 02-07-2010 à 17:18:09

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 02-07-2010 à 17:35:29    

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 ?

Reply

Marsh Posté le 02-07-2010 à 18:10:33    

Comment ça ?


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 02-07-2010 à 19:12:33    

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...)

Reply

Marsh Posté le 02-07-2010 à 19:17:54    

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


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 05-07-2010 à 12:09:36    

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

Reply

Marsh Posté le 05-07-2010 à 12:33:26    

Reply

Marsh Posté le 06-07-2010 à 11:21:56    

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
Reply

Marsh Posté le 06-07-2010 à 13:40:14    

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 SuppotDeSaTante le 06-07-2010 à 13:42:50

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 06-07-2010 à 15:05:17    

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

Reply

Marsh Posté le 06-07-2010 à 15:14:45    

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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