我正在使用两个选择列表和一个班车来开发一个填充集合的功能。在重复干预后,当我更改特定列表时,我没有得到正确的方式来显示名称,并恢复其对应的身份,在我右侧的班车选择项目上。我开发了一个更新,插入或删除梭子上所选项目的程序,我想它在对sql命令进行多次测试后效果很好。
我的测试用例使用三个表:合同,工作和员工。我打算将给定合同的任何工作站的员工插入另一个合同。该新合同将收到员工,必须拥有其先前插入的工作站。表格的一般结构是:
合同:pk_contract,number_contract,company_name等......
工作站:pk_workstation,fk_contract,description etc ......
员工:pk_employee,fk_workstation,employee_name,employee_sex等......
我创建了一个应用来演示它:https://apex.oracle.com/pls/apex/f?p=43921
用户:测试,
密码:测试
第2页 - 迁移员工 - 有三个主要区域,另外两个用于显示插入的信息:
与选择列表签订合同,必须选择,首选合同070/2016,插入工作站,以及带有静态值的显示字段,代表合同,附带工作站和员工。
工作站:有两个选择列表,gordian结,我想:旧工作站,相关的原始合同,与展示领域相关的合约,合同区域;与上面选择的新合同相关的新工作站。
员工:在左侧代表一群员工,代表原始工作站和按钮的班车不做任何事情。
另外两个代表经典报告的区域,仅用于通过使用集合从正确尺寸的班车通知插入,更新或删除的员工。我创建了两个报告区域,因为我们不知道与集合和表格建立联接。此集合具有员工ID,old_workstation id,new_workstation id和新合同ID,用于进一步迁移,尚未实施。
我提交几乎所有字段,以便在顶级会话状态中恢复其值。
显然,这个系列很好,有一个程序,但是当我再次选择原始作品时,穿梭机不会以正确的尺寸显示该工作站上的前一个插入的员工。我在我的值列表中配置了不包含额外值,当我更改它时,它显示了员工的ID,而不是他们的名字,关于下面列出的源类型:
SELECT e.pk_employee
FROM tb_employee e
INNER JOIN tb_workstation pt
ON pt.pk_workstation = e.fk_workstation
WHERE pt.typo IS NOT NULL
AND e.fk_workstation = p2_original_workstation
AND e.pk_employee IN (
SELECT to_number(c001) AS id_employee
FROM apex_collections
WHERE collection_name = 'WORKSTATION_EMPLOYEES');
我的Shutlle's lov有这个理由:
SELECT e.name, e.pk_employee
FROM tb_employee e
INNER JOIN tb_workstation pt
ON pt.pk_workstation = e.fk_workstation
WHERE pt.typo IS NOT NULL
AND e.fk_workstation = p2_original_workstation
AND e.pk_employee NOT IN (
SELECT to_number(c001) AS id_employee
FROM apex_collections
WHERE collection_name = 'WORKSTATION_EMPLOYEES');
有人可以帮我解决这个问题吗?
问候!
答案 0 :(得分:0)
我认为这是一个定期而精细的解决方案。班车允许恢复左侧的整个寄存器,将其更改为另一个原始工作站。删除了最后一个“和”子条款后,在SHUTTLE中添加了一个源sql查询 - 返回冒号分隔值,如下所示:
从员工e中选择e.pk_employee 内部联接工作站w w.pk_workstation = e.fk_workstation 其中w.typo不为null且e.fk_workstation =:P2_ORIGINAL_WORKSTATION和e.pk_employee in( SELECT TO_NUMBER(c001)as id_employee FROM APEX_collections WHERE collection_name ='WORKSTATION_EMPLOYEES'and c002 =:P2_NEW_WORKSTATION);
但是出于goood usabilty的目的,以及我更好地解释了穿梭对象的作用,我将'和'条款重新插入'和'更多,反映出lov拥有给定原始工作站的所有员工,除了员工也插入了,而那些员工来自另一个新的工作站。这个特殊功能可以避免用户认为需要插入新工作站上的员工以前的附件:
从员工e中选择e.name,e.employee w.pk_workstation = e.workstation上的内部联接工作站 其中w.typo不为null且e.worktation =:P2_ORIGINAL_WORKSTATION且e.pk_employee未在( SELECT TO_NUMBER(c001)as id_employee FROM APEX_collections WHERE collection_name ='WORKSTATION_EMPLOYEES'and c002!=:P2_NEW_WORKSTATION)
我可以考虑使用没有这些引用的子句,使用禁用jquery,如果是相同的original_wrkstion但是在不同的新的,左边的大小,但它将是一个改进,我需要了解jqueries功能。我认为这是一个基本的,良好的,功能性的解决方案。