免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2263 | 回复: 7
打印 上一主题 下一主题

程序运行出错(某些记录更新时出错) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-03-25 09:29 |只看该作者 |倒序浏览
我使用批量修改记录时,程序全部退出,需用户重输密码,
或许因为这批记录有98条(而修改批量比较少的记录时则不会出错),
这会有影响吗?

出错信息如下:
Function program @ACSU009 failed - see second level text for details
Program status 00121 = Invalid (out of range) array index encountered

论坛徽章:
0
2 [报告]
发表于 2005-03-25 10:37 |只看该作者

程序运行出错(某些记录更新时出错)

数组越界了?有数组定义?

论坛徽章:
0
3 [报告]
发表于 2005-03-25 10:40 |只看该作者

程序运行出错(某些记录更新时出错)

没有,是巡环修改一批数据....

论坛徽章:
0
4 [报告]
发表于 2005-03-25 10:47 |只看该作者

程序运行出错(某些记录更新时出错)

member贴出来瞧瞧.

论坛徽章:
0
5 [报告]
发表于 2005-03-25 10:49 |只看该作者

程序运行出错(某些记录更新时出错)

原帖由 "Vivian-wu" 发表:
我使用批量修改记录时,程序全部退出,需用户重输密码,
或许因为这批记录有98条(而修改批量比较少的记录时则不会出错),
这会有影响吗?

出错信息如下:
Function program @ACSU009 failed - see second ..........




是数组出界了。需要修改程式了。

论坛徽章:
0
6 [报告]
发表于 2005-03-25 10:59 |只看该作者

程序运行出错(某些记录更新时出错)

行这一段的时候出错:
-IF_MODE    IS(*CHANGE)  



55     ] CLR_LIST   NAMED(#LST01)                                             
56     ] ********** INZ_LIST NAMED(#LST01) NUM_ENTRYS(1) WITH_MODE(*ADD)      
57     ]  -SELECT     FIELDS(#LST01) FROM_FILE(ACPOTX) WITH_KEY(#T\CP #ACFPON
        ] ]            ) RETURN_RRN(#PRIFILRRN)   
58     ] ] FETCH      FIELDS(#ACFITN) FROM_FILE(ACITEM) WITH_KEY(#T\CP #ACFIT
        ] ]            )                                                      
59     ] ] **********                                                         
60     ] ] CHANGE     FIELD(#T\PQTY) TO(#ACFQTY)                              
61     ] ] CHANGE     FIELD(#T\POUN) TO(#ACFPUN)                              
62     ] ] CHANGE     FIELD(#T\PPRI) TO(#ACFPRI)                              
63     ] ] CHANGE     FIELD(#T\PURA) TO(#ACFURA)                              
64     ] ] ADD_ENTRY  TO_LIST(#LST01)                                         
65     ]  -ENDSELECT                                                         
66     ] **********                                                           
67     ] DISPLAY    FIELDS(#HEADER) DESIGN(*DOWN) IDENTIFY(*DESC) DOWN_SEP(   
        ]            001) ACROSS_SEP(001) BROWSELIST(#LST01) MENU_KEY(*YES *   
        ]            RETURN) ADD_KEY(*YES) CHANGE_KEY(*YES)
68     ]  -IF_MODE    IS(*CHANGE)                                             
69     ] ]  -IF         COND('#OP03 *NE ''1''')                              
70     ] ] ] MESSAGE    MSGID(TFM1150) MSGF(TFMSGF)                           
71     ] ] ]-ELSE                                                            
72     ] ] ]  -IF         COND('#ACFSTS *NE P')                              
73     ] ] ] ] CHANGE     FIELD(#H\AMT) TO(*ZERO)                             
74     ] ] ] ] CHANGE     FIELD(#H\NAMT) TO(*ZERO)                           
75     ] ] ] ]  -SELECTLIST NAMED(#LST01)                                    
76     ] ] ] ] ] **********                                                   
77     ] ] ] ] ] EXCHANGE   FIELDS(#T\CP #ACFIT)                              
78     ] ] ] ] ]  -BEGINCHECK                                                
79     ] ] ] ] ] ]  -IF         COND('#ACFQTY *LT *ZERO')                     
80     ] ] ] ] ] ] ] SET_ERROR  FOR_FIELD(#ACFQTY) MSGTXT('Can not input nega      
        ] ] ] ] ] ] ]            ity !')                                       
81     ] ] ] ] ] ]  -ENDIF                                                   
82     ] ] ] ] ] ]  -IF         COND('#ACFUNI *NE #ACFPUN')                  
83     ] ] ] ] ] ] ] FILECHECK  FIELD(#ACFPUN) USING_FILE(ACURATE) USING_KEY(
        ] ] ] ] ] ] ]            IT #ACFPUN) FOUND(*NEXT) NOT_FOUND(*ERROR)   
84     ] ] ] ] ] ]  -ENDIF                                                   
85     ] ] ] ] ]  -ENDCHECK                                                   
86     ] ] ] ] ] **********                                                   
87     ] ] ] ] ]  -IF         COND('(#ACFPUN *NE #T\POUN)')                  
88     ] ] ] ] ] ] FETCH      FIELDS(#ACFURA) FROM_FILE(ACURATE) WITH_KEY(#T\
        ] ] ] ] ] ]            T #ACFPUN)                                      
