首先作为我们开发过程中必不可少的命令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. bzoj4408 [Fjoi 2016]神秘数 & bzoj4299 Codechef FRBSUM 主席树+二分+贪心

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4299 https://lydsy.com/JudgeOnline/problem.php?id ...

  2. flask之视图函数从前端接收数据的方法

    一:从前端接收查询字符串  query-string 注意:get和post都可以在url后面添加查询字符串?a=1&b=2 测试工具:postman 1:get方式接收 视图函数 from ...

  3. [洛谷P2296] NOIP2014 寻找道路

    问题描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点连通. 2 .在满足条 ...

  4. 微信公众号号开发(Java)

    参考:http://www.cnblogs.com/fengzheng/p/5023678.html http://www.cnblogs.com/xdp-gacl/p/5151857.html 一: ...

  5. URL跳转漏洞

    URL跳转原理: 由于越来越多的需要和其他第三方应用交互,以及在自身应用内部根据不同的逻辑将用户引向到不同的页面,譬如一个典型的登录接口就经常需要在认证成功之后将用户引导到登录之前的页面,整个过程中如 ...

  6. shell学习记录----初识sed和gawk

    Linux命令行与shell脚本编程大全中关于sed和gawk的介绍合在一起,而且结构有点乱. 不像之前的命令写的很清楚.所以这次我需要写下来整理一下. 一.sed部分 1.1 sed命令格式如下: ...

  7. CSS实现回到顶部图片hover后改变效果

    任何网站中回到顶部元素不可缺少,一般为了实现交互效果,都会在鼠标hover后元素样式有所改变.今天这个实例便是采用CSS中的transform知识实现. hover: <!DOCTYPE htm ...

  8. sql常用 语句总结

    一,插入一个新字段:ALTER TABLE +表名+ADD  COLUMN(字段名+ 类型) sql1 = 'ALTER TABLE klkl_4s_shop ADD COLUMN (name_rea ...

  9. read_ila

    close all; clc; %clear; %点数 %point=40960; fft_point=200; show_point=200; end_point=1024; FS=30.72;%% ...

  10. [转载]Java中异常的捕获顺序(多个catch)

    http://blog.sina.com.cn/s/blog_6b022bc60101cdbv.html [转载]Java中异常的捕获顺序(多个catch) (2012-11-05 09:47:28) ...