如何查看 Year EDT 长度?
How to check the Year EDT lenght?
我创建了一个 Table 的 Field,除此之外,我还创建了我的自定义 EDT,命名为:MyEDT(例如)。
MyEDT 是 INTEGER 类型,我扩展了系统标准 EDT YearBase。
所以,如果我插入字母字符(看起来像 "abecjskjfh"),我会得到一个错误。
但我需要有一个规则,我只想插入具有 4 个数字字符的值,我只希望值看起来像:2000、2006、1982 等...
我可以通过代码 check/control 在方法 validateWrite 或 validateField 中插入此代码:
switch (p1)
{
case fieldNum(MyTable, MyField) :
if (strLen( (strFmt("%1",this.MyField)) ) != 4)
throw error ("Inser only value AAAA");
break;
}
但是,创建或扩展只有 4 个字符长度的 YEAR EDT 是可能的还是存在的?或者,还有另一种方法来检查字段值的长度 ?
谢谢大家,
尽情享受吧!
如果要使用整数 EDT,我认为没有办法限制允许的数字范围,除了 AllowNegative
属性。所以你必须像你的问题一样在代码中进行验证。但我建议更改您的验证逻辑以验证数字范围,而不是将数字转换为字符串然后验证字符数。这样您还可以确保用户不能输入像 0000 这样的年份。
if (this.MyField< 1900 || this.MyField > 9999)
{
throw error("Please enter a year between 1900 and 9999");
}
另一种可能是使用日期 EDT,您可以在其中设置 DateYear
、DateMonth
和 DateDay
属性,以便只显示年份。这也有助于数据输入(例如 2 被 2002 替换),并且如果用户输入例如 "abc".
,则会为您提供一个很好的错误对话框
您可以使用 X++ match
函数。
match('<:d:d:d:d>','2004')
将匹配所有 4 位数字字符串 (0000-9999)。
match('<[12]:d:d:d>','2004')
将匹配字符串 1000-2999。
替代方法是使用 System.Text.RegularExpressions.Regex.IsMatch
('1234', '^\d{4}$')
我创建了一个 Table 的 Field,除此之外,我还创建了我的自定义 EDT,命名为:MyEDT(例如)。
MyEDT 是 INTEGER 类型,我扩展了系统标准 EDT YearBase。 所以,如果我插入字母字符(看起来像 "abecjskjfh"),我会得到一个错误。
但我需要有一个规则,我只想插入具有 4 个数字字符的值,我只希望值看起来像:2000、2006、1982 等...
我可以通过代码 check/control 在方法 validateWrite 或 validateField 中插入此代码:
switch (p1)
{
case fieldNum(MyTable, MyField) :
if (strLen( (strFmt("%1",this.MyField)) ) != 4)
throw error ("Inser only value AAAA");
break;
}
但是,创建或扩展只有 4 个字符长度的 YEAR EDT 是可能的还是存在的?或者,还有另一种方法来检查字段值的长度 ?
谢谢大家,
尽情享受吧!
如果要使用整数 EDT,我认为没有办法限制允许的数字范围,除了 AllowNegative
属性。所以你必须像你的问题一样在代码中进行验证。但我建议更改您的验证逻辑以验证数字范围,而不是将数字转换为字符串然后验证字符数。这样您还可以确保用户不能输入像 0000 这样的年份。
if (this.MyField< 1900 || this.MyField > 9999)
{
throw error("Please enter a year between 1900 and 9999");
}
另一种可能是使用日期 EDT,您可以在其中设置 DateYear
、DateMonth
和 DateDay
属性,以便只显示年份。这也有助于数据输入(例如 2 被 2002 替换),并且如果用户输入例如 "abc".
您可以使用 X++ match
函数。
match('<:d:d:d:d>','2004')
将匹配所有 4 位数字字符串 (0000-9999)。
match('<[12]:d:d:d>','2004')
将匹配字符串 1000-2999。
替代方法是使用 System.Text.RegularExpressions.Regex.IsMatch
('1234', '^\d{4}$')