首先作为我们开发过程中必不可少的命令For Each 有着无与伦比的重要性 但是我们从Wiki上得知 我们用到的可能只是它一丢丢的能力并没有全部使用出来。
       所以 这篇文档将记录这个命令的各种用处 方便自己     WiKi的链接为:https://wiki.genexus.com/commwiki/servlet/wiki?24744,For%20Each%20command  需要的话可以尝试去看一下。
第一个命令就是For each <Transaction>  这就不用说了 查询某些表数据集的语句
第二个命令就是For each order <Attribute> 这个我们也经常用 根据指定的值来排序 如果加括号即为倒序 反之亦然 然后还有一个 For each order none 此命令用于在执行查询过程中不做排序
第三个命令就是For each using <DataSelector> 这个我们很少用到 首先要说的是DataSelector是我们GeneXus中的一个对象 中文名称叫做数据选择器,我们如果细心点的话,在我们写一个Grid页面的同时会发现GeneXux会自动帮我生成一个这样的玩意儿↓

当我们仔细看这些东西的时候 会发现这其实就是页面上的各种筛选条件 我们一时半会也不知道写这么多东西分别代表什么 但是大体知道这个对象是做什么事的就行了 回到原题当我们使用
For each using <DataSelector> 并且指定一个此类对象的时候那么 换言之我们其实就是把这些筛选条件集合到一起筛选条件就是这个DataSelector 用来简化代码 ,这样说可能不是很清楚那么我换一种图片方式我们还是使用自己的KB随便拉一个Grid的页面并且使用Sdt来填充数据 同时追加一些筛选条件我们没有使用DataSelector的时候是这样的↓

调用方法并传入查询条件

然后根据对应传进来的参数执行查询操作

这就是我们正常情况下的筛选操作  这里我没有提Grid中使用Condition的筛选是因为这两者不好做比较 。当我们使用DataSelector来做这些筛选功能的时候就会变成这样↓
我们新建一个DataSelector 然后模仿GeneXus自己生成方式来写就会变成这样

这样我们 就可以调用了  他的调用方式也简单

其实没什么本质上的不同 而且这两种方式是可以共存的唯一的区别就在于在这两种情况并存的情况下 For each 的Order具有较高的优先级,其他筛选条件则没有。
第四个命令为For each <unique > 这个用的频率还算比较高 指定属性在筛选过程中对于在数据集中重复的数据予以过滤 。
第五个命令为For each <Blocking> 这个命令估计只适用于比较大型的项目了 他的官方文档为https://wiki.genexus.com/commwiki/servlet/wiki?5572,Category%3ABlocking+Data+Updates,
从文档上来看这属于一种批量处理方式,举个栗子:现阶段一个项目中 某条语句可能要对数据库中的10000条语句发生变更操作 这样的话我们客户端可能就要和数据库交互10000次的往返操作,鉴于此种情形 我们本地做10000条假数据来测试,
写简单点我们 将这10000条记录的CustomeNum变为1 并观察他的运行时间

Log日志如下:

