我显示基于此SQL的访问报告:
SELECT DISTINCT Plan_charge.Num_utilisateur, RecupProjet(Num_utilisateur) AS LesProjets
FROM Plan_charge;
VBA中的“RecupProjet”功能是:
Public Function RecupProjet(Num_utilisateur As String) As String
Dim res As DAO.Recordset
Dim SQL As String
'Selectionne les participant du projet
SQL = "SELECT Num_EB_Tache FROM Plan_charge WHERE Num_utilisateur=" & _
Chr(34) & Num_utilisateur & Chr(34)
Set res = CurrentDb.OpenRecordset(SQL)
'Concatene les différents enregistrement
While Not res.EOF
RecupProjet = RecupProjet & res.Fields(0).Value & " "
res.MoveNext
Wend
'Enleve le dernier espace
RecupProjet = Left(RecupProjet, Len(RecupProjet) - 1)
'libere la mémoire
Set res = Nothing
End Function
以下是我在代码后面显示的示例报告:
现在,我想在此报告中逐行输入数据,并根据列Total_charge
生成一列(Plan_charge
我的表Num_utilisateur
)的总和(对于SQL中的示例:WHERE Num_utilisateur = Me.Num_utilisateur.Value
)并将总数放在名为ChargeTotale
的文本框中。
你有什么想法吗?
答案 0 :(得分:0)
我会这样做:
SELECT DISTINCT Plan_charge.Num_utilisateur,
RecupProjet(Plan_charge.Num_utilisateur) AS LesProjets, T.ChargeTotale
FROM Plan_charge INNER JOIN
(SELECT Num_utilisateur, SUM(Total_charge) AS ChargeTotale
FROM Plan_charge
GROUP BY Num_utilisateur) T
ON Plan_charge.Num_utilisateur = T.Num_utilisateur
如果您不需要Plan_charge中的任何其他字段,您可以这样做:
SELECT Num_utilisateur, RecupProjet(Num_utilisateur) AS LesProjets,
SUM(Total_charge) AS ChargeTotale
FROM Plan_charge
GROUP BY Num_utilisateur, RecupProjet(Num_utilisateur)