【发布时间】:2021-08-02 21:56:12
【问题描述】:
我尝试在 acumatica/lexbizz 中创建一个屏幕,它应该在一个简单的网格视图中显示我新创建的 DAC 的所有条目。图表如下所示:
using PX.Data;
using PX.Data.BQL.Fluent;
using PX.LotSertialNbrAttribute.Ext;
namespace Maut1
{
public class TestMaint : PXGraph<TestMaint>
{
public SelectFrom<M1InventoryLotSerialContainer>.View InventoryLotSerialContainers;
}
}
并且使用的 DAC M1InventoryLotSerialContainer 包含两个 Date 字段,声明如下:
#region ValidFrom
[PXDBDate()]
[PXUIField(DisplayName = "Valid from")]
public virtual DateTime? ValidFrom { get; set; }
public abstract class validFrom : PX.Data.BQL.BqlDateTime.Field<validFrom> { }
#endregion
#region ValidTo
[PXDBDate()]
[PXUIField(DisplayName = "Valid to")]
public virtual DateTime? ValidTo { get; set; }
public abstract class validTo : PX.Data.BQL.BqlDateTime.Field<validTo> { }
#endregion
并且我在 SQL 表中将这两个字段都创建为可为空且类型为 [datetime]。我可以使用已经存在的屏幕在表中创建新条目,但是当我尝试访问新创建的 GridView 时,出现以下异常并且没有显示条目:
5/12/2021 3:42:27 PM Error:
Error: An error occurred during processing of the field Valid to: Specified cast is not valid..
System.InvalidCastException: Specified cast is not valid.
at System.Data.SqlClient.SqlBuffer.get_DateTime()
at System.Data.SqlClient.SqlDataReader.GetDateTime(Int32 i)
at PX.Data.PXDataRecord.GetDateTime(Int32 i) in C:\Users\svc-builder\AppData\Local\Temp\~PX.Data.0\PX.Data.dll.il:line 769081
at PX.Data.PXDBDateAttribute.RowSelecting(PXCache sender, PXRowSelectingEventArgs e) in C:\Users\svc-builder\AppData\Local\Temp\~PX.Data.0\PX.Data.dll.il:line 856111
at PX.Data.PXCache.OnRowSelecting(Object item, PXDataRecord record, Int32& position, Boolean isReadOnly) in C:\Users\svc-builder\AppData\Local\Temp\~PX.Data.0\PX.Data.dll.il:line 666901
at PX.Data.PXCache.OnRowSelecting(Object item, PXDataRecord record, Int32& position, Boolean isReadOnly) in C:\Users\svc-builder\AppData\Local\Temp\~PX.Data.0\PX.Data.dll.il:line 666757
at PX.Data.PXCache`1.Select(PXDataRecord record, Int32& position, Boolean isReadOnly, Boolean& wasUpdated) in C:\Users\svc-builder\AppData\Local\Temp\~PX.Data.0\PX.Data.dll.il:line 644916
at PX.Data.PXView.CreateItem(PXCache cache, PXDataRecord record, Int32& position, Boolean isReadOnly, Boolean& wasUpdated) in C:\Users\svc-builder\AppData\Local\Temp\~PX.Data.0\PX.Data.dll.il:line 685666
at PX.Data.PXView.CreateResult(PXCache[] caches, PXDataRecord rec, Boolean hascount, Boolean& overrideSort, Boolean& extFilter) in C:\Users\svc-builder\AppData\Local\Temp\~PX.Data.0\PX.Data.dll.il:line 685586
at PX.Data.PXView.GetResult(Object[] parameters, PXFilterRow[] filters, Boolean reverseOrder, Int32 topCount, PXSearchColumn[] sorts, Boolean& overrideSort, Boolean& extFilter) in C:\Users\svc-builder\AppData\Local\Temp\~PX.Data.0\PX.Data.dll.il:line 685520
at PX.Data.PXView.Select(Object[] currents, Object[] parameters, Object[] searches, String[] sortcolumns, Boolean[] descendings, PXFilterRow[] filters, Int32& startRow, Int32 maximumRows, Int32& totalRows) in C:\Users\svc-builder\AppData\Local\Temp\~PX.Data.0\PX.Data.dll.il:line 690963
at PX.Data.PXGraph.ExecuteSelect(String viewName, Object[] currents, Object[] parameters, Object[] searches, String[] sortcolumns, Boolean[] descendings, PXFilterRow[] filters, Int32& startRow, Int32 maximumRows, Int32& totalRows) in C:\Users\svc-builder\AppData\Local\Temp\~PX.Data.0\PX.Data.dll.il:line 981069
据我所知,acumatica 无法将字段 Valid to 转换为 [日期时间]。我已经尝试在我的 SQL 表中使用类型 [datetime2],但没有任何改变。所以我不太确定是在 DAC 中错误地声明了该字段,还是我必须在 SQL 表中使用不同的类型。
顺便说一句,这是我在 stackoverflow 上发布的第一个问题,因此感谢您就未来如何改进问题提供反馈
【问题讨论】:
标签: acumatica