Bonjour,
Débutant sur Visual Studio 2010 Professional - Programmant an Linq.
Voici mon Query qui me pose probleme (ORA-01792):
(voir ligne 19)
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
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:
(voir ligne 3)
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
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.
Partager