Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 如何检查年度EDT长度?_Variables_Types_Axapta_Dynamics Ax 2012_X++ - Fatal编程技术网

Variables 如何检查年度EDT长度?

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

我创建了一个表的字段,除此之外,我还创建了我的自定义EDT,名为:MyEDT(例如)

MyEDT是整数类型,我扩展了系统标准EDT年库。 因此,如果我插入字母字符(看起来像“abecjskjfh”),我会得到一个错误

但我需要有一个规则,我只想插入4个数字字符的值,我只想让值看起来像:2000,2006,1982等等

我可以通过代码在validateWrite或validateField方法中检查/控制此代码:

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}$')