Ouverture conditionnée de formulaire ACCESS

chewinggum -  
 Rylobarteam -
Bonjour à tous:
mon problème concerne du code VB pour un bouton de compmande dans un formulaire ACCESS.

Une table T_ACT avec deux champs: ACT (texte) et DISPO (oui/non).
Un formulaire F_CHOIX avec une zone de liste (qui prend les valeurs de ACT) appelé ACTIVITES, et un bouton de commande qui doit ouvrir deux formulaires au choix.
Le premier formulaire doit s'ouvrir si DISPO = oui pour, l'autre si DISPO =non.

Comment écrire en code pour le bouton:
Sur clic, Place toi sur l'enregistrement de T_ACT où ACT=ACTIVITES spécifié dans F_CHOIX.
Si, pour cet enregistrement DISPO = oui alors ouvre F_1, si DISPO =non alors ouvre F_2.

MErci beaucoup pour l'aide que vou spourrez m'apporter
Configuration: Windows XP
Internet Explorer 6.0

2 réponses

  1. Rylobarteam
     
    Je vois deux solutions à ton problème et cela dépend si ta liste de choix comporte la colonne Dispo (affiché ou pas) ou non.

    Dans le premier cas (en admettant que Dispo soit la 2ème colonne de ta liste:

    Dim intIndex as Integer
    Dim blnDispo as Boolean
    Dim intNumColonne as Integer

    intIndex = Me.ACTIVITES.ListIndex 'Tu récupère le numéro de la ligne sélectionné

    blnDispo = Me.ACTIVITES.Column(IntIndex,intNumColonne) 'Tu récupère la valeur de Dispo

    intNumColonne = 1 'Ta valeur de dispo se trouve dans la 2ème colonne de ta liste de choix, donc : 2-1.

    If blnDispo = true then
    DoCmd.OpenForm "F_1"
    else
    DoCmd.OpenForm "F_2"
    End if

    Bien sur, ce code est à adapter suivant que ta valeur de Dispo est dans la 1ère ou 2ième colonne de ta liste de choix.
    Il est aussi à préciser que le numéro de ligne et de colonne d'une liste de choix est numéroté à partir de 0. C'est pourquoi pour la 1ère colonne tu mettra 0, pour la deuxième 1 etc....

    Deuxième cas :

    Private Sub NomDu Boutton_Click()
    On Error Goto TraitError

    Dim Cnn as Adodb.Connection
    Dim rst as Adodb.Recordset

    Dim str as string
    Dim strACT as string

    Dim intIndex as Integer

    Set Cnn = CurrentProject.Connection
    Set rst = new Adodb.Recordset

    intIndex = Me.ACTIVITES.ListIndex 'Tu récupère le numéro de la ligne sélectionné

    strACT = Me.ACTIVITES.Column(intIndex,0)

    str = "SELECT T_ACT.* FROM T_ACT WHERE ((T_ACT.ACT)=""" & strACT & """)"

    rst.Open str,Cnn,adOpenDynamic,adCmdText

    if Not rst.BOF then rst.MoveFirst

    If rst.EOF then
    Goto Fin
    End Fin

    If rst("DISPO") = True then

    DoCmd.OpenForm "F_1"

    else

    DoCmd.OpenForm "F_2"

    end if

    Fin:

    Set Cnn = Nothing
    Set rst = Nothing

    TraitError
    MsgBox "Erreur : " & Err.Number & vbcrlf & vbcrlf & "Description : " & Err.Description
    Goto Fin

    End Sub
    0