Archives for September 2008

任务编号不是唯一的

在使用pa_project_pub.add_task创建项目任务时,返回错误消息:任务编号不是唯一的(Task Number Is Not Unique)。

在项目模块中,如果启用了版本控制,则当我们在删除一个任务时,必须先考虑将来是否需要重建相同名字的任务,因为系统记录了所有的版本历史。在创建任务的过程中,系统会校验PA_TASKS和PA_PROJ_ELEMENTS中的数据,尤其的,PA_PROJ_ELEMENTS会记录所有已发布版本的任务信息。尽管在当前版本中删除了该任务,但是对于项目模块而言,由于历史版本中依旧存在同名的任务,因而限制同名重建。

当然,这也可能是由于数据完整性被破坏造成的,可以用下面两个sql来检查是否因为数据错误造成的:

SELECT COUNT(task_id)
FROM pa_tasks
WHERE task_id NOT IN (SELECT proj_element_id FROM pa_proj_elements);


SELECT project_id,
proj_element_id
FROM pa_proj_elements pe1
WHERE object_type = 'PA_TASKS'
AND proj_element_id NOT IN
(SELECT task_id FROM pa_tasks WHERE project_id = pe1.project_id)
AND EXISTS (SELECT *
FROM pa_proj_elements pe,
pa_proj_structure_types ppst
WHERE ppst.proj_element_id = pe.proj_element_id
AND pe.project_id = pe1.project_id
AND ppst.structure_type_id = 6)
AND NOT EXISTS (SELECT *
FROM pa_proj_elements pe,
pa_proj_structure_types ppst
WHERE ppst.proj_element_id = pe.proj_element_id
AND pe.project_id = pe1.project_id
AND ppst.structure_type_id = 1);

说明性弹性域中的参考字段

在定义说明性弹性域段的时候,我们通常只定义“Global Data Elements“的段。实际上,说明性弹性域还可以根据参考字段显示不同的字段,比如说,对于不同的国家区域显示不同的弹性域字段。

在定义说明性弹性域界面,点击”参考字段“,输入同一个块中存在的字段名,可以按需要输入多个。假设块中有一个字段叫“COUNTRY_CODE”,这时,在定义说明性弹性域段的时候,就可以在“参考字段”处的值列表中选择之前所输入的参考字段。在“上下文字段值”处假设有“CN”和“US”两行,分别定义相应的段。那么在form界面中,如果字段COUNTRY_CODE值为CN,则显示上下文字段值为CN的段。

定义说明性弹性域界面的参考字段包含但不仅限于所定义的,还可以直接引用相关字段值,比如:BLOCK.USER_COUNTRY_CODE。因此,在定义说明性弹性域的时候输入参考字段,在很多情况下并没有太多意义。