首先作为我们开发过程中必不可少的命令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. thinkphp model

    模型样板 <?php namespace app\model; use think\Db; use think\Model; class Admin extends Model { //表名 p ...

  2. javascript笔记收集

    因为前端编程的兴起, 慢慢地对css/javascript越来越淡, 偶尔用一下,得查半天资料. 这里就收藏一下比较生僻, 但是做工具时会用到的. json获取属性名 Object.keys(), 只 ...

  3. 对provide/inject的研究

    1.组件中通过provider来提供变量,然后在子组件中通过inject来注入变量. 2.在父组件中定义: provide () { return { secondPageTableRoot: { t ...

  4. 对calc()的研究

    1.calc是英文单词calculate(计算)的缩写,是css3的一个新增的功能,用来指定元素的长度 calc()最大的好处就是用在流体布局上 2.calc()使用通用的数学运算规则 使用“+”.“ ...

  5. SpringBoot 在IDEA中实现热部署(实用版)

    转自https://www.jianshu.com/p/f658fed35786 具体步骤 一.开启IDEA的自动编译(静态) 具体步骤:打开顶部工具栏 File -> Settings -&g ...

  6. java生成128A条形码

    添加maven依赖 <dependency> <groupId>net.sf.barcode4j</groupId> <artifactId>barco ...

  7. 数字类别生成onehot

    对应行的列#原始标签 my_label = np.array([3,4,2,4,6,1]) #类别数量 num_class = 6 #样本数量 num = my_label.shape[0] #生成o ...

  8. 现在的编辑器不能复制粘贴word中的文本

    我司需要做一个需求,就是使用富文本编辑器时,不要以上传附件的形式上传图片,而是以复制粘贴的形式上传图片. 在网上找了一下,有一个插件支持这个功能. WordPaster 安装方式如下: 直接使用Wor ...

  9. 51nod1446 限制价值树

    有N个点(N<=40)标记为0,1,2,...N-1,每个点i有个价值val[i],如果val[i]=-1那么这个点被定义为bad,否则如果val[i] >=0那么这个点为定义为good. ...

  10. Nginx 禁止IP访问 只允许域名访问

    今天要在Nginx上设置禁止通过IP访问服务器,只能通过域名访问,这样做是为了避免别人把未备案的域名解析到自己的服务器IP而导致服务器被断网,从网络上搜到以下解决方案: Nginx的默认虚拟主机在用户 ...