2017-04-04 19 views
0

AOTでSQLビューを再作成しようとしましたが、参照ビュー(FISCALCALENDARFLATTENEDVIEW)の計算列を追加する必要があります。クラスでは、このビューのフィールドを取得できません。問題は、私がfieldStr()を指定する "sGREGORIANDATE ="行であり、Viewに対しては行えません。私は、私が達成しようとしていることを理解するのを助けるためにSQLステートメントを置く。X ++計算列

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はOKですが、sGREGORIANDATE定義はありません。 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; 
} 
} 

答えて

0
私はそれが動作するはずだと思う

とラインなければならないことのようになります。

 sGREGORIANDATE = SysComputedColumn::returnField(tableStr(FiscalPeriodDateView), tableStr(FiscalCalendarFlattenedView), fieldStr(FiscalCalendarFlattenedView, GregorianDate)));