0
我嘗試在AOT中重新創建SQL視圖,並且需要添加引用視圖(FISCALCALENDARFLATTENEDVIEW)的計算列。在班級中,我無法檢索此視圖的字段。問題在於「sGREGORIANDATE =」行,我指定了一個fieldStr(),無法爲View執行。我把SQL語句只是爲了幫助理解我嘗試實現的目標。X ++ Compute列
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定義不是。
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;
}
}