89     ] ] ] ] ] ]  -IF_STATUS  IS_NOT(*OKAY)                                 
90     ] ] ] ] ] ] ] CHANGE     FIELD(#ACFURA) TO(1)              
91     ] ] ] ] ] ] ]  -IF         COND('(#ACFQTY *EQ #T\PQTY) *AND           
        ] ] ] ] ] ] ] ]            (#ACFPRI *EQ #T\PPRI)')                    
92     ] ] ] ] ] ] ] ] CHANGE     FIELD(#ACFQTY) TO('#ACFQTY * #T\PURA')     
93     ] ] ] ] ] ] ] ] CHANGE     FIELD(#ACFPRI) TO('#ACFPRI / #T\PURA')     
94     ] ] ] ] ] ] ]  -ENDIF                                                
95     ] ] ] ] ] ] ]-ELSE                                                   
96     ] ] ] ] ] ] ]  -IF         COND('(#ACFQTY *EQ #T\PQTY) *AND           
        ] ] ] ] ] ] ] ]            (#ACFPRI *EQ #T\PPRI)')                    
97     ] ] ] ] ] ] ] ] CHANGE     FIELD(#ACFQTY) TO('#ACFQTY * #T\PURA / #ACF
98     ] ] ] ] ] ] ] ] CHANGE     FIELD(#ACFPRI) TO('#ACFPRI / #T\PURA * #ACF
99     ] ] ] ] ] ] ]  -ENDIF                                                
100     ] ] ] ] ] ]  -ENDIF                                                   
101     ] ] ] ] ]  -ENDIF   
102     ] ] ] ] ] CHANGE     FIELD(#T\PQTY) TO(#ACFQTY)                        
103     ] ] ] ] ] CHANGE     FIELD(#T\POUN) TO(#ACFPUN)                        
104     ] ] ] ] ] CHANGE     FIELD(#T\PPRI) TO(#ACFPRI)                        
105     ] ] ] ] ] CHANGE     FIELD(#T\PURA) TO(#ACFURA)                        
106     ] ] ] ] ] **********                                                   
107     ] ] ] ] ] CHANGE     FIELD(#ACFNAM) TO('(#ACFQTY * #ACFPRI) *         
        ] ] ] ] ]            - (#ACFDIS / 100))')                              
108     ] ] ] ] ] CHANGE     FIELD(#H\AMT) TO('#H\AMT + (#ACFQTY * #ACFPRI)')  
109     ] ] ] ] ] CHANGE     FIELD(#H\NAMT) TO('#H\NAMT + ((#ACFQTY * #ACFPRI)
        ] ] ] ] ]             - (#ACFDIS / 100)))')                           
110     ] ] ] ] ] UPDATE     FIELDS((#LST01)) IN_FILE(ACPOTX) VAL_ERROR(*NEXT)
        ] ] ] ] ]            WITH_RRN(#PRIFILRRN)                              
111     ] ] ] ] ] UPD_ENTRY  IN_LIST(#LST01)              
112     ] ] ] ] ] CHANGE     FIELD(#CHG\DET) TO('Y')         
113     ] ] ] ]  -ENDSELECT                                   
114     ] ] ] ]  -IF         COND('#CHG\DET *EQ Y')           
115     ] ] ] ] ] CHANGE     FIELD(#ACFUSR) TO(*USER)         
116     ] ] ] ] ] CHANGE     FIELD(#ACFUDT) TO(*DATE)         
117     ] ] ] ] ] CHANGE     FIELD(#ACFAMT) TO(#H\AMT)        
118     ] ] ] ] ] CHANGE     FIELD(#ACFNAM) TO(#H\NAMT)      
119     ] ] ] ] ] UPDATE     FIELDS(#HEADER) IN_FILE(ACPO)   
120     ] ] ] ] ] **********                                 
121     ] ] ] ] ] ********** FIELD(#ACFUSR) TO(*USER)         
122     ] ] ] ] ] ********** FIELD(#ACFUDT) TO(*DATE)         
123     ] ] ] ] ] ********** FIELDS(#HEADER) IN_FILE(ACPO)   
124     ] ] ] ] ] **********            
125     ] ] ] ]  -ENDIF                                 
126     ] ] ] ] CHANGE     FIELD(#CHG\DET) TO('N')      
127     ] ] ]  -ENDIF                                    
128     ] ]  -ENDIF                                      
129     ]  -ENDIF

论坛徽章:
0
7 [报告]
发表于 2005-03-25 11:15 |只看该作者

程序运行出错(某些记录更新时出错)

呵呵,没想到,你也是用LANSA。
仔细瞧瞧

UPDATE     FIELDS(#HEADER) IN_FILE(ACPO)  
这句不带KEY?

你是想更新ACPO的所有记录?

一般情况下,UPDATE时,首先要定位到你想更新的记录上。
比如UPDATE之前先FETCH一下,如果找到执行UPDATE。
要么,UPDATE时带上KEY值,也可以更新。

论坛徽章:
0
8 [报告]
发表于 2005-03-26 10:51 |只看该作者

程序运行出错(某些记录更新时出错)

删除掉这一句就可以了  
EXCHANGE   FIELDS(#T\CP #ACFIT)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP