0

クエリから標準ウィザードを使用して、AX2009でAIFWebサービスを作成しました。これで、アップデートを除いて、すべてが機能しているように見えます。「decimal」タイプのフィールドを書き戻すことができません。ただし、「文字列」フィールドは問題なく機能します。

以下のコードを見ると、フィールド「PickQty」は小数であり、機能しません。「PickQtyMob」は文字列フィールドであり、機能します。

PickQtyのみを更新する場合、AXのサービスから更新を取得しますが、parmメソッドでは更新しません。

また、エラーメッセージや例外は表示されません。

更新のコードスニペット:try {MOBBatchPickServiceUpdateRequest updateRequest = new MOBBatchPickServiceUpdateRequest(); updateRequest.MOBBatchPick = new AxdMOBBatchPick(); updateRequest.MOBBatchPick.BatchPick = new MOBBatchPickService.AxdEntity_BatchPick [1]; updateRequest.MOBBatchPick.BatchPick [0] = new MOBBatchPickService.AxdEntity_BatchPick();

    updateRequest.EntityKeyList = new MOBBatchPickService.EntityKey[mobBatchPick.BatchPick.Length];

    for (i = 0; i < mobBatchPick.BatchPick.Length; i++)
    {
        updateRequest.EntityKeyList[i] = new MOBBatchPickService.EntityKey();
        updateRequest.EntityKeyList[i].KeyData = new MOBBatchPickService.KeyField[1];

        updateRequest.EntityKeyList[i].KeyData[0] = new MOBBatchPickService.KeyField();
        updateRequest.EntityKeyList[i].KeyData[0].Field = "PickRequestNum";
        updateRequest.EntityKeyList[i].KeyData[0].Value = mobBatchPick.BatchPick[i].PickRequestNum;

        mobBatchPick.BatchPick[i].PickQty = mobBatchPick.BatchPick[i].PickQty; // decimal: Doesn't work
        mobBatchPick.BatchPick[i].PickQtyMob = mobBatchPick.BatchPick[i].PickQty.ToString(); // string: Works

        mobBatchPick.BatchPick[i].action = MOBBatchPickService.AxdEnum_AxdEntityAction.update;

    }// for


    updateRequest.MOBBatchPick = mobBatchPick;
    batchPickClient.update(updateRequest);

}
catch (Exception _exception)
{
    MessageBox.Show(_exception.ToString());
}
4

1 に答える 1

0

次のように、AXのinitMandatoryFieldsMapメソッドにフィールドを追加することで問題を解決しました。

protected void initMandatoryFieldsMap()
{
    super();
    this.setParmMethodAsMandatory(classNum(AxMobBatchPick),methodStr(AxMobBatchPick,parmPickty));
}
于 2012-08-03T15:08:42.783 に答える