我使用的是Adempiere
,它有数据库Oracle
我有一个窗口叫做Stock Code
从表叫做M_StockCode
字段为Code
和Description
。
目前Code
数据类型为Number
, Description
数据类型为Varchar2
我想用Code
01
输入Sparepart
,用Code
02
输入Body Repair
。
当我在addempiere中输入数据并保存它时,将显示的是Sparepart
与Code
1
(不带前导零)
我试着把LPAD
函数,但它仍然失败。
我怎么能把01既在addempiere界面和数据库?
NUMBER不能为前导零,STRING可以。
-
如果您希望在数据库表中存储前导为0的代码,则必须使用VARCHAR2而不是NUMBER。
-
如果您只想显示带有前导零的数字,则使用TO_CHAR将数字转换为字符串。
SQL> SELECT TO_CHAR(1, '00') FROM DUAL;
TO_
---
01
您也可以使用LPAD,但是记住,结果的数据类型将是字符串而不是数字。
例如,SQL> SELECT LPAD(1, 2, '0') FROM DUAL;
LP
--
01
在addempiere中,您通过应用程序字典管理模型,它相当于关系数据库使用的数据字典。
- 以系统管理员身份登录到Adempiere。
- 选择菜单选项
Application Dictionary->Table & Column
。 - 选择M_StockCode表并在其窗口中单击Columns选项卡。
- 在这里,选择Code列,如果需要切换到Form view
- 现在,从下拉菜单中选择String的Reference值,并设置Length = 2。
- 最后,点击
Synchronize Column
按钮,让Admepiere修改数据库。
如果这段代码是某种分类,那么在应用程序字典中创建新的引用类型可能会很有用,然后您可以将您的列指向它;这将确保一致性,为用户提供可供选择的选项,而不是输入值。Reference可以是List类型,这对于短列表很方便,或者是Table驱动,这在分类比较不稳定并且需要用户维护时很有用。