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

encore un probleme avec le controle onglet

3 réponses
Avatar
el_quincho
Dans mon controle onglet, j'ai inseré un sous formulaire. Le meme sous
formulaire pour chaque onglet.

J'ai ecrit ce code :

Private Sub ongbudget_Change()
Dim SQLAL As String
Dim SQLAM As String
Dim SQLBD As String

If PageIndex = 0 Then
SQLAL = "SELECT parametre2.ND... budget2 ON parametre2.idparamm =
budget2.idparam"
SQLAL = SQLAL & " WHERE parametre2.ND= ""AL"""
SQLAL = SQLAL & ";"
[SF_budget].Form.RecordSource = SQLAL
[SF_budget].Form.Requery
End If

If PageIndex = 1 Then
SQLAM = "SELECT parametre2.ND... INNER JOIN budget2 ON parametre2.idparamm
= budget2.idparam"
SQLAM = SQLAM & " WHERE parametre2.ND= ""AM"""
SQLAM = SQLAM & ";"
[SF_budgetAM].Form.RecordSource = SQLAM
[SF_budgetAM].Form.Requery
End If

If PageIndex = 2 Then
SQLBD = "SELECT parametre2.ND... INNER JOIN budget2 ON parametre2.idparamm =
budget2.idparam"
SQLBD = SQLBD & " WHERE parametre2.ND= ""BD"""
SQLBD = SQLBD & ";"
[SF_budgetBD].Form.RecordSource = SQLBD
[SF_budgetBD].Form.Requery
End If
End Sub



Ca marche bien pour le premier onglet mais pas pour les autres je comprend
pas
Le sous formulaire SF_budget et SF_budget AM et SF_budgetBD sont les meme
sauf que access m'a demandé de changer le nom c'est tout

3 réponses

Avatar
Ilan
Bonjour, heu j'ai déjà du mal à comprendre à quoi correspond la variable
PageIndex; n'étant ici liée à aucun objet.
Peux-tu essayer en testant la valeur de la variable ongbudget.value à la
place de PageIndex.


Dans mon controle onglet, j'ai inseré un sous formulaire. Le meme sous
formulaire pour chaque onglet.

J'ai ecrit ce code :

Private Sub ongbudget_Change()
Dim SQLAL As String
Dim SQLAM As String
Dim SQLBD As String

If PageIndex = 0 Then
SQLAL = "SELECT parametre2.ND... budget2 ON parametre2.idparamm =
budget2.idparam"
SQLAL = SQLAL & " WHERE parametre2.ND= ""AL"""
SQLAL = SQLAL & ";"
[SF_budget].Form.RecordSource = SQLAL
[SF_budget].Form.Requery
End If

If PageIndex = 1 Then
SQLAM = "SELECT parametre2.ND... INNER JOIN budget2 ON parametre2.idparamm
= budget2.idparam"
SQLAM = SQLAM & " WHERE parametre2.ND= ""AM"""
SQLAM = SQLAM & ";"
[SF_budgetAM].Form.RecordSource = SQLAM
[SF_budgetAM].Form.Requery
End If

If PageIndex = 2 Then
SQLBD = "SELECT parametre2.ND... INNER JOIN budget2 ON parametre2.idparamm =
budget2.idparam"
SQLBD = SQLBD & " WHERE parametre2.ND= ""BD"""
SQLBD = SQLBD & ";"
[SF_budgetBD].Form.RecordSource = SQLBD
[SF_budgetBD].Form.Requery
End If
End Sub



Ca marche bien pour le premier onglet mais pas pour les autres je comprend
pas
Le sous formulaire SF_budget et SF_budget AM et SF_budgetBD sont les meme
sauf que access m'a demandé de changer le nom c'est tout



Avatar
Gilbert
Bonjour,

Est-tu sûr qu'un même formulaire puisse avoir plusieurs RecordSource
différents simultanément?
Un premier pour la page 1 , un autre pour la page 2...
J'ai des doutes la dessus.

Pourquoi ne pas mettre un seul sous-formulaire dont tu changes le
RecordSource?

Gilbert


