我有以下问题:
SETCURRENTKEY
实际上做了什么?SETCURRENTKEY
的好处是什么?SETCURRENTKEY
?SETCURRENTKEY
?我一直在网上搜索和“IT专业开发者帮助”#39;这个记录不完整的函数的内部Navision文档,我找不到我的问题的正确答案。
我唯一知道的是SETCURRENTKEY
设置记录变量的当前键,并根据它对记录集进行排序。当SETCURRENTKEY
仅使用几个键时,它可以提高查询性能。当数据库使用索引而不使用索引时,我不知道实际发生了什么。
有人告诉我这是SETCURRENTKEY
的工作原理:
它就像图书馆中的旧分拣卡系统:没有
SETCURRENTKEY
,您必须通过每个货架并手动过滤掉您想要的书。你会发现随机书籍的混合,你不得不说:"不,不是这一本。是的,这个"。使用SETCURRENTKEY
,您可以拥有一个类似于旧系统的索引,您只需根据其“作者”访问书籍或音乐CD即可。或者'艺术家'等
这一切都很好,但我仍然无法正确回答我的问题。
答案 0 :(得分:4)
典型的用途是:
RecordVar.SETCURRENTKEY(...)
RecordVar.SETRANGE(Field, ...)
RecordVar.SETFILTER(Field, ...)
RecordVar.SETRANGE(Field, ...)
...
IF RecordVar.FINDSET THEN REPEAT
// do something with records
UNTIL RecordVar.NEXT = 0;
SETCURRENTKEY是声明性的,仅在执行FINDSET时生效。执行FINDSET时,将使用SETRANGE / SETFILTER声明的过滤器和SETCURRENTKEY声明的键/索引在RecordVar表示的表上查询数据库。
对于5.和6.通常,我会建议您熟悉basic database index theory。这就是它,你自己使用图书馆/书籍类比很好地解释了。
答案 1 :(得分:0)
如果在循环中修改关键字段(或过滤后的字段,即使不在关键字段中),则在NAV中执行此操作的标准方法是声明第二个记录变量,使用来自您正在遍历的记录变量,然后更改并修改第二个记录变量。