失敗し始めた MS Access Query を修正しようとしています。数年前に別の誰かが作ったシステムなので、逆算して理解しようとしています。失敗している部分は、他の 2 つのサブクエリを結合するクエリです。
クエリ結合で「SELECT *」を実行すると、問題なくデータが返されます。ただし、特定のフィールドを定義しようとすると、「クエリが複雑すぎます」という役に立たないメッセージが表示されて失敗します。
したがって、これは問題なくデータを返します。
SELECT * FROM 530a_WIPIncomeShareByResource
INNER JOIN 510_AllInvoicesCreditsInvWIP
ON [530a_WIPIncomeShareByResource].WIPDocApplicable
= [510_AllInvoicesCreditsInvWIP].No_
WITH OWNERACCESS OPTION;
ただし、結合で 2 つのクエリのいずれかからフィールドを定義すると、エラーが発生し、「クエリが複雑すぎます」というエラーが表示されます。したがって、これは失敗します。たとえば、次のようになります。
SELECT [510_AllInvoicesCreditsInvWIP].Status
FROM 530a_WIPIncomeShareByResource
INNER JOIN 510_AllInvoicesCreditsInvWIP
ON [530a_WIPIncomeShareByResource].WIPDocApplicable
= [510_AllInvoicesCreditsInvWIP].No_
WITH OWNERACCESS OPTION;
結合で参照されている 2 つのサブクエリ (530a_WIPIncomeShareByResource と 510_AllInvoicesCreditsInvWIP) をそれぞれ確認しましたが、これらは両方とも正常に実行され、データが返されます。ただし、2つに参加することはできません。
私は Access の経験がまったくないので、何かアドバイスをいただければ幸いです。
こんにちは、これはサブクエリのコードです:
530a_WIPIncomeShareByResource:
SELECT [502_WIP_DocApplicable].No_ AS [Resource No_],
[502_WIP_DocApplicable].[Posting Date],
[502_WIP_DocApplicable].WIPDocApplicable,
[502_WIP_DocApplicable].WIPOpen,
Sum(IIf([Work Type code]<>"WRITEOFF"
And [Type]<>3
And [Work Type code]<>"DISBURSE"
And [Work Type code]<>"DIRRESP"
And [Work Type code]<>"TAXJ"
And [Work Type code]<>"INVMON"
And [Work Type code]<>"CUST"
And [NAVTCIWORKTYPE-FEETYPE.Disbursement]<>1,[WIPValue],0)) AS QualWIP,
Sum(IIf([Work Type code]="WRITEOFF",[WIPValue],0)) AS NonQualWOWIP,
Sum(IIf([Work Type code]="DISBURSE"
Or [Work Type code]="XTNLPERCEN"
Or [Type]=3
Or [NAVTCIWORKTYPE-FEETYPE.Disbursement]=1,[WIPValue],0)) AS DISBURSE,
Sum(IIf([Work Type code]="DIRRESP"
Or [Work Type code]="TAXJ"
Or [Work Type code]="INVMON"
Or [Work Type code]="CUST",[WIPValue],0)) AS FIXEDFEE,
Sum([502_WIP_DocApplicable].WIPValue) AS TotalWIP
FROM [NAVTCIWORKTYPE-FEETYPE]
INNER JOIN 502_WIP_DocApplicable
ON [NAVTCIWORKTYPE-FEETYPE].Code = [502_WIP_DocApplicable].[Work Type Code]
GROUP BY [502_WIP_DocApplicable].No_,
[502_WIP_DocApplicable].[Posting Date],
[502_WIP_DocApplicable].WIPDocApplicable,
[502_WIP_DocApplicable].WIPOpen
WITH OWNERACCESS OPTION;
そして2番目:
510_AllInvoicesCreditsInvWIP
SELECT [510_AllInvoicesCredits].[Job No_],
[510_AllInvoicesCredits].No_,
[510_AllInvoicesCredits].[Invoice Date1] AS [Invoice Date],
[510_AllInvoicesCredits].Status,
[510_AllInvoicesCredits].[Invoice No_],
[510_AllInvoicesCredits].REVERSED,
[510_AllInvoicesCredits].[Reversal Document No_],
[510_AllInvoicesCredits].[Reversal Document Date],
[510_AllInvoicesCredits].Reference,
IIf([DocType]="Credit",[TotalBill],([TotalBill]-[FTRaised]+(-
(IIf(IsNull([FTWO]),0,
IIf([TotalBill]<=-0.01,-[FTWO],[FTWO]))))-
(IIf([TotalBill]<0,-[DISBURSE],[DISBURSE]))-
(IIf([TotalBill]<0,-[FIXEDFEE],[FIXEDFEE]))-
(IIf([TotalBill]<0,-[XTNLPERCENSHARE],[XTNLPERCENSHARE]))-
(IIf([TotalBill]<0,-[FIXEDFEESHARE],[FIXEDFEESHARE])))) AS IncomeToAlloc,
[510_AllInvoicesCredits].TotalBill,
[510_AllInvoicesCredits].XTNLPERCENSHARE,
[510_AllInvoicesCredits].FIXEDFEESHARE,
[520a_WIPAnalysis1_WIP].QualWIP,
[520a_WIPAnalysis1_WIP].NonQualWOWIP,
[520a_WIPAnalysis1_WIP].DISBURSE,
[520a_WIPAnalysis1_WIP].TotalWIP,
[510_AllInvoicesCredits].FTRaised AS FTR,
IIf(IsNull([FTWO]),0,IIf([TotalBill]<0,-[FTWO],[FTWO])) AS FTWO1,
[520a_WIPAnalysis1_WIP].GenCFWIPUsed,
[510_AllInvoicesCredits].GenCF AS GenCFRaised,
[510_AllInvoicesCredits].WOPROVRaised AS WOPROVR,
[520b_WIPAnalysis2_FT].WOPROVWO AS WOPROVUsed,
[520a_WIPAnalysis1_WIP].FIXEDFEE,
[510_AllInvoicesCredits].DocType,
[510_AllInvoicesCredits].Doc
FROM (510_AllInvoicesCredits LEFT JOIN 520a_WIPAnalysis1_WIP
ON [510_AllInvoicesCredits].No_ = [520a_WIPAnalysis1_WIP].WIPDocApplicable)
LEFT JOIN 520b_WIPAnalysis2_FT
ON [510_AllInvoicesCredits].No_ = [520b_WIPAnalysis2_FT].FTDocApplicable
WHERE ((([510_AllInvoicesCredits].REVERSED)<>1))
ORDER BY [510_AllInvoicesCredits].[Invoice Date1]
WITH OWNERACCESS OPTION;
このアクセス システム全体は、クエリのレイヤーごとにレイヤーになっています。解読するのは本当に頭痛の種です!ただし、上記は問題なく動作します。