2015-07-21 51 views
1

我正在嘗試重新使用一個類並在作業中運行它以證明某些內容。這裏是工作代碼:錯誤:光標無效實例化recordViewCache

InventQuarantineOrder_Scrap scrap = new InventQuarantineOrder_Scrap(); 
; 

scrap.parmInventQuarantineId('00016749_077'); 
scrap.parmScrapQty(360); 
scrap.parmTransDate(Today()); 

scrap.run(); 

當我運行這段代碼,我得到的錯誤:

The cursor is invalid for instantiating recordViewCache

研究導致了我這個link,我想實現這個錯誤,但我有語法錯誤我不知道如何解決。我複製了這個類並創建了一個新的runOnServer方法。但是,然後驗證方法不起作用。所以我修改validate方法在服務器上運行:

static server boolean validate() 
{ 
    InventQuarantineOrder inventQuarantineOrder = InventQuarantineOrder::find(inventQuarantineId); 
    ; 
    ....  
} 

這給了我這個錯誤:

Variable inventQuarantineId has not been declared.

如果我註釋掉從runOnServer方法的validate()調用,我會得到相同的未聲明inventQuarentineId變量的錯誤/問題(它也用於run方法中)。

從這裏,我不知道如何繼續。我究竟做錯了什麼?有沒有可能在服務器方法中使用這些方法?值得注意的另一件事我認爲是我認爲工作代碼實際上工作,但它確實拋出3行「光標無效實例化recordViewCache」。信息提醒。

+0

您需要使用pack/unpack模式將變量的值從客戶端傳輸到服務器層。只要我找到時間,我會立即寫出答案(或有人打我)。 –

回答

0

正如您已經發現的,RecordViewCache只能用於服務器層。通過在客戶端層上的作業中啓動進程,還會在客戶端層上執行創建RecordViewCache(表InventTrans的方法viewCacheInventTransId)的方法,從而導致該錯誤。如果你把一個斷點在這種方法中,在調試器中調用堆棧顯示了這一點:

Tier Method                        Line 
[c] \Data Dictionary\Tables\InventTrans\Methods\viewCacheInventTransId          9 
[c] \Classes\InventMovement\viewCacheInventTransId               7 
[s] \Classes\InventUpd_Financial\initUpdate                14 
[s] \Classes\InventUpd_Financial\newVirtuelQuarantineLoss             19 
[c] \Classes\InventQuarantineOrder_Scrap\run                76 
[c] \Jobs\Job4 

在你給的鏈接的解決方案是針對你的情況有點複雜得多,它需要(我的意見是我的第一個想法是修復這個解決方案)。您只需要使用執行您的作業代碼的靜態服務器方法創建一個類。然後你可以在你的代碼中調用這個靜態服務器方法。現在調試器會向您顯示以下調用堆棧:

Tier Method                        Line 
[s] \Data Dictionary\Tables\InventTrans\Methods\viewCacheInventTransId          9 
[s] \Classes\InventMovement\viewCacheInventTransId               7 
[s] \Classes\InventUpd_Financial\initUpdate                14 
[s] \Classes\InventUpd_Financial\newInventQuarantineOrder             21 
[s] \Data Dictionary\Tables\InventQuarantineOrder\Methods\startFinancial         12 
[s] \Classes\InventQuarantineOrder_Scrap\run                54 
[s] \Classes\Class1\jobOnServer                   10 
[c] \Jobs\Job4                        5