"el_quincho" a écrit dans le message
de news:
Dans mon controle onglet, j'ai inseré un sous formulaire. Le meme sous
formulaire pour chaque onglet.

J'ai ecrit ce code :

Private Sub ongbudget_Change()
Dim SQLAL As String
Dim SQLAM As String
Dim SQLBD As String

If PageIndex = 0 Then
SQLAL = "SELECT parametre2.ND... budget2 ON parametre2.idparamm > budget2.idparam"
SQLAL = SQLAL & " WHERE parametre2.ND= ""AL"""
SQLAL = SQLAL & ";"
[SF_budget].Form.RecordSource = SQLAL
[SF_budget].Form.Requery
End If

If PageIndex = 1 Then
SQLAM = "SELECT parametre2.ND... INNER JOIN budget2 ON
parametre2.idparamm

= budget2.idparam"
SQLAM = SQLAM & " WHERE parametre2.ND= ""AM"""
SQLAM = SQLAM & ";"
[SF_budgetAM].Form.RecordSource = SQLAM
[SF_budgetAM].Form.Requery
End If

If PageIndex = 2 Then
SQLBD = "SELECT parametre2.ND... INNER JOIN budget2 ON parametre2.idparamm
budget2.idparam"
SQLBD = SQLBD & " WHERE parametre2.ND= ""BD"""
SQLBD = SQLBD & ";"
[SF_budgetBD].Form.RecordSource = SQLBD
[SF_budgetBD].Form.Requery
End If
End Sub



Ca marche bien pour le premier onglet mais pas pour les autres je comprend
pas
Le sous formulaire SF_budget et SF_budget AM et SF_budgetBD sont les meme
sauf que access m'a demandé de changer le nom c'est tout



Avatar
Gilles MOUGNOZ
Dans mon controle onglet, j'ai inseré un sous formulaire. Le meme sous
formulaire pour chaque onglet.
J'ai ecrit ce code :
Private Sub ongbudget_Change()
...
If PageIndex = 0 Then
SQLAL = "SELECT parametre2.ND... budget2 ON parametre2.idparamm > budget2.idparam"
SQLAL = SQLAL & " WHERE parametre2.ND= ""AL"""
SQLAL = SQLAL & ";"
[SF_budget].Form.RecordSource = SQLAL
[SF_budget].Form.Requery
End If

End Sub
Ca marche bien pour le premier onglet mais pas pour les autres je comprend
pas
Le sous formulaire SF_budget et SF_budget AM et SF_budgetBD sont les meme
sauf que access m'a demandé de changer le nom c'est tout


Bonjour, El Quincho

Si j'ai bien lu, la seule différence entre toutes ces requêtes est la clause
WHERE où le champ ND de la table parametre2 est égal à "AL", "AM" ou "BD".
Si ces valeurs sont fixes, voila ce que je te propose:
1) Sur ton formulaire, sort le sous-formulaire de la 1ère page de ton
contrôle Onglet et supprime ce dernier.
2) Au-dessus du sous-formulaire, crée une zone de liste déroulante qui aura
comme source une liste de valeur organisée comme suit:
"AL";"Page1";"AM";"Page2";"BD";"Page3" et indique AL comme valeur par défaut
3) Dans les propriétés de Format de ta liste déroulante, indique qu'elle a 2
colonnes et que la première est de largeur 0 (afin qu'elle n'apparaisse pas)
4) Crée "en vrai" la requête que tu veux attribuer à ton sous-formulaire et,
comme critère pour le champ parametre2.ND, tape: Formulaires![Ton
formulaire]![Ta liste déroulante]
5) Renseigne la requête que tu viens de créer comme source de ton
sous-formulaire
6) Sur ton formulaire principal, sur l'événement AfterUpdate de ta nouvelle
liste déroulante, écris simplement le code: [SF_budget].Form.Requery

Si le sous-formulaire est vide à l'ouverture, place aussi l'instruction
[SF_budget].Form.Requery sur le Form_Open du formulaire principal.
A partir de là, tu peux faire toutes les améliorations que tu veux et même
simuler une navigation par onglet !

Bonne continuation