質問

IはANYTYPEオブジェクト内RECIDを格納する場合、番号が壊れています。私の実装では、私は、TreeView項目のデータ値フィールドにRECIDを格納しています。私は、データ値を取得するたびに、私は保存された数は常に大きく変化します。任意の提案ですか?

ここでは一例であります:

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を格納しています。私は後でそれを取得する場合は、全く別の番号が出て戻ってくる。
- テーブル内のレコードID:5637144588
- RECID endLabelEdit方法で表示:202520592908288

Iはまた、num2strは(ABC_Table.RecId、0、0、0)フィールドにRECIDを格納使用してみました。そのように保存した場合、番号は一致しますが、警告スローされ、「割り当て/比較すると、精度が失われます」。それは大丈夫ですか良い方法はありますか?

おかげ

役に立ちましたか?

解決

のAxaptaのバージョン3の後、すべてのRecIdsは、64ビットの整数です。 strFmt()関数は、あなたのための文字列にint64モードからのRECIDをキャストすることができますが、あなたはまた、明示的に文字列にRECIDをキャストするint642str()関数を使用することができます。

RecId recId = 5637144577;
anytype a;
int64 b;
;

a = recId;
b = a;

info(int642str(a));
info(int642str(b));
info(int642str(recId));

他のヒント

私たちに完全な例を提供してくださいます:

RefRecId   recid = 5637144577;
anytype    tmp;
;
info(strfmt('%1', recid));
tmp = recid;
info(strfmt('%1', tmp));
recid = tmp;
info(strfmt('%1', recid));

結果は次のとおりです。

5637144577

5637144577

5637144577

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top