2015-07-21 56 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