求助,VFP表单程序试运行没问题,连编后老报错,求助大家
写了一个小程序,想结合表单编成exe,在VFP中试运行没问题,但是运行连编后的exe就会在一个判断数据表某个字段是否没有非空记录的地方出错,显示我预置的信息(但是预留数据完全不会报错,试运行也能过)。报错后exe还会报“文件正在使用”的错误,无法正常退出。
我的主程序:
ON KEY LABEL ALT+F4 DO quit_program
ON SHUTDOWN DO quit_program
SET SAFETY OFF
SET TALK ON
DO FORM D:\Desktop\活动排序\活动排序界面.scx
READ EVENTS
PROCEDURE quit_program
RELEASE ALL
CLOSE ALL
CLEAR EVENTS
CLEAR ALL
DELETE FILE *.bak
DELETE FILE *.dbf
QUIT
ENDPROC
表单按钮点击代码:
sjk = thisform.名单地址.Value
IF NOT FILE(sjk)
MESSAGEBOX("请先填写或选择正确名单地址!")
CANCEL
ENDIF
wenti_gm = thisform.规模.Value
IF INT(wenti_gm)<>wenti_gm OR wenti_gm>99 OR wenti_gm<3
MESSAGEBOX("请先填写正确的活动规模,3~99间的整数!")
CANCEL
ENDIF
IF thisform.方法选择.枚举.Value = 1
my_method = 1
ELSE
my_method = 2
ENDIF
IF my_method == 1 AND wenti_gm>7
MESSAGEBOX("活动数量较多,请选择精确计算以保证效率!")
CANCEL
ENDIF
DO D:\Desktop\活动排序\测算主程序.prg WITH sjk,wenti_gm,my_method
测算主程序代码片段:
PARAMETERS sjk,wenti_gm,my_method
PUBLIC ARRAY cnt_arr4(1,1), cnt_arr5(1,1),ku_chk(1,1)
CREATE TABLE 活动排序.dbf ;
( 活动01 c(50))
FOR i = 2 TO wenti_gm
field_name = "活动"+RIGHT("0"+ALLTRIM(STR(i)),2)
ALTER table 活动排序 ADD &field_name c(50)
ENDFOR
SELECT 活动排序
APPEND FROM &sjk TYPE CSV
MESSAGEBOX("导入完成!")
**创建相邻两个活动的组合库,并计算两个活动的人次变动数
CLOSE DATABASES
USE 活动排序.dbf ALIAS a IN 1
field_num = AFIELDS(field_arr,"A")
FOR i = 1 TO field_num
field_name = FIELD(i)
SELECT COUNT(*) FROM a WHERE ALLTRIM(&field_name)<>"" INTO ARRAY ku_chk
IF ku_chk(1,1) = 0
CLOSE DATABASES ALL
MESSAGEBOX(field_name+" 没有参与人员不合规,请检查提供名单是否合规!!") &&连编的exe到这里就会出错,无论给的原始数据是什么样
CANCEL
ENDIF
ENDFOR
…………
烦请大家看看问题出在什么地方