貌似有点太短了,同条件下我们把数据量加大一点好了(´・ω・)ノ(._.`) 65万条  再试一下

这。。。算了 不加了 可能我这里是本地数据库的原因所以才这么快吧。
我们再试试使用Blocking命令执行

结果时间花的更久了。。。。。。

这个问题先记下 反正wiki上是这么说的 用途也是这样的 应该有什么我没注意到的地方  嗯没了 下次再来完善下好了

关于GeneXus中的ForeachCommand命令的更多相关文章

  1. linux shell 中的sleep命令

    开始还以为是这样的语法: sleep(1), 后面发现是: linux shell 中的sleep命令 分类: LINUX 在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小 ...

  2. 在脚本中使用sudo命令,将密码保存在脚本中,不需要手动输入密码

    在脚本中使用sudo命令,将密码保存在脚本中,不需要手动输入密码. #!/bin/bash echo 'xxx密码xxx'|sudo -S service mysql start echo 'xxx密 ...

  3. 在程序中执行shell命令

    在linux系统下的操作中我们会经常用到shell命令来进行,一开始学习进程的时候对于shell命令也进行了思考,认为shell命令就是一个进程的外壳,经过了后来的学习对于这一点也有了更多的认识. 用 ...

  4. 常见linux命令释义(第九天)—— Bash Shell 的操作环境Shell 中的管道命令一些管道命令

    最近好懒好懒.连写文章都写不好了.于是只能写读一点书,记一点读书笔记了.太懒了,没办法.慢慢恢复自己的状态吧. 管道命令仅会处理strandard output 的内容,对于strandard err ...

  5. Linux中的历史命令

    Linux中的历史命令一般保存在用户    /root/.bash_history history 选项 历史命令保存文件夹 选项     -c:清空历史命令     -w :把缓存中的历史命令写入历 ...

  6. Google Chrome浏览器中如何使用命令

    Google Chrome浏览器中如何使用命令 | 浏览:2974 | 更新:2014-02-23 23:12 | 标签:chrome 1 2 3 分步阅读 Google Chrome浏览器有很多的特 ...

  7. QT中QProcess调用命令行的痛苦经历

    在QT程序中需要将某些目录和文件压缩为一个rar的压缩包,于是想到了在QT中通过QProcess类调用命令行的rar.exe来达到效果,但是没想到QProcess类用起来很麻烦,而且达不到效果,折腾了 ...

  8. 批处理中的echo命令图文详解

    批处理中的echo命令图文详解 1. Echo 显示当前ECHO的状态:ECHO ON 或者ECHO OFF 2. ECHO ON 将ECHO状态设置为ON,将显示命令行,也就是前面的C:\>类 ...

  9. RedHat中敲sh-copy-id命令报错:-bash: ssh-copy-id: command not found

    RedHat中敲sh-copy-id命令报错:-bash: ssh-copy-id: command not found 在多台Linux服务器SSH相互访问无需密码, 其中进入一台Linus中,对其 ...

随机推荐

  1. DELPHI 调试IOS时出现 Please specify exact device preset UUID

    右击设备DEVICE, 选择REFRESH刷新, 再重新选择一个设备即可.

  2. Python3解leetcode Kth Largest Element in a Stream

    问题描述: Design a class to find the kth largest element in a stream. Note that it is the kth largest el ...

  3. [USACO17FEB]Why Did the Cow Cross the Road III G (树状数组,排序)

    题目链接 Solution 二维偏序问题. 现将所有点按照左端点排序,如此以来从左至右便满足了 \(a_i<a_j\) . 接下来对于任意一个点 \(j\) ,其之前的所有节点都满足 \(a_i ...

  4. 【Java】ApplicationContext应用上下文工具类

    @Slf4j @Service public class SpringContextHolder implements ApplicationContextAware, DisposableBean ...

  5. 树TreeView控件与DataTable交互添加节点(最高效的方法)

    #region "读取树结点从Datatable" /// <summary> /// 读取树结点从Datatable" /// </summary&g ...

  6. C# 修改注册表立即刷新 转载

    修改注册表后不重启计算机并生效,代码如下:const int WM_SETTINGCHANGE = 0x001A; const int HWND_BROADCAST = 0xffff;IntPtr r ...

  7. SYSTEM32 下的几乎所有文件的简单说明(原由无忧启动论坛老毛桃出)

    SYSTEM32 下的几乎所有文件的简单说明(原由无忧启动论坛http://bbs.wuyou.com老毛桃出): clui.dll .....Security Descriptor Editor,没 ...

  8. 20180822-Java接口

    Java 接口 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承接口的抽象方法. 接口并 ...

  9. eureka注册中心wro.css wro.js 404

    注册中心和配置中心放在一个module里面,如果不配置配种中心的访问前缀,会被config拦截.所以改动如下: package com.cloud.stagging.lhcloudeureka; im ...

  10. 生产环境下,oracle不同用户间的数据迁移。第三部分

    任务名称:生产环境下schema ELON数据迁移至schema TIAN########################################前期准备:1:确认ELON用户下的对象状态se ...