我有两个要使用的表:KINCIDENT和ASSISTANT。主要的是KINCIDENT,两者使用ID链接。我可以从应用程序中添加新行,但是我想使用Java来做到这一点。我尝试了以下代码,但是没有用:

MboSetRemote assistSet = MXServer.getMXServer().getMboSet("ASSISTANT",userInfo);
MboRemote newAssist = assistSet.add();
newAssist.setValue("LOCATION",x);
newAssist.setValue("INCNUM",y);
assistSet.save();


我检查是否添加了该行,但是没有添加,并且我也没有在数据库中找到任何新条目。我想念什么吗?

最佳答案

只要您的代码正在运行,您就应该已经在助手表中看到了该新记录,但是您绝对不会在屏幕上看到它。为了使记录出现在屏幕上,您必须了解Maximo的“缓存”系统才能获取和编辑支持屏幕的集合的确切实例,而不仅仅是任何实例(或您在此处创建的全新实例)。

我不知道您的Java代码在哪里(应用Bean,MBOSet,MBO或字段类),也不知道您要挂接到的事件/触发器(添加新记录,保存现有记录)或其他内容),两者都非常重要。我将假设您处于在“ add()”方法中运行的KINCIDENT对象的MBO类中;这意味着在创建新的KINCIDENT时,您要添加新的ASSISTANT记录。作为该触发器的一部分运行应该意味着,当用户添加新记录时,您已经迷上了KINCIDENT对象的屏幕实例。为了使您的ASSISTANT记录出现在支持屏幕的设置实例中,您需要遵循屏幕从KINCIDENT到ASSISTANT的关系。我假设在屏幕上使用关系将ASSISTANT表设置为KINCIDENT表的子级。在这种情况下,您只需要使用该关系来获取ASSISTANT设置即可。假设您的关系与集合的名称相同(“ ASSISTANT”),则看起来像这样:

MboSetRemote assistSet = getMboSet("ASSISTANT");
MboRemote newAssist = assistSet.add();
newAssist.setValue("LOCATION",x);
newAssist.setValue("INCNUM",y);


这将不会保存您的记录(将其保存到数据库中),但是您希望将保存的内容减至最少。让用户指定是否应该通过单击工具栏上的“保存” /磁盘图标来保存记录。

10-07 19:19