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 :
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
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 :
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 :
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
_________________________
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...
Partager