Bonjour,

Débutant sur Visual Studio 2010 Professional - Programmant an Linq.

Voici mon Query qui me pose probleme (ORA-01792):
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
 
Public Function Run(ByRef FilterValues As FilterValues) As System.Linq.IQueryable Implements IReportDataProvider.Run
 
 
'create connection to the ams schema
Dim AMS = Me.mfContext
 
Dim d_B As DateTime = FilterValues.DateFrom
Dim d_E As DateTime = FilterValues.DateTo
Dim FOND As String = FilterValues.Fund
Dim CLANG As String = FilterValues.ReportingLanguage
 
 
Dim FundMasterPoolMerge As IQueryable(Of NEW_MASTERNPTF3_Definitions) = ReportQueries.FundMasterPoolMerge(FOND, AMS)
 
'get the related query data
'Group By SUM of the MSOLDE_EGA_100 AND EGAL_1_100
Dim EGA_CPT2 = From AMS_EGA_CPT In AMS.EGA_CPT
Join AMS_TCPT In AMS.TCPT_LNG On AMS_TCPT.NCOMPTE Equals AMS_EGA_CPT.NRUBR
Join FUND_SELECTION In FundMasterPoolMerge On AMS_EGA_CPT.NPTF Equals FUND_SELECTION.NPTF
Where AMS_EGA_CPT.DATE_NAV >= d_B And AMS_EGA_CPT.DATE_NAV <= d_E And AMS_EGA_CPT.NRUBR <> 999998 And AMS_EGA_CPT.CEGA = "LU" And AMS_TCPT.CLANGUE = CLANG
Group By NPTF = AMS_EGA_CPT.NPTF, TPARTS = AMS_EGA_CPT.TPARTS, DATE_NAV = AMS_EGA_CPT.DATE_NAV, NRUBR = AMS_EGA_CPT.NRUBR, XLIBELLE = AMS_TCPT.XLIBELLE
Into Group
Select New With {
.NPTF = NPTF,
.TPARTS = TPARTS,
.DATE_NAV = DATE_NAV,
.NRUBR = NRUBR,
.XLIBELLE = XLIBELLE,
.MSOLDE_EGA_100 = Group.Sum(Function(x) x.AMS_EGA_CPT.MSOLDE_EGA_100),
.EGAL_1_100 = Group.Sum(Function(x) x.AMS_EGA_CPT.EGAL_1_100)
}
 
Return EGA_CPT2
 
End Function
(voir ligne 19)

Le probleme se pose lors du "Join FUND_SELECTION In FundMasterPoolMerge On AMS_EGA_CPT.NPTF Equals FUND_SELECTION.NPTF"

En debug mode la fonction FundMasterPoolMerge ne me renvoie qu'une donnée ("75851" dans cette example).

Ce query marche parfaiment bien si je ne mets pas la ligne suivante:
Join FUND_SELECTION In FundMasterPoolMerge On AMS_EGA_CPT.NPTF Equals FUND_SELECTION.NPTF

et que je rajoute au statement 'Where':
"AMS_EGA_CPT.NPTF = FOND And "

Le statement qui marche est a ce moment la:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Dim EGA_CPT2 = From AMS_EGA_CPT In AMS.EGA_CPT
Join AMS_TCPT In AMS.TCPT_LNG On AMS_TCPT.NCOMPTE Equals AMS_EGA_CPT.NRUBR
Where AMS_EGA_CPT.NPTF = FOND And AMS_EGA_CPT.DATE_NAV >= d_B And AMS_EGA_CPT.DATE_NAV <= d_E And AMS_EGA_CPT.NRUBR <> 999998 And AMS_EGA_CPT.CEGA = "LU" And AMS_TCPT.CLANGUE = CLANG
Group By NPTF = AMS_EGA_CPT.NPTF, TPARTS = AMS_EGA_CPT.TPARTS, DATE_NAV = AMS_EGA_CPT.DATE_NAV, NRUBR = AMS_EGA_CPT.NRUBR, XLIBELLE = AMS_TCPT.XLIBELLE
Into Group
(voir ligne 3)

En fait si j'utilise le statement qui marche je ne peux qu'interroger qu'une seule valeure ("75851"). C'est pourquoi je souhaiterais utiliser la fonction "FundMasterPoolMerge" qui peu me renvoyer plusieurs valeurs ("75851";"75852";"75853";etc...)

Comment faire pour utiliser la fonction "FundMasterPoolMerge" sans avoir ce message d'erreur?

En esperant avoir été clair, sinon n'hésitaient pas à me poser des questions.

Merci d'avance pour votre aide.
Michel.