我正在尝试使用提供的ExceltoCI实用程序将一些数据加载到自定义表PeopleSoft中。我有一个单键-EMPLID的记录;我们期望每个员工只有一行,没有生效日期或类似的东西。除了EMPLID,我还有大约9个数字字段。上传过程似乎有效 - 每行数据的状态为绿色OK,但是对于某些数据行,当我在线检查或在我的SQL工具中检查时,数据不存在。当电子表格的数据输入选项卡中的所有9个数字字段都设置为0时,会发生这种情况。所有其他行加载正常。我可以在线输入数据包含全零。我注意到,如果我将其中一个数字字段的默认值设置为1,则所有内容都会通过该实用程序加载(但如果我将其设置为0则不会)。
提前致谢!
答案 0 :(得分:0)
这是我最后做的事情:在其中一个数字字段中,我在RowInit事件中放置了一些PeopleCode:
如果无(MARKET_PAY.MARKET_LOW)那么 MARKET_PAY.MARKET_LOW = 1; MARKET_PAY.MARKET_LOW = 0; 最终如果;
它实现了我所追求的目标,但感觉就像一块垃圾 - 如果有人能提供更优雅或“适当”的解决方案,我将不胜感激。
答案 1 :(得分:0)
出于历史目的,PeopleSoft以特殊方式处理空值。空数值存储为零,空文本值存储为单个空格(“”)。空日期/时间/日期时间和长字符字段是实际的数据库NULL。
您正在描述包含关键字段和仅数字字段的兄弟表。但是,PeopleTools在技术上会将其视为子表,并且当所有非键字段为“null”时,不会插入子表。当所有值都为零时,您的kludge负责处理物理插入行的要求,但我可以想到您可以做的其他两件事:
如果您不会定期使用Excel-to-CI(即,它仅用于初始或不经常的数据加载),您可以编写一个简单的语句来INSERT到表中的全零行每个EMPLID尚未出现在表中。 (如果在第二次实时使用中不需要该表,则可以将此INSERT设置为数据库作业,例如每晚运行。)
如果可行,范围相对有限,并且从努力或性能角度来看并不过分,您可以将涉及此表的任何联接更改为外部联接,将可能的NULL值合并为零。
< / LI> 醇>还有第三种选择:向记录中添加一个您知道将始终具有值的字段。例如,您可以添加上次修改的时间戳/用户对。但是,这是一种数据模型设计选择,只有在添加的字段是您真正需要跟踪的内容时才有意义。换句话说,它就像你当前的解决方案一样,但可以为数据上下文增加一些价值。
答案 2 :(得分:0)
在exceltoci字段中输入0。它会加载并保存。它是excel电子表格和导致这种情况的幕后vba代码。