三个表:
1、消费项目表 记录客户所的消费项目
有2千多条记录
2、客人类型表 记录客户的所有客人类型
有40多个记录
3、特殊折扣表 存放每个客人类型对第一个可折(消费项目表有表示是否可折的字段isdiscount)消费项目的折扣
有4万多条记录
现在消费项目表的项目的可折属性改变:增加了可折消费项目,或者将某些可折的消费项目改成不可折。
现在做程序自动调整特殊折扣表的数据,思路是:
1、处理增加了的可折项目
a、找出在特殊折扣表里没有、而在消费项目里有的可折扣项目,那怕是只有一个客人类型都没有的可折项目;
b、将这些可折项目分别对每一个客人类型往客类折扣表里插入,已有了的就不插入。
2、处理原来可折,现在不可折了的项目;
...
第1种情况的a步骤,系统就不响应了。代码如下,各位大大,我应如何调整思路或代码才能避免这种情况啊?
dw_pricespec.visible = false
dw_discitem.visible = false
dw_customertype.visible = false
dw_pricespec.settransobject( sqlca )
dw_discitem.settransobject( sqlca )
dw_discitem.retrieve( )
dw_customertype.settransobject( sqlca )
dw_customertype.retrieve( )
dw_item.settransobject( sqlca )
long ll_loop1, ll_loop2, ll_loop3
long ll_itemrows, ll_custyperows, ll_pricerows
long ll_row
ll_itemrows = dw_discitem.rowcount( )
ll_custyperows = dw_customertype.rowcount( )
string ls_custypeno, ls_itemno
for ll_loop1 = 1 to ll_itemrows
for ll_loop2 = 1 to ll_custyperows
ls_itemno = dw_discitem.getitemstring( ll_loop1, 'v_itemno' )
ls_custypeno = dw_customertype.getitemstring( ll_loop2, 'v_customertypeno' )
ll_pricerows = dw_pricespec.retrieve( ls_custypeno )
if dw_pricespec.find( "v_itemno = '" + ls_itemno + "'", 1, ll_pricerows ) <= 0 then
ll_row = dw_item.insertrow( 0 )
dw_item.setitem( ll_row, 'typeno', dw_discitem.getitemstring( ll_loop1, 'v_itemtypeno' ) )
dw_item.setitem( ll_row, 'subtypeno', dw_discitem.getitemstring( ll_loop1, 'v_subtypeno' ) )
dw_item.setitem( ll_row, 'itemno', dw_discitem.getitemstring( ll_loop1, 'v_itemno' ) )
dw_item.setitem( ll_row, 'name', dw_discitem.getitemstring( ll_loop1, 'v_name1' ) )
dw_item.setitem( ll_row, 'unit', dw_discitem.getitemstring( ll_loop1, 'v_unit' ) )
dw_item.setitem( ll_row, 'price', dw_discitem.getitemdecimal( ll_loop1, 'n_price' ) )
dw_item.setitem( ll_row, 'priceclub', dw_discitem.getitemdecimal( ll_loop1, 'n_priceclub' ) )
dw_item.setitem( ll_row, 'i_type', dw_discitem.getitemnumber( ll_loop1, 'i_type' ) )
exit
end if
next
next
------解决方案--------------------
??!!!!你居然在客户端这样循环?2000*40000,死不了才怪。你的A需求肯定是在 表1 和 表3 外连接之后,然后再在客户端操作啊