IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Formulaire case à cocher [Sources]


Sujet :

Access

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 38
    Points : 17
    Points
    17
    Par défaut Formulaire case à cocher
    Je souhaite attribuer à un site plusieurs activités

    J'ai fait une table activités dans lequel je rentre une liste d'activités qui peut etre compléter par l'utilisateur.
    J'ai un formulaire site dans lequel je souhaiterais affecter plusieurs activités à chaque site.(ex : sous formulaire avec case à cocher des activités qui s'actualisera si on rajoute des activités dans la table activité.
    l'objectif étant si je fais une requete sur les activités de mon site obtenir l'ensemble des activités du site par exemple
    Comment faire s'il vous plait

  2. #2
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Quelle est la structure de ta base ?

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 38
    Points : 17
    Points
    17
    Par défaut
    Table site :
    Nom, id, adresse,....

    Table activites :
    Activité

    Formulaire de saisie du site :
    Nom, adresse....
    Je souhaiterais lui affecter une à plusieurs activites

  4. #4
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Il te manque donc une table

    tblRealiser(idsite,idactivite)

    Ensuite, je pense qu'il serait préférable d'utiliser une listview.

    Je suis parti sur des nom de tables différents mais peu importe.

    J'ai donc 3 tables

    tblentreprise(Numentreprise,NomEntreprise)
    tblActivite(NumActivite,NomActivite)
    tblRealiser(NumEntreprise,Numactivite)

    2 requêtes sont disponibles

    R01 Liste Activités
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT NumActivite, NomActivite
    FROM tblActivite;
    R02 Activité d'une entreprise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PARAMETERS PEntreprise Long;
    SELECT NumActivite
    FROM tblRealiser
    WHERE NumEntreprise=PEntreprise;
    1 formulaire basé sur la table tblEntreprise avec un contrôle ActivX Microsoft Control ListView SP 6. Nommé ListView1.

    Gestion de l'affichage des activités.

    La gestion de l'affichage doit être effectué à chaque changement d'enregistrement pour synchroniser les entreprises avec leurs activités. L'évenement où devra être exécuté le code sera donc "Sur Activation" (Current)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Private Sub Form_Current()
    Dim oDB As DAO.Database
    Dim oQdf As DAO.QueryDef
    Dim oRstActivite As DAO.Recordset, oRstRealiser As DAO.Recordset
    Dim Item As ListItem
    Dim intAct As Integer
    Set oDB = CurrentDb
    'Vide la zone de liste
    'Dim ListView1 As ListView
    ListView1.ListItems.Clear
    'Définit la propriété Case à cocher à oui
    ListView1.Checkboxes = True
    ListView1.View = lvwList
     
    'Prépare la requête sur la table tblRealiser
    Set oQdf = oDB.QueryDefs("R02 Activité d'une entreprise")
    With oQdf
        .Parameters(0).Value = Me.NumEntreprise
        Set oRstRealiser = .OpenRecordset
    End With
     
    Set oRstActivite = oDB.OpenRecordset("R01 Liste Activités")
    'Parcours le recordset des activités
    With oRstActivite
        While Not .EOF
            intAct = .Fields(0)
            'Crée la nouvelle ligne
            Set Item = ListView1.ListItems.Add(Key:="A" & .Fields(0), Text:=.Fields(1))
            'recherche l'enregistrement
            With oRstRealiser
                .FindFirst "NumActivite=" & intAct
                Item.Checked = Not .NoMatch
            End With
        .MoveNext
        Wend
    End With
     
    End Sub
    Pour que le code fonctionne, il faut ajouter la référence Microsoft DAO

    Reste ensuite à coder la mise à jour d'activité. Cet évenement se produira lorsque l'on cochera une ligne de la case à cocher. L'évènement retenu est donc : ItemCheck.

    On a besoin de deux autres requêtes :

    R03 Insertion

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    PARAMETERS PEntreprise Long, PActivite Long;
    INSERT INTO tblRealiser
    VALUES (PEntreprise, PActivite);
    R04 Suppression

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PARAMETERS PEntreprise INTEGER,PActivite INTEGER;
    DELETE FROM tblRealiser WHERE NumEntreprise=PEntreprise AND NumActivite=PActivite;
    Le code sur l'évenement ItemCheck devient donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Private Sub ListView1_ItemCheck(ByVal Item As Object)
    Dim oDb As DAO.Database
    Dim oQdf As DAO.QueryDef
    Dim strName As String
    If Item.Checked Then
      strName = "R03 Insertion"
    Else
      strName = "R04 Suppression"
    End If
     
    Set oDb = CurrentDb
    Set oQdf = oDb.QueryDefs(strName)
    With oQdf
        .Parameters("PEntreprise") = CInt(Me.NumEntreprise)
        .Parameters("PActivite") = CInt(Mid(Item.Key, 2))
        .Execute
    End With
     
    End Sub
    Ce qui donne :
    Images attachées Images attachées  

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 38
    Points : 17
    Points
    17
    Par défaut Un peu d'explication
    On va y aller progressivement :

    Tables :
    site (Id_site,Nom_site....)
    activite(Numactivite,activite)
    realiser (Id_site, Numactivite)

    Tu m'inscris la requete :

    R02 Activité d'une entreprise

    Citation:
    PARAMETERS PEntreprise Long;
    SELECT NumActivite
    FROM tblRealiser
    WHERE NumEntreprise=PEntreprise;

    Ce qui me donne pour mes données :
    PARAMETERS PSite Long;
    SELECT Numactivite
    FROM realiser
    WHERE Id_site=PSite;


    A quoi correspond PEntreprise (je suis débutant ), si je tape cette requete il me demande de taper une valeur de parametre, si je tape du texte : il m'envoie balader, si je tape un nombre il m'ouvre une table avec un champs
    Numactivite...

  6. #6
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Oui, ce sont des requêtes paramétrées

    Quand dans le formulaire, on visualisera l'entreprise n° 3, Pentreprise sera égal à 3. Cela retournera donc les activités de l'entreprise 3.

    Dans ton cas, il faudrait renommer pEntreprise en PSite

    P comme Paramètre

    Le comportement que tu visualises actuellement est tout à fait normal. C'est le formulaire qui liera le tout

  7. #7
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 38
    Points : 17
    Points
    17
    Par défaut suite
    ok si tout est normal ...

    je fais donc le formulaire
    dans formulaire je cree un formulaire en mode creation je bascule sur le code et je colle ton script.Ce qui donne

    Option Compare Database

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    Private Sub Form_Current()
    Dim oDB As DAO.Database
    Dim oQdf As DAO.QueryDef
    Dim oRstActivite As DAO.Recordset, oRstRealiser As DAO.Recordset
    Dim Item As ListItem
    Dim intAct As Integer
    Set oDB = CurrentDb
    'Vide la zone de liste
    'Dim ListView1 As ListView
    ListView1.ListItems.Clear
    'Définit la propriété Case à cocher à oui
    ListView1.Checkboxes = True
    ListView1.View = lvwList
     
    'Prépare la requête sur la table tblRealiser
    Set oQdf = oDB.QueryDefs("R02 Activité d'une entreprise")
    With oQdf
    .Parameters(0).Value = Me.Id_site
    Set oRstRealiser = .OpenRecordset
    End With
     
    Set oRstActivite = oDB.OpenRecordset("R01 Liste Activités")
    'Parcours le recordset des activités
    With oRstActivite
    While Not .EOF
    intAct = .Fields(0)
    'Crée la nouvelle ligne
    Set Item = ListView1.ListItems.Add(Key:="A" & .Fields(0), Text:=.Fields(1))
    'recherche l'enregistrement
    With oRstrealiser
    .FindFirst "Numactivite=" & intAct
    Item.Checked = Not .NoMatch
    End With
    .MoveNext
    Wend
    End With
    Quand je lance le formulaire il me dis erreur de compilation, la première ligne est surligne en jaune :
    Private Sub Form_Current()

    Puis Dim Item As ListItem est surligne en bleu.

    Peux tu me dire ce qui ne va pas?

    Merci

  8. #8
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    As tu créé le controle ListView dans le formulaire avant ?

  9. #9
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 38
    Points : 17
    Points
    17
    Par défaut Controle listview
    Non j'ai pas crée de controle listview, et je ne sais pas comment faire....

  10. #10
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 38
    Points : 17
    Points
    17
    Par défaut Pas de case à cocher
    J'ai respecter scrupuleusement les conseils

    Mais dans ma liste aucune case à cocher n'est là...

    Suis sur access 2000 ... est ce un pb?

  11. #11
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Pourtant la ligne qui définit que la listview doit afficher des cases est celle là :
    ListView1.Checkboxes = True
    Il 'agit bien du controle Microsoft ListView SP6 que tu as ajouté ?

  12. #12
    Invité
    Invité(e)
    Par défaut


    Il ne manquerait pas le "End Sub" !?

    Enfin, moi ce que j'en dis

  13. #13
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 38
    Points : 17
    Points
    17
    Par défaut
    c'est bien une listview....

    Mais SP6 alors la..... ?????

  14. #14
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 38
    Points : 17
    Points
    17
    Par défaut
    Lu sur Forum :
    ______________________________
    Membre junior
    Récompenses

    Date d'inscription: 04-04-2004
    Messages: 1
    Malheureux Re: Microsoft Visual Studio 6.0 Service Pack 6
    Mais il contient un fameux BUG lors du déplacement des colonnes d'une ListView. Donc à ne pas installer
    ______________________________________

    C'est pas embetant?

  15. #15
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour,
    Mais SP6 alors la..... ?????
    Pour créer cette ListView, il faut passer par :
    Menu Insertion > Contrôle ActiveX... > Microsoft ListView Control, version 6.0 ; ensuite OK et ton contrôle est directement créé sur ton formulaire...

    Bonne continuation.
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  16. #16
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 38
    Points : 17
    Points
    17
    Par défaut
    Merci pour le control active X

    Mes cases a cocher sont bien la !

    Mais mon formulaire BUG :

    'Prépare la requête sur la table tblRealiser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     Set oQdf = oDb.QueryDefs("R02")
    With oQdf
        .Parameters(0).Value = Me.Numentreprise
        Set oRstRealiser = .OpenRecordset
    End With
    Des informations SVP.

  17. #17
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Re,
    Mais mon formulaire BUG :
    C'est bien de nous dire cela.. ...mais ça ne nous aide pas vraiment.

    Ton formulaire BUG sur quoi Quel est le message d'erreur qui apparait
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  18. #18
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 38
    Points : 17
    Points
    17
    Par défaut Pb dans le code donné
    J'ai bien procéder étape par étape, mais il y a un pb :

    J'ai donc 3 tables

    tblentreprise(Numentreprise,NomEntreprise)
    tblActivite(NumActivite,NomActivite)
    tblRealiser(NumEntreprise,Numactivite)

    Dans le code de la page formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     Set oQdf = oDB.QueryDefs("R02 Activité d'une entreprise")
    With oQdf
        .Parameters(0).Value = Me.NumEntreprise
        Set oRstRealiser = .OpenRecordset
    End With
    et


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Set oDb = CurrentDb
    Set oQdf = oDb.QueryDefs(strName)
    With oQdf
        .Parameters("PEntreprise") = CInt(Me.NumEntreprise)
        .Parameters("PActivite") = CInt(Mid(Item.Key, 2))
        .Execute
    End With
    Pour "NumEntreprise" access transforme la majuscule en minuscule il n'en démord pas :
    mon formulaire est basé sur la tblentreprise avec comme donnée Numentreprise en minuscule.

    Ca marche sans buger avec avec comme paramètre Numentreprise à la place de NumEntreprise... je peu cocher, décocher, c'est super, mais si je reviens sur l'enregistrement rien n'est coche...


    _________________________
    Je refait des tables
    J'ai donc 3 tables

    tblSite(Numsite,Nomsite)
    tblActivite(Numactivite,Nomactivite)
    tblRealiser(Idsite,Idactivite)

    R01 :
    SELECT Numactivite, Nomactivite
    FROM tblActivite;

    R02 :

    PARAMETERS Psite Long;
    SELECT Idactivite
    FROM tblRealiser
    WHERE Idsite=Psite;

    R03 :
    PARAMETERS Psite Long, Pactivite Long;
    INSERT INTO tblRealiser
    VALUES (Psite, Pactivite);

    R04 :
    PARAMETERS Psite Long, Pactivite Long;
    DELETE *
    FROM tblRealiser
    WHERE Idsite=Psite AND Idactivite=Pactivite;


    Code Formulaire devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    Private Sub Form_Current()
    Dim oDB As DAO.Database
    Dim oQdf As DAO.QueryDef
    Dim oRstActivite As DAO.Recordset, oRstRealiser As DAO.Recordset
    Dim Item As ListItem
    Dim intAct As Integer
    Set oDB = CurrentDb
    'Vide la zone de liste
    'Dim ListView1 As ListView
    ListView1.ListItems.Clear
    'Définit la propriété Case à cocher à oui
    ListView1.Checkboxes = True
    ListView1.View = lvwList
     
    'Prépare la requête sur la table tblRealiser
    Set oQdf = oDB.QueryDefs("R02")
    With oQdf
        .Parameters(0).Value = Me.Idsite (Remplace Me.NumEntreprise)
        Set oRstRealiser = .OpenRecordset
    End With
     
    Set oRstActivite = oDB.OpenRecordset("R01")
    'Parcours le recordset des activités
    With oRstActivite
        While Not .EOF
            intAct = .Fields(0)
            'Crée la nouvelle ligne
            Set Item = ListView1.ListItems.Add(Key:="A" & .Fields(0), Text:=.Fields(1))
            'recherche l'enregistrement
            With oRstRealiser
                .FindFirst "Idactivite=" & intAct (remplace Numactivite)
                Item.Checked = Not .NoMatch
            End With
        .MoveNext
        Wend
    End With
     
    End Sub
     
     
    Private Sub ListView1_ItemCheck(ByVal Item As Object)
    Dim oDb As DAO.Database
    Dim oQdf As DAO.QueryDef
    Dim strName As String
    If Item.Checked Then
      strName = "R03"
    Else
      strName = "R04"
    End If
     
    Set oDb = CurrentDb
    Set oQdf = oDb.QueryDefs(strName)
    With oQdf
        .Parameters("Psite") = CInt(Me.Idsite) (Remplace Me.NumEntreprise)
        .Parameters("Pactivite") = CInt(Mid(Item.Key, 2))
        .Execute
    End With
     
    End Sub
    Ayant modifier NumEntreprise par Idsite, Il ne convertit pas le "E" en minuscule cette fois... mais ca ne marche pas, il me dit que Idsite "methode ou donnée introuvable".

    Merci pour conseils...

  19. #19
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 38
    Points : 17
    Points
    17
    Par défaut Pb dans le code source donné
    On m'a donné les sources suivantes :

    3 tables

    tblentreprise(Numentreprise,NomEntreprise)
    tblActivite(NumActivite,NomActivite)
    tblRealiser(NumEntreprise,Numactivite)

    Dans le code de la page formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Private Sub Form_Current()
    Dim oDB As DAO.Database
    Dim oQdf As DAO.QueryDef
    Dim oRstActivite As DAO.Recordset, oRstRealiser As DAO.Recordset
    Dim Item As ListItem
    Dim intAct As Integer
    Set oDB = CurrentDb
    'Vide la zone de liste
    'Dim ListView1 As ListView
    ListView1.ListItems.Clear
    'Définit la propriété Case à cocher à oui
    ListView1.Checkboxes = True
    ListView1.View = lvwList
     
    'Prépare la requête sur la table tblRealiser
    Set oQdf = oDB.QueryDefs("R02 Activité d'une entreprise")
    With oQdf
    .Parameters(0).Value = Me.NumEntreprise
    Set oRstRealiser = .OpenRecordset
    End With
     
    Set oRstActivite = oDB.OpenRecordset("R01 Liste Activités")
    'Parcours le recordset des activités
    With oRstActivite
    While Not .EOF
    intAct = .Fields(0)
    'Crée la nouvelle ligne
    Set Item = ListView1.ListItems.Add(Key:="A" & .Fields(0), Text:=.Fields(1))
    'recherche l'enregistrement
    With oRstRealiser
    .FindFirst "NumActivite=" & intAct
    Item.Checked = Not .NoMatch
    End With
    .MoveNext
    Wend
    End With
     
    End Sub
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
     
     
    Private Sub ListView1_ItemCheck(ByVal Item As Object)
    Dim oDb As DAO.Database
    Dim oQdf As DAO.QueryDef
    Dim strName As String
    If Item.Checked Then
    strName = "R03 Insertion"
    Else
    strName = "R04 Suppression"
    End If
     
    Set oDb = CurrentDb
    Set oQdf = oDb.QueryDefs(strName)
    With oQdf
    .Parameters("PEntreprise") = CInt(Me.NumEntreprise)
    .Parameters("PActivite") = CInt(Mid(Item.Key, 2))
    .Execute
    End With
     
    End Sub
    Dans le code Pour "NumEntreprise" access transforme systematiquement la majuscule en minuscule il n'en démord pas :
    Je pense que cela est du à mon formulaire basé sur la tblentreprise avec comme donnée Numentreprise qui est en minuscule.

    Ca marche sans buger avec comme paramètre "Numentreprise" à la place de "NumEntreprise"... je peu cocher, décocher, c'est super, mais si je reviens sur l'enregistrement rien n'est coche...


    _________________________
    Je refait des tables
    J'ai donc 3 tables

    tblSite(Numsite,Nomsite)
    tblActivite(Numactivite,Nomactivite)
    tblRealiser(Idsite,Idactivite)

    R01 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Numactivite, Nomactivite
    FROM tblActivite;
    R02 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PARAMETERS Psite Long;
    SELECT Idactivite
    FROM tblRealiser
    WHERE Idsite=Psite;
    R03 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    PARAMETERS Psite Long, Pactivite Long;
    INSERT INTO tblRealiser
    VALUES (Psite, Pactivite);
    R04 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PARAMETERS Psite Long, Pactivite Long;
    DELETE *
    FROM tblRealiser
    WHERE Idsite=Psite AND Idactivite=Pactivite;

    Code Formulaire devient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Private Sub Form_Current()
    Dim oDB As DAO.Database
    Dim oQdf As DAO.QueryDef
    Dim oRstActivite As DAO.Recordset, oRstRealiser As DAO.Recordset
    Dim Item As ListItem
    Dim intAct As Integer
    Set oDB = CurrentDb
    'Vide la zone de liste
    'Dim ListView1 As ListView
    ListView1.ListItems.Clear
    'Définit la propriété Case à cocher à oui
    ListView1.Checkboxes = True
    ListView1.View = lvwList
     
    'Prépare la requête sur la table tblRealiser
    Set oQdf = oDB.QueryDefs("R02")
    With oQdf
    .Parameters(0).Value = Me.Idsite (Remplace Me.NumEntreprise)
    Set oRstRealiser = .OpenRecordset
    End With
     
    Set oRstActivite = oDB.OpenRecordset("R01")
    'Parcours le recordset des activités
    With oRstActivite
    While Not .EOF
    intAct = .Fields(0)
    'Crée la nouvelle ligne
    Set Item = ListView1.ListItems.Add(Key:="A" & .Fields(0), Text:=.Fields(1))
    'recherche l'enregistrement
    With oRstRealiser
    .FindFirst "Idactivite=" & intAct (remplace Numactivite)
    Item.Checked = Not .NoMatch
    End With
    .MoveNext
    Wend
    End With
     
    End Sub
    __________________________
    et
    _________________________
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Private Sub ListView1_ItemCheck(ByVal Item As Object)
    Dim oDb As DAO.Database
    Dim oQdf As DAO.QueryDef
    Dim strName As String
    If Item.Checked Then
    strName = "R03"
    Else
    strName = "R04"
    End If
     
    Set oDb = CurrentDb
    Set oQdf = oDb.QueryDefs(strName)
    With oQdf
    .Parameters("Psite") = CInt(Me.Idsite) (Remplace Me.NumEntreprise)
    .Parameters("Pactivite") = CInt(Mid(Item.Key, 2))
    .Execute
    End With
     
    End Sub
    Ayant modifier NumEntreprise par Idsite, Il ne convertit pas le "E" en minuscule cette fois... mais ca ne marche pas, il me dit que Idsite "methode ou donnée introuvable".

    Merci pour conseils...

  20. #20
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Récapitulons, tes zones de textes sont nommées comment ?

    Dans l'évenement FormCurrent, il y a encore :
    Parameters(0).Value = Me.Idsite (Remplace Me.NumEntreprise)

Discussions similaires

  1. [Formulaire] Case à cocher
    Par cellahugo dans le forum IHM
    Réponses: 2
    Dernier message: 16/04/2007, 22h46
  2. Réponses: 3
    Dernier message: 09/08/2006, 08h25
  3. Probleme source formulaire case à cocher
    Par regis94 dans le forum Access
    Réponses: 1
    Dernier message: 02/08/2006, 20h20
  4. [formulaire] Case à cocher et disabled
    Par wolflinger dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 17/05/2006, 10h59
  5. Formulaire case à cocher
    Par LDDL dans le forum Langage
    Réponses: 6
    Dernier message: 02/05/2006, 20h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo