C# 通过business connector将dateTime字段插入Dynamics AX数据库
我一直在尝试让我的C#程序使用.NET business connector将记录直接插入到2009年的数据库中 到目前为止,我可以轻松插入字符串int、int64、enum(NoYes),但每次尝试插入dateTime字段(在AX中,该字段定义为UtcDateTime)时都会失败,错误如下: 提供的方法参数无效 我确信这是我所错过的简单的东西 代码片段:C# 通过business connector将dateTime字段插入Dynamics AX数据库,c#,dynamics-ax-2009,business-connector,C#,Dynamics Ax 2009,Business Connector,我一直在尝试让我的C#程序使用.NET business connector将记录直接插入到2009年的数据库中 到目前为止,我可以轻松插入字符串int、int64、enum(NoYes),但每次尝试插入dateTime字段(在AX中,该字段定义为UtcDateTime)时都会失败,错误如下: 提供的方法参数无效 我确信这是我所错过的简单的东西 代码片段: using (axRecord = ax.CreateAxaptaRecord("TempTable")) {
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
等,但它似乎仍然不起作用。您能试试这段代码吗
using (axRecord = ax.CreateAxaptaRecord("TempTable"))
{
var xppDateTime = ax.CallStaticClassMethod("Global", "CLRSystemDateTime2UtcDateTime", DateTime.Now);
axRecord.set_Field("DateField", xppDateTime);
axRecord.Insert();
}
它应该会起作用
我创建了一个静态助手类,并将其包含在我的项目中:
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的字段
我不明白这为什么不适合你。
以下是一些其他提示:
- 在事件查看器中查找错误
- 检查你的拼写错误 字符串中包含的变量(如 “StartDate”在我的示例中)
- 开始在两个文件中添加断点 Visual Studio和您的x++代码。 :)