首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Axapta将RecId存储为AnyType

Axapta将RecId存储为AnyType
EN

Stack Overflow用户
提问于 2009-12-08 04:57:42
回答 2查看 4.8K关注 0票数 1

当我将一个RecId存储在一个anytype对象中时,这个数字被破坏了。在我的实现中,我将RecId存储在树视图项的数据值字段中。每当我检索数据值时,我保存的数字总是发生很大的变化。有什么建议吗?

下面是一个示例:

代码语言:javascript
复制
void fillTree()
{
    ABC_Menus _ABC_Menus;
    TreeItemIdx parentItemIdx;
    ;
    while select Prompt, RecId from _ABC_Menus
    {
        parentItemIdx = SysFormTreeControl::addTreeItem(formTreeControl, _ABC_Menus.Prompt, FormTreeAdd::Root, _ABC_Menus.RecId, 0, true);
    }
}

public void endLabelEdit(int _idx, str _text, anytype _data)
{
    FormTreeItem formTreeItem = this.getItem(_idx);
    ;
    formTreeItem.text(_text);
    this.setItem(formTreeItem);
    info(_data);     //this number comes out all wrong
    super(_idx, _text, _data);
}

我将RecId存储在树值字段中。但是,如果我稍后检索它,将返回一个完全不同的数字。

table中的

  • RecId : endLabelEdit方法显示的5637144588
  • RecId : 202520592908288

我还尝试在字段中存储RecId时使用num2str(ABC_Table.RecId,0,0,0)。当以这种方式存储时,数字会匹配,但会抛出“赋值/比较丢失精度”警告。这样可以吗,或者有更好的方法吗?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-09 03:36:47

在Axapta版本3之后,所有RecIds都是64位整数。strFmt()函数能够将recId从int64转换为string,但是您也可以使用int642str()函数显式地将recId转换为string。

代码语言:javascript
复制
RecId recId = 5637144577;
anytype a;
int64 b;
;

a = recId;
b = a;

info(int642str(a));
info(int642str(b));
info(int642str(recId));
票数 3
EN

Stack Overflow用户

发布于 2009-12-08 15:33:38

请给我们提供完整的例子:

代码语言:javascript
复制
RefRecId   recid = 5637144577;
anytype    tmp;
;
info(strfmt('%1', recid));
tmp = recid;
info(strfmt('%1', tmp));
recid = tmp;
info(strfmt('%1', recid));

结果是:

5637144577

5637144577

5637144577

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1862842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档