Condition sur ouverture d'un état en mode preview print

cs_chakaam Messages postés 6 Date d'inscription mardi 25 août 2009 Statut Membre Dernière intervention 9 novembre 2009 - 9 nov. 2009 à 10:23
cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 - 9 nov. 2009 à 17:32
Salut à tous, je bloque sur un problème depuis quelques jours :

- Sur une base de données Access, j'ai mon menu général.
- Dans ce menu, j'ai un bouton pour ouvrir un état avec une condition (choix d'un numéro de pièce).
- Sur l'état, j'ai un bouton imprimer, qui ouvre l'état en mode aperçu avant impression.

C'est sur ce bouton que je bloque : j'aimerais ouvrir l'état avec la même condition du début (même pièce), mais pas moyen de trouver la syntaxe correspondante .

J'espère que vous pourrez m'éclairer .

Merci d'avance, et vive les frites !

11 réponses

cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 2
9 nov. 2009 à 10:43
Salut chakaam,

J'ai une question, puisqu'à partir de ton menu général tu ouvre ton état avec déjà un numéro de pièce (ou d'enregistrement) particulier, pourquoi as-tu besoin de repréciser ce numéro pour l'impression ?
Le problème est peut être déjà là, en amont, la manière avec laquelle tu ouvre ton état au départ.

De plus, si tu as un code pour ouvrir ton état avec un numéro particulier, pourquoi tu ne peux pas le réutiliser pour imprimer ?
Le numéro de pièce particulier tu l'as toujours puisque l'état est ouvert dessus.

A+
0
cs_chakaam Messages postés 6 Date d'inscription mardi 25 août 2009 Statut Membre Dernière intervention 9 novembre 2009
9 nov. 2009 à 11:54
Justement je ne sais pas pourquoi Access ne garde pas en mémoire le numéro de pièce...

J'ai essayé de réutiliser le même code, mais ça ne marche pas .
0
cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 2
9 nov. 2009 à 13:19
Oui mais là tu n'aide pas beaucoup. Si tu ne donne pas plus d'éléments, ça va être dur de te dire (éventuellement) pourquoi.

- Tu pourrais donner le code qui te sert à ouvrir l'état.
- Quelle est la source de données de l'état ? Table ? Requête ? Requête dynamique codée au moment du click sur le bouton d'appel ?
- Sommairement, la structure de ta table contenant les infos.
0
cs_chakaam Messages postés 6 Date d'inscription mardi 25 août 2009 Statut Membre Dernière intervention 9 novembre 2009
9 nov. 2009 à 14:41
- je n'utilise pas de code vba pour ouvrir l'état depuis le menu général, mais une macro Access : OpenReport avec comme condition [Work order]=[Forms]![Switchboard]![wo_list]
La source de donnée est une requéte.

- pour ouvrir l'aperçu avant impression j'utilise un code vba :

Dim Condition As String
Condition = ????
DoCmd.OpenReport "Work Order fixtures", acViewPreview, , Condition, acWindowNormal
(c'est sur le condition que je bloque).

- la table à cette structure :
ID <--> Autonumber
Numéro de pièce <--> Text
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 2
9 nov. 2009 à 15:16
Ok, hé bien dans le deuxième cas, condition est du même genre que dans le premier.

Pour y voir plus clair:
Quand tu associe un état avec une source de données, celui-ci te permet d'atteindre facilement chacun des champs de cette source de cette manière en vba :"Me.NomDuChampConcerné", ou bien "Me![NomDuChampConcerné]". "Me" étant l'état en cours.

Donc si le champ qui te permet de selectionner une pièce est "Work order" et que ce champ est donc présent dans la requête liée à l'état, il (l'état) te permet de connaitre sa valeur par Me![Work order]. En passant, selon moi, à éviter les noms de champs, table, requêtes etc... avec des espaces.

Te reste plus qu'à assembler tout ça

A+
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
9 nov. 2009 à 15:35
hello,

Heuuu juste une question : quel rapport avec le dotNet ?

Chris...
- Le sens vital n'est pas un sens unique -
0
cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 2
9 nov. 2009 à 15:54
en effet... bonne remarque...
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
9 nov. 2009 à 16:01
J'avais pas fait gaffe, mais j'adore ton lionceau Ayr


Chris...
- Le sens vital n'est pas un sens unique -
0
cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 2
9 nov. 2009 à 16:08
Au choix, il veut dire:

- me concernant quand je fait (en permanance) des conneries: "Ho purée ! Qu'est-ce que je suis con!"
- Les autres, quand il y à des questions ou des réponses à côté de la plaque: "Ho purée! Qu'est-ce qu'il est con!"



nb: je m'en suis appliqué un pour ce fil
0
cs_chakaam Messages postés 6 Date d'inscription mardi 25 août 2009 Statut Membre Dernière intervention 9 novembre 2009
9 nov. 2009 à 16:49
Merci des réponses, bien que je comprenne pas pourquoi parler du dotNet ^^'

Comme condition j'ai essayé
[Work order] = Me![Work order]
, mais cela ouvre l'état avec tout les Work Order existant.
0
cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 2
9 nov. 2009 à 17:32
On parle de DotNet car tu es dans la catégorie vb.net et ton problème concerne vba.

j'ai essayé et ça marche chez moi. Il faudrait le contexte entier de l'utilisation que tu fais du code pour savoir pourquoi ça ne marche pas chez toi. Sache que si au départ ton état est ouvert avec plusieurs enregistrements à visualiser/imprimer, au moment où tu cliquera sur le bouton, seul l'enregistrement en cours sera envoyé.

Une autre solution que j'aime bien utiliser c'est créer une table avec un seul champ, du même type que celui qui me servira à filtrer. Nommons la "T_AImprimer" et le champ "IDT_Data".

On admet que j'ai déjà une table "T_Data" avec un champ "ID".

Ensuite créer une requête avec la table qui contient les données à imprimer et la table précédente en faisant un lien entre le champ unique et celui correspondant de la table avec les données. Dans cet exemple, un lien entre "T_AImprimer.IDT_Data" et "T_Data.ID".
C'est cette requête qui servira comme source de données à mon état.

Au moment d'ouvrir l'état je fais :

CurrentDB.Execute("UPDATE TAImprimer SET TAImprimer.IDT_Data=" & VariableQuiContientLaValeurSpecifique & ";")

Et j'ouvre l'état.
En réalité, je m'en sers dès que j'ai besoin de sélectionner un enregistrement précis pour travailler ensuite avec. Donc ouverture d'un état ou autre chose.

L'avantage c'est que la ligne désiré est sélectionnée une fois pour toute (jusqu'au prochain UPDATE) et que je peux fermer ouvrir et trvailler avec mes états sans avoir à recoder à chaque fois le filtre ou répercuter le choix d'une form ou d'un état à l'autre.

A toi de voir si ça peut te convenir.

A+
0
Rejoignez-nous