Variables 如何检查年度EDT长度?
我创建了一个表的字段,除此之外,我还创建了我的自定义EDT,名为:MyEDT(例如) MyEDT是整数类型,我扩展了系统标准EDT年库。 因此,如果我插入字母字符(看起来像“abecjskjfh”),我会得到一个错误 但我需要有一个规则,我只想插入4个数字字符的值,我只想让值看起来像:2000,2006,1982等等 我可以通过代码在validateWrite或validateField方法中检查/控制此代码:Variables 如何检查年度EDT长度?,variables,types,axapta,dynamics-ax-2012,x++,Variables,Types,Axapta,Dynamics Ax 2012,X++,我创建了一个表的字段,除此之外,我还创建了我的自定义EDT,名为:MyEDT(例如) MyEDT是整数类型,我扩展了系统标准EDT年库。 因此,如果我插入字母字符(看起来像“abecjskjfh”),我会得到一个错误 但我需要有一个规则,我只想插入4个数字字符的值,我只想让值看起来像:2000,2006,1982等等 我可以通过代码在validateWrite或validateField方法中检查/控制此代码: switch (p1) { case fieldNum(MyTable, MyFi
switch (p1)
{
case fieldNum(MyTable, MyField) :
if (strLen( (strFmt("%1",this.MyField)) ) != 4)
throw error ("Inser only value AAAA");
break;
}
但是,有可能或存在创建或删除只有4个数字字符长度的EDT吗?或者,还有另一种方法来检查字段值的长度
谢谢大家
享受吧 如果要使用整数EDT,我认为除了
AllowNegative
属性外,没有办法限制允许的数字范围。所以你必须像你的问题一样用代码进行验证。但我建议您更改验证逻辑,以验证数字范围,而不是将数字转换为字符串,然后验证字符数。通过这种方式,您还可以确保用户不能输入像0000这样的年份
if (this.MyField< 1900 || this.MyField > 9999)
{
throw error("Please enter a year between 1900 and 9999");
}
if(this.MyField<1900 | | this.MyField>9999)
{
抛出错误(“请输入1900和9999之间的年份”);
}
另一种可能是使用日期EDT,在其中设置日期年
、日期月
和日期日
属性,以便只显示年份。这也将有助于数据输入(例如,2被替换为2002),并且如果用户输入例如“abc”,将为您提供一个不错的错误对话框
如果要使用整数EDT,我认为除了
AllowNegative
属性外,没有办法限制允许的数字范围。所以你必须像你的问题一样用代码进行验证。但我建议您更改验证逻辑,以验证数字范围,而不是将数字转换为字符串,然后验证字符数。通过这种方式,您还可以确保用户不能输入像0000这样的年份
if (this.MyField< 1900 || this.MyField > 9999)
{
throw error("Please enter a year between 1900 and 9999");
}
if(this.MyField<1900 | | this.MyField>9999)
{
抛出错误(“请输入1900和9999之间的年份”);
}
另一种可能是使用日期EDT,在其中设置日期年
、日期月
和日期日
属性,以便只显示年份。这也将有助于数据输入(例如,2被替换为2002),并且如果用户输入例如“abc”,将为您提供一个不错的错误对话框
您可以使用X++函数
match(“”,'2004')
将匹配所有4位字符串(0000-9999)
match(“”,'2004')
将匹配字符串1000-2999
另一种方法是使用('1234','^\d{4}$')
您可以使用X++函数
match(“”,'2004')
将匹配所有4位字符串(0000-9999)
match(“”,'2004')
将匹配字符串1000-2999
另一种方法是使用('1234','^\d{4}$')