Erp100论坛's Archiver

jgyun 发表于 2007-12-1 19:23

紧急问题,请求帮忙

我在 sales order 里增加一个字段,一切正常,但是在sales order line里增加一个字段,总是报错;错误如下:
-------------------------------
系统将重新查询记录。
XX_ORDERLINE_BUYER= 1000029(java.lang.String) != DB: 1000029(java.lang.Integer) -> New: 1000010(java.lang.Integer)
-------------------------------

在 sales order 和 sales order line里增加的字段名称,类型都是一样的。增加的步骤如下:

. 执行以下 SQL 脚本更新数据库:
ALTER TABLE C_OrderLine ADD XX_ORDERLINE_BUYER NUMBER(10);
2. 在 [表与列] 窗口选择 C_OrderLine 表,点击“从数据库创建列”按钮,将列 XX_ORDERLINE_BUYER 导入 [列] 页签中。并切换至 [列] 页签,选择 XX_ORDERLINE_BUYER 将“引用”选择 Table,“引用关键字”选择 AD_User SalesRep。
3. 在 [窗口、页签与字段] 窗口选择 Request (all),然后切换至 [页签] 页签,点击“创建字段”按钮创建字段 Buyer。
4. 执行 GenerateModel 类,更新模型类。
5. 重新编译源代码生成 Compiere 安装包。


已经解决!!!

[[i] 本帖最后由 jgyun 于 2007-12-22 00:41 编辑 [/i]]

pshen 发表于 2007-12-1 20:39

你看一下你生的X_xxx. java 里,你新加的那个字段是什么类型的。
从错误信息看,好像是AD认为你这个字段是integer的,而model class认为是string的。

其实,这一步不是必须的。 你完全可以只修改AD而不动用到java.

jgyun 发表于 2007-12-1 21:47

X_xxx. java 确实是int, 但是不知道为啥model class认为是string, 这个是compiere china推荐的做法。 我最早的做法是,直接在系统里改,然后同步数据库,自动创建数据库。同样的问题。

public void setXX_ORDERLINE_BUYER (int XX_ORDERLINE_BUYER)
{
set_Value ("XX_ORDERLINE_BUYER", new Integer(XX_ORDERLINE_BUYER));
}
/** Get XX_ORDERLINE_BUYER.
@return XX_ORDERLINE_BUYER */
public int getXX_ORDERLINE_BUYER()
{
Integer ii = (Integer)get_Value("XX_ORDERLINE_BUYER");
if (ii == null) return 0;
return ii.intValue();
}

jgyun 发表于 2007-12-1 21:48

忘记说谢谢了,哈哈

jgyun 发表于 2007-12-1 21:51

这个步骤对我来说,是必要的,因为我其他地方还需要。
让我感觉奇怪的是,我曾经在很早的时候,增加同样的字段,也没有出问题的。 最近突然出现这个问题了。

huhailong 发表于 2007-12-4 08:26

这种问题太简单了.

jgyun 发表于 2007-12-4 11:12

哈哈,刚刚找到解决办法,不知道是否是最好的,改变字段的名字,增加了_ID后缀。问题解决了。

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2007 Comsenz Inc.