【问题标题】:Insert pdf file using Microsoft.Dynamics.BusinessConnectorNet使用 Microsoft.Dynamics.BusinessConnectorNet 插入 pdf 文件
【发布时间】:2015-05-06 08:00:52
【问题描述】:

我需要通过 C# 应用程序使用 Microsoft.Dynamics.BusinessConnectorNet.dll 将 pdf 文件插入 Ax 数据库。

我参考这篇文章https://msdn.microsoft.com/EN-US/library/aa868997(v=ax.50).aspx

AX 列类型为 Container。

当我插入一个二进制数组 ArgumentException 说:

提供的方法参数无效。

将文件插入 AX 数据库的数据类型应该是什么?

【问题讨论】:

    标签: c# pdf containers axapta


    【解决方案1】:

    我猜你必须使用AxaptaContainer 类在容器中传递值。

    AxaptaRecord axRecord;
    
    try
    {
        // Login to Microsoft Dynamics AX.
        ax = new Axapta();
        ax.Logon(null, null, null, null);
    
        // Create a new AddressState table record.
        using (axRecord = ax.CreateAxaptaRecord("TableName"))
        {
            // Provide container for record field.
            AxaptaContainer axContainer = ax.CreateAxaptaContainer();
            axContainer.Add("Some Data");
    
            axRecord.set_Field("ContainerField", axContainer);
    
            // Other fields
    
            // Commit the record to the database.
            axRecord.Insert();
        }
    }
    catch (Exception e)
    {
        Console.WriteLine("Error encountered: {0}", e.Message);
        // Take other error action as needed.
    }
    

    我还没有测试过,所以请提供一些反馈,以便我们改进解决方案。

    【讨论】:

    • 感谢 Maxim,Container 是正确的选择。初始化 AxaptaContainer 的正确方法是在 Axapta 类中调用 CreateAxaptaContainer 方法。
    • 您能否提供一些示例代码,以便我更新答案以供将来参考?
    【解决方案2】:
            Axapta DynAx = new Axapta();
            AxaptaRecord DynRec;
            string strUserName = "";
            System.Net.NetworkCredential nc = new System.Net.NetworkCredential("", "");
    
            string tableName = "";
    
            DynAx.LogonAs(strUserName.Trim(), "", nc, dataAreaId, "en-us","", "");
    
            try
            {
                using (DynRec = DynAx.CreateAxaptaRecord(tableName))
                {
                    var binData = DynAx.CreateAxaptaObject("Bindata");
                    var loaded = binData.Call("loadFile", path);
                    var data = binData.Call("getData");
    
                    AxaptaContainer axc = DynAx.CreateAxaptaContainer();
    
                    axc.Add(data);
    
    
                    DynRec.set_Field("ATTACHMENT", axc.get_Item(1));
    
                    // Commit the record to the database.
                    DynRec.Insert();
                }
            }
            catch (Exception ex)
            {
                return false;
            }
            finally
            {
                DynAx.Logoff();
            }
    

    对Ax进行身份验证,从Ax Bindata类中获取容器并保存记录。

    【讨论】:

      猜你喜欢
      • 2014-08-11
      • 2022-11-26
      • 2015-12-20
      • 2013-09-24
      • 2013-03-25
      • 2011-02-13
      • 2018-02-16
      • 2013-04-09
      • 2012-03-24
      相关资源
      最近更新 更多