根据一个表中的字段属性名称作为查询条件来批量修改该表中数据

本文介绍了一种通过属性表FND_LOOKUP_VALUES存储查询字段及其值的方法,并通过建立LOV视图及EO、VO对象来实现对不同字段的动态查询。此外还展示了如何在实现类中编写查询方法,并利用ADF界面组件实现界面交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有时候需要通过一个表中字段属性名称作为改表的查询条件去查询出这些字段的值。然后对这些值进行维护。
1、将需要维护的字段的名称和值保持在属性表中FND_LOOKUP_VALUES中,这里针对的是一个key对应一个value值
    1     EMPLOYEES     FIRST_NAME     Steven     名字
    2     EMPLOYEES     LAST_NAME     King     姓
    3     EMPLOYEES     EMAIL     SKING     电子邮箱
    4     EMPLOYEES     PHONE_NUMBER     515.123.4567     电话号码
 2、建立Fnd_lookup_values相对于的LOV视图
select t.lookup_values,t.meaning,t.description from fnd_lookup_values t where t.lookup_type='EMPLOYEES'

3、根据要维护的表,建立相应的EO、VO。

4、针对VO建立相应的子查询
5、在AM的实现类中写相应的查询方法
public void queryTableColumus(String columus) {
        EmployeesVOImpl vo = this.getEmployeesVO1();
        vo.applyViewCriteria(null);//清空子查询,避免缓存数据
       // System.out.println("columus--"+columus);
        if (columus.equals("firstName")) {
            System.out.println("firstName");
            vo.appendViewCriteria(vo.getViewCriteria("byFirstNameVC"));
          
        } else if (columus.equals("lastName")) {
            System.out.println("lastName");
            vo.appendViewCriteria(vo.getViewCriteria("byLastNameVC"));
         
        } else if (columus.equals("email")) {
            System.out.println("email");
            vo.appendViewCriteria(vo.getViewCriteria("byEmailVC"));
          
        } else if(columus.equals("phoneNum")){
            System.out.println("phoneNum");
            vo.appendViewCriteria(vo.getViewCriteria("byPhoneNumVC"));
          
        }
        vo.executeQuery();
      
    }
6、在DC中将创建好的query拖到页面上建立页面,然后显示table。将query或者它外面的layout的visible属性设置为false,不显示该query或者外边的layout。
7、将需要展示的LOV拖到页面上选择Single Selection->ADF Select One Choice
另外将对应的value拖到页面上
9、创建两个按钮并绑定方法
    public String queryAction() {
        ViewObject vo =  this.findIterator("EmployeesVO1Iterator").getViewObject();
        vo.setWhereClause(null);
        vo.executeQuery();
        Object tableColumuns =
            this.resolveExpression("#{bindings.FndLookupValueLovVO1.inputValue}");
        String columunsName = null;
        if (tableColumuns.toString().trim().equals("0")) {
            columunsName = "firstName";
        } else if (tableColumuns.toString().trim().equals("1")) {
            columunsName = "lastName";
        } else if (tableColumuns.toString().trim().equals("2")) {
            columunsName = "email";
        } else {
            columunsName = "phoneNum";
        }
        OperationBinding ob = this.findOperation("queryTableColumus");
        ob.getParamsMap().put("columus", columunsName);
        ob.execute();
        return null;
    }
<think>好的,我现在需要帮助用户解决在GIS Pro中如何将属性字段数据复制到另一个字段的问题。首先,我要回忆一下自己之前对GIS软件操作的了解,尤其是ArcGIS Pro的相关功能。用户提到的引用中有关于字段计算器(Field Calculator)的内容,这应该是一个关键步骤。 首先,用户需要复制数据,这意味着他们可能已经有一个字段存在数据,现在想将这些数据复制到另一个字段中。在GIS中,通常的步骤可能是:打开属性选择要处理的字段,然后使用字段计算器将源字段的值赋给目标字段。 接下来,我需要确认步骤的正确性。例如,是否需要在复制前创建目标字段根据引用[1]提到的,要确保字段类型一致,所以在复制之前,用户可能需要先检查或创建与源字段类型相同的目标字段。如果目标字段不存在,用户需要先添加一个字段,并设置正确的数据类型,比如文本、整数或浮点数等。 然后,启用字段计算器,将源字段的值赋给目标字段。这里需要注意的是,字段计算器的语法可能因软件版本不同而略有差异,但一般来说,直接选择字段名称即可。例如,在计算目标字段时,达式可能直接是源字段的名字,或者可能需要用方括号括起来,比如![源字段]。 另外,用户可能还会遇到数据锁定或编辑会话的问题。在修改属性之前,可能需要开始编辑会话,特别是在ArcGIS Pro中,编辑功能通常需要手动启动和保存。因此,在步骤中应该包含开始编辑和保存编辑的提醒,以避免数据无法保存的情况。 还需要考虑是否有批量处理的需求,或者是否需要对特定记录进行筛选后再复制。用户的问题中没有提到筛选,所以可能只需要全字段复制。但如果有特殊情况,可能需要使用SQL查询来筛选记录,再进行计算。 最后,验证步骤是否正确。比如,添加字段是否正确设置类型,字段计算器是否正确应用,数据是否保存。可能还需要提醒用户备份数据,以防操作失误导致数据丢失。 总结下来,步骤应该是:1. 添加目标字段并确保类型匹配;2. 启动编辑;3. 使用字段计算器复制数据;4. 保存编辑。同时,注意事项包括备份数据,检查类型,以及可能的错误处理。</think>在ArcGIS Pro中将属性字段数据复制到另一个字段的操作步骤如下: ### 分步操作指南 1. **添加目标字段** - 在内容窗格右键点击要素类 → 选择"属性" - 点击"添加"按钮 → 设置字段名称数据类型(必须与源字段一致)→ 确认创建 2. **启动编辑会话** - 在"编辑"选项卡 → 点击"修改"组中的"开始编辑"[^2] 3. **使用字段计算器** ```python # 示例:将"OldField"字段值复制到"NewField" NewField = !OldField! ``` - 右键目标字段标题 → 选择"计算字段" - 在达式框中输入赋值达式 → 验证语法 → 点击确定执行 4. **保存编辑结果** - 在"编辑"选项卡 → 点击"保存"按钮 → 结束编辑会话 $$ \text{字段复制公式}:\text{目标字段} = \text{源字段} $$ ### 注意事项 1. 数据类型必须严格匹配,数值型字段不可复制到文本型字段[^1] 2. 建议操作前备份数据 3. 大型数据集建议建立属性索引提升效率[^2] 4. 使用where子句可限定复制范围: ```sql -- 示例:仅复制海拔大于1000的记录 "Elevation" > 1000 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值