2016-05-31 125 views
0

我展示了基于该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 

下面是一个简单的报告,我显示的代码如下:

Image here

现在我想用线达走线本报告中的TA,并根据(在SQL例如:WHERE Num_utilisateur = Me.Num_utilisateur.Value)列Num_utilisateur总的列(我的表Plan_chargeTotal_charge),并把总在文本框中称为ChargeTotale

你有什么想法吗?

回答

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) 
+0

谢谢你的第二个请求!但首先,我有一个错误:指定的字段“Num_utilisateur”可能引用您的SQL语句的FROM子句中列出的几个表。 – UnknowVBA

+0

固定。现在试试。 – JJ32

+0

太棒了,它的工作原理:)最后一个问题给你:在我的请求中添加一个额外的字段,你好吗? – UnknowVBA