2015-05-06 24 views

回答

4

我想你必须使用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. 
} 

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

+0

Thanks Maxim, 容器是正确的选择。 正确初始化AxaptaContainer的方法是在Axapta类中调用CreateAxaptaContainer方法。 –

+0

您能否提供一些示例代码,以便我可以更新答案以供将来参考? –

+0

我会发布完整的代码最大。 –

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进行身份验证,从Axe Bindata类中获取容器并保存记录。

相关问题