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
|
Private Sub transpose_data()
' 2018-12-26 retenir les valeurs Condition dans l'ordre d'affichage dans un champ Valeurs
Dim rs1 As DAO.Recordset
Dim s1 As String, s2 As String
Set rs1 = CurrentDb.OpenRecordset("T1", dbOpenSnapshot)
' créer une table T2 (Module as TEXT(50) , Acte as TEXT(50) , Valeurs text(255))
' avec clé primaire composée : Module, Acte
With rs1
If .RecordCount = 0 Then Exit Sub
.MoveLast
.MoveFirst
While Not .EOF
' la ligne Module, Acte existe t'elle dejà dans T2 ?
s1 = "Module ='" & Nz(!Module) & "' AND Acte ='" & Nz(!Acte) & "'"
If DCount("*", "T2", s1) = 0 Then
' la ligne Module, Acte n'existe pas encore dans T2
' si Condition n'est pas nulle, on insère une nouvelle ligne dans T2
If Len(Nz(!Condition)) > 0 Then
s2 = "INSERT INTO T2 ( Module, Acte, Valeurs) VALUES" _
& "('" & Nz(!Module) & "','" & Nz(!Acte) & "','" & Nz(!Condition) & "')"
Debug.Print s2
CurrentDb.Execute s2
End If
Else
' la ligne Module, Acte existe déjà dans T2
' si Condition n'est pas nulle, on ajoute Condition à Valeurs présente dans T2
If Len(Nz(!Condition)) > 0 Then
s2 = "UPDATE T2" _
& " SET Valeurs = Valeurs & " & "';" & Nz(!Condition) & "'" _
& " WHERE " & s1
Debug.Print s2
CurrentDb.Execute s2
End If
End If
.MoveNext
Wend
End With
MsgBox "traitement terminé. Voir le résultat dans la table T2"
SET rs1 = nothing
End Sub |
Partager