我们需要添加自定义字段来存储套件组装开始日期,但都无法完成,由于错误此任务“表中不存在数据库中:INKitRegister”套件组装 - 自定义日期字段
如果我们需要一个日期字段而不是文本字段,装饰我们的自定义字段具有以下属性+添加PXDateTimeEdit的工具组装屏幕上:
现在我们收到一个不是很清晰的错误信息,同时进入某个值自定义PXDateTimeEdit:
我们需要添加自定义字段来存储套件组装开始日期,但都无法完成,由于错误此任务“表中不存在数据库中:INKitRegister”套件组装 - 自定义日期字段
如果我们需要一个日期字段而不是文本字段,装饰我们的自定义字段具有以下属性+添加PXDateTimeEdit的工具组装屏幕上:
现在我们收到一个不是很清晰的错误信息,同时进入某个值自定义PXDateTimeEdit:
的INKitRegister DAC装饰有PXProjectionAttribute并与INRegister数据库表的工作原理 - 因此您收到的错误消息报道:
[PXPrimaryGraph(typeof(KitAssemblyEntry))]
[PXCacheName(Messages.INKit)]
[PXProjection(typeof(Select2<INRegister, InnerJoin<INTran,
On<INRegister.kitLineNbr, Equal<INTran.lineNbr>,
And<INRegister.docType, Equal<INTran.docType>,
And<INRegister.refNbr, Equal<INTran.refNbr>>>>>>), Persistent = true)]
[Serializable]
public partial class INKitRegister : IBqlTable, ILSPrimary
{
...
}
截至目前定制管理器不支持投影DAC和我们必须纠正一些代码才能在套件组件屏幕上添加自定义字段:
1.在定制管理器中为IN添加新字段。INRegister DAC下面的截图以下:
声明生成INKitRegister DAC延伸内的自定义字段UsrTest:
using System;
using System.Collections.Generic;
using System.Collections;
using System.Text;
using PX.Data;
using PX.Objects.CS;
using PX.Objects.IN.Overrides.INDocumentRelease;
using PX.Objects.GL;
using PX.Objects.CM;
using System.Diagnostics;
using PX.Objects;
using PX.Objects.IN;
namespace PX.Objects.IN
{
public class INKitRegisterExt : PXCacheExtension<PX.Objects.IN.INKitRegister>
{
#region UsrTest
public abstract class usrTest: PX.Data.IBqlField
{
}
protected String _BatchNbr;
[PXDBString(50, BqlField = typeof(INRegisterExt.usrTest))]
[PXUIField(DisplayName = "Test")]
public virtual string UsrTest { get; set; }
#endregion
}
}
注:获得用于DB [类型]属性需要BqlField名,应该在数据类编辑器打开INRegister自定义字段声明:
发布当前项目
要解决“无法投类型A的对象,以B型”的错误,应当验证两件事情:
领域
在这种特定情况下,通过将UsrKAStartDate的类型更改为DateTime来解决问题? (可空):
using System;
using System.Collections.Generic;
using System.Collections;
using System.Text;
using PX.Data;
using PX.Objects.CS;
using PX.Objects.IN.Overrides.INDocumentRelease;
using PX.Objects.GL;
using PX.Objects.CM;
using System.Diagnostics;
using PX.Objects;
using PX.Objects.IN;
namespace PX.Objects.IN
{
public class INKitRegisterExt : PXCacheExtension<PX.Objects.IN.INKitRegister>
{
#region UsrKAStartDate
[PXDBDate]
[PXUIField(DisplayName = "Start Date")]
public virtual DateTime? UsrKAStartDate { get; set; }
public abstract class usrKAStartDate : IBqlField { }
#endregion
}
}