Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[97] Comment "convertir" un formulaire en Etat ?

4 réponses
Avatar
Thomas
Bonjour,

j'ai un formulaire qui s'affiche après un double-click dans une zone de
résultat (crée avec le tutoriel de LouFab).

Ce formulaire est composé de deux sous-formulaires (dont un comprend
également un sous-formulaire).

Je bidouille pour faire afficher les données, mais je n'arrive pas pour le
sous-sous-formulaire.

J'ai cru voir que sous Access 2007 il y avait un bouton pour faire tout sa,
peut-on transcrire ce que fait ce bouton sous Access97 ?

Merci

4 réponses

Avatar
3stone
Salut,

"Thomas"
| j'ai un formulaire qui s'affiche après un double-click dans une zone de
| résultat


Je connais les "zone de texte" (TextBox) et les "zone de liste" (ListBox)
mais pas de "zone de résultat" ;-)

|
| (crée avec le tutoriel de LouFab)
|


Ne semble pas fréquenter ce newsgroup ;-)



| Ce formulaire est composé de deux sous-formulaires (dont un comprend
| également un sous-formulaire).
|
| Je bidouille pour faire afficher les données, mais je n'arrive pas pour le
| sous-sous-formulaire.
|
| J'ai cru voir que sous Access 2007 il y avait un bouton pour faire tout sa,
| peut-on transcrire ce que fait ce bouton sous Access97 ?


Il aurait fallu dire ce que fait ce bouton...

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Thomas
Oula oui mon post est en effet très mal-dit.

Donc, après un double-click sur un enregistrement affiché dans une Zone de
liste ;-)

Un formulaire s'ouvre et affiche les différentes valeurs de l'enregistrement
dans plusieurs Zone de texte, mais aussi dans plusieurs sous-formulaires X et
Y.

Ex : Dans les zones de texte j'affiche la référence, le sigle etc..
Dans un sous-formulaire (sous forme de tableau) j'affiche ce qui
concerne le client.


Ce que je souhaiterais ensuite, c'est de pouvoir afficher tout sa dans un
Etat.

Pour afficher les zones de textes du formulaire dans mon Etat j'utilise ceci :
=[Formulaires]![frmAutoCataloguePostProd]![CataloguePostProd.reference]

(frmAutoCataloguePostProd étant le formulaire s'affichant après le double
click, CataloguePostProd.Reference le champ reference de la table
CataloguepostProd)

Cependant, je n'arrive pas à afficher le sous-formulaire X de
frmAutoCataloguePostProd car il contient lui-mème un sous-formulaire.

Alors que le sous-formulaire Y s'affiche correctement.

Je cherche donc le moyen d'afficher toutes les données de
frmAutoCataloguePostProd.

J'ai entedu parler d'un bouton sous Access 2007 qui serait capable de faire
cela.
Avatar
3stone
Salut,

"Thomas"
| Donc, après un double-click sur un enregistrement affiché dans une Zone de
| liste ;-)
|
| Un formulaire s'ouvre et affiche les différentes valeurs de l'enregistrement
| dans plusieurs Zone de texte, mais aussi dans plusieurs sous-formulaires X et
| Y.
|
| Ex : Dans les zones de texte j'affiche la référence, le sigle etc..
| Dans un sous-formulaire (sous forme de tableau) j'affiche ce qui
| concerne le client.
|
|
| Ce que je souhaiterais ensuite, c'est de pouvoir afficher tout sa dans un
| Etat.
|
| Pour afficher les zones de textes du formulaire dans mon Etat j'utilise ceci :
| =[Formulaires]![frmAutoCataloguePostProd]![CataloguePostProd.reference]
|
| (frmAutoCataloguePostProd étant le formulaire s'affichant après le double
| click, CataloguePostProd.Reference le champ reference de la table
| CataloguepostProd)


Là, tu as un problème...

=[Formulaires]![frmAutoCataloguePostProd]![CataloguePostProd.reference]

Si tu t'adresse à une zone de texte (ZdT) d'un formulaire, il faut l'adresser via
le nom de cette zone de texte et nom à la source de cette ZdT

D'autre part, si tu essaies de récupérer dans le/les formulaires toutes les infos
nécessaires à la création de ton état, c'est que, soit la conception des tables
et leurs relations est plus que hasardeuse, soit tu utilises une mauvaise approche
pour créer cet état.

S'il est vrai qu'un état peut récupérer certaines informations directement
dans un formulaire, le gros (le principal) des données doit venir de la source
même de l'état en question.
Cela veux dire que l'on peut par exemple utiliser la même requête pour
alimenter l'état que celle qui alimente le formulaire. A l'ouverture de l'état,
il suffira de transmettre soit un filtre, soit une clause "Where", voir les deux.


| Cependant, je n'arrive pas à afficher le sous-formulaire X de
| frmAutoCataloguePostProd car il contient lui-mème un sous-formulaire.
|
| Alors que le sous-formulaire Y s'affiche correctement.
|
| Je cherche donc le moyen d'afficher toutes les données de
| frmAutoCataloguePostProd.


Tu tentes de l'afficher où ? dans l'état ?
ou alors tu essaies d'afficher un sous-form dans un sous-form en mode continu ?


| J'ai entedu parler d'un bouton sous Access 2007 qui serait capable de faire
| cela.

Ah... si maintenant il y a des boutons qui permettent de choses ;-))

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Thomas
Je construis ma requête SQL comme cela (mes tables sont reliés pour que sa
marche ;-) )
(Je vois d'ici la remarque "Pourquoi utiliser les strTableX au lieu du nom
des tables ?" Je répondrais que je m'en sers ailleurs.


strTable1 = "CataloguePostProd"
strTable2 = "ParcVendu"
strTable3 = "IndicateurSoutien"
strTable4 = "PriceListSan"
' construit la rq sql
strSql = "SELECT DISTINCTROW * FROM [" & strTable1 & "] LEFT OUTER JOIN (["
& strTable2 & "] LEFT OUTER JOIN ([" & strTable3 & "] LEFT OUTER JOIN [" &
strTable4 & "] ON PriceListSan.Equipement =
IndicateurSoutien.Sigle_Equipement ) ON ParcVendu.Sigle_Commercial =
IndicateurSoutien.Sigle_Equipement) ON ParcVendu.reference =
CataloguePostprod.Reference WHERE((" & strCriteria & "));"

Ensuite, voici le code de la zone de liste Après-double-click :

Private Sub lst_resultat_DblClick(Cancel As Integer)
Dim rst As Recordset
Dim strCriteria As String
Set rst = CurrentDb.OpenRecordset("tbl_TempLstFrm", dbOpenSnapshot)
' recherche les informations de la table
rst.FindFirst ("Table='" & Me.cbo_table & "'")
If rst.NoMatch Then ' non trouvé
MsgBox "Cette table ne possède pas de formulaire. Veuillez renseigner la
table des paramètres.", vbCritical + vbOKOnly, "formulaire de Recherche"
Exit Sub
Else ' trouvé
If lf_GetTypeField(Me.cbo_table, rst.Fields("Champ")) = dbText Then 'la clef
est Texte
strCriteria = rst.Fields("Champ") & "='" & Me.lst_resultat & "'"
Else 'la clef est numérique
strCriteria = rst.Fields("Champ") & "=" & Me.lst_resultat
End If
DoCmd.OpenForm rst.Fields("Formulaire"), acNormal, , strCriteria
End If
End Sub

Donc tu penses que si je reprends ma requête SQL en y ajoutant un critère
Where, et que je base un Etat sur cette requête sa marcherait ? Je vais
essayer.