0

我有两个正在使用的表: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();

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

4

1 回答 1

2

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

我不知道你的 Java 代码在哪里(一个应用程序 bean、一个 MBOSet、一个 MBO 或一个字段类),我不知道你正在挂钩什么事件/触发器(添加新记录、保存现有记录或其他),这两者都很重要。我假设您在“add()”方法中运行的 KINCIDENT 对象的 MBO 类中;这意味着当创建新的 KINCIDENT 时,您想要添加新的 ASSISTANT 记录。作为该触发器的一部分运行应该意味着当用户添加新记录时,您已经连接到 KINCIDENT 对象的屏幕实例。要使您的 ASSISTANT 记录出现在支持屏幕的集合实例中,您需要遵循屏幕从 KINCIDENT 到 ASSISTANT 的关系。我' m 假设在屏幕上使用关系将 ASSISTANT 表设置为 KINCIDENT 表的子表。在这种情况下,您只需要使用该关系获取 ASSISTANT 集。假设您的关系与集合(“ASSISTANT”)命名相同,它看起来像这样:

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

这不会保存您的记录(将其保存到数据库中),但您希望将您的保存保持在最低限度。让用户通过点击工具栏中的“保存”/磁盘图标来指定是否应该保存记录。

于 2015-01-05T13:04:47.923 回答