0
AOT에서 SQL 뷰를 다시 작성하고 뷰 (FISCALCALENDARFLATTENEDVIEW)를 참조하는 계산 열을 추가해야합니다. 수업에서이보기의 입력란을 가져올 수 없습니다. 문제는 "sGREGORIANDATE ="fieldStr()을 지정하는 행으로, View에서는 수행 할 수 없습니다. 내가 성취하려고 시도하는 것을 이해하는 데 도움이되는 SQL 문을 넣었습니다.X ++ Compute columns
CREATE VIEW [dbo].[vw_DimFiscalPeriod] AS
SELECT
T1.RECID AS LEDGERRECID,
T1.PARTITION AS PARTITION,
T1.RECID AS RECID,
T2.CALENDARID AS CALENDARID,
T2.CALENDARRECID AS CALENDARRECID,
T2.GREGORIANDATE AS GREGORIANDATE,
T2.MONTH AS MONTH,
T2.PERIODNAME AS PERIODNAME,
T2.PERIODOFFSET AS PERIODOFFSET,
T2.PERIODRECID AS PERIODRECID,
T2.QUARTER AS QUARTER,
T2.QUARTEROFFSET AS QUARTEROFFSET,
T2.YEARNAME AS YEARNAME,
T2.YEAROFFSET AS YEAROFFSET,
T2.PARTITION AS PARTITION#2,
(CAST ((((T1.RECID) * (100000)) + (DateDiff(d, {ts '1900-01-01 00:00:00.000'}, T2.GREGORIANDATE))) AS NVARCHAR(50))) AS LEDGERGREGORIANDATEID
FROM AXDB.dbo.LEDGER T1
INNER JOIN
AXDB.dbo.FISCALCALENDARFLATTENEDVIEW T2
ON T1.FISCALCALENDAR = T2.CALENDARRECID
AND T1.PARTITION = T2.PARTITION
클래스를 만들었지 만 계산을 위해 개체의 필드와 뷰의 열 목록이 모두 지원되지 않습니다. sRECID는 괜찮지 만 sGREGORIANDATE 정의는 그렇지 않습니다.
sGREGORIANDATE = SysComputedColumn::returnField(tableStr(FiscalPeriodDateView), tableStr(FiscalCalendarFlattenedView), fieldStr(FiscalCalendarFlattenedView, GregorianDate)));
:
public class vw_DimFiscalPeriod extends common
{
private static server str GregoriandDateID()
{
str sReturn,
str sRECID,
str sGREGORIANDATE;
DictView dictView;
dictView = new DictView(tableNum(vw_DimFiscalPeriod));
sRECID = dictView.computedColumnString(tableStr(Ledger), fieldStr(RecId),FieldNameGenerationMode::FieldList, true);
sGREGORIANDATE = dictView.computedColumnString(viewstr(FiscalCalendarFlattenedView), fieldStr(GregorinaDate), FieldNameGenerationMode::FieldList, true);
sReturn = "("+RECID+" * 100000) + DateDiff(d, {ts '1900-01-01 00:00:00.000'}, " + sGREGORIANDATE + ")";
return sReturn;
}
}