【问题标题】:Insert dateTime field into Dynamics AX database through business connector通过业务连接器将 dateTime 字段插入 Dynamics AX 数据库
【发布时间】:2011-06-06 14:25:12
【问题描述】:

我一直在尝试让我的 C# 程序使用 .NET 业务连接器将记录直接插入到 Dynamics AX 2009 数据库中。

到目前为止,我可以轻松插入一个字符串、int、int64、枚举(否),但每次我尝试插入 dateTime 字段(在 AX 中该字段定义为 UtcDateTime)时都会失败,并出现错误:

提供的方法参数无效。

我确定这是我缺少的一些简单的东西。

代码片段:

    using (axRecord = ax.CreateAxaptaRecord("TempTable"))
        {
            // Fails on this line with error: The supplied method arguments are not valid.
            axRecord.set_Field("DateField", DateTime.Now);

            axRecord.Insert();

        }

我尝试过作为字符串传递并使用dateTime.parseExact等,但它似乎仍然不起作用。

【问题讨论】:

    标签: c# dynamics-ax-2009 business-connector


    【解决方案1】:

    它应该可以工作。

    我制作了一个静态帮助类并将其包含在我的项目中:

    public static class MyHelperExtensions 
    {    
            public static DateTime ParseDateAsString(this string value)
            {
                var culture = new CultureInfo("nb-NO");
                var formats = new[] {"ddMMyyyy", "dd.MM.yyyy"};
                DateTime date;
                return DateTime.TryParseExact(value, formats, culture, DateTimeStyles.None, out date) ? date : DateTime.MinValue;
            }
    }
    

    然后我可以像这样传递值:

    record.set_Field("StartDate", subscription.StartDate.ParseDateAsString());
    

    现在,此解决方案在整个系统中假定挪威文化。 值“记录”是 AxaptaRecord 类型。

    StartDate 是一个(最终)扩展 TransDate 的字段。

    我不明白为什么这不适合你。 以下是一些其他提示:

    • 在事件查看器中查找错误

    • 寻找你的拼写错误 字符串中包含的变量(如 “开始日期”在我的示例中)。

    • 开始在两者中添加断点 Visual Studio 和您的 x++ 代码。 :)

    【讨论】:

    • 谢谢你,虽然它最初没有用。我最终重新创建了表格并得到了解决方案。我假设我首先错误地创建了表格。尽管这里的两个答案都有效,但我将其标记为答案,因为它似乎解决了我在使用多种日期时间格式时面临的另一个问题。
    • 很高兴我能帮上忙。 :) 该表的先前版本中该列的数据类型也可能有问题,但现在这是桥下的水。
    【解决方案2】:

    你能试试这个代码吗?

    using (axRecord = ax.CreateAxaptaRecord("TempTable"))
    {
        var xppDateTime = ax.CallStaticClassMethod("Global", "CLRSystemDateTime2UtcDateTime", DateTime.Now);
    
        axRecord.set_Field("DateField", xppDateTime);
    
        axRecord.Insert();
    
    }
    

    【讨论】:

    • 谢谢,因为这个解决方案有效,但最终选择使用其他解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多