如何解决VFP中的1184错误?

GEORGECHIN1 2015-01-02 03:24:38
设计时,在一个COMMBO的事件中如量出出错误,试运行时就无法启动设计模式,非得退出VFP才可以,非常麻烦,该如何处理呢?VFP给出的错误信息如下:

File cannot be closed because outstanding references exist (Error 1184)
...全文
133 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
都市夜猫 2015-01-06
  • 打赏
  • 举报
回复
public 变量不像 local 变量或表单属性,它没有自动销毁机制,local 变量在退出方法,函数,过程时会自动释放。表单属性在表单被关闭时也会自动销毁 另一个重要的原因,是出于良好的编程习惯,在团队合作开发中,你无法保证其他人不会使用同样名称的 public 变量,这样一来变量会被意外修改,在 vfp 中,不但是值可能改变,变量类型也可以改变,导致隐形故障,特别是在两个模块一般不会同时运行时,通常测试人员是分模块测试的。
GEORGECHIN1 2015-01-06
  • 打赏
  • 举报
回复
引用 3 楼 dkfdtf 的回复:
1. 报错后在命令窗口执行一或多次 clear all 再试试编辑表单 2. 不建议用 public,用 additem 加载,或者将数组作为表单属性:
If SN_AAA<=0  &&没有匹配的记录
    This.RowSource = ""
    This.Requery
Else
    AddProperty(Thisform, 'SAL40001_KFDM[1,2]')
    Dimension Thisform.SAL40001_KFDM[SN_AAA,2]
    For BBB=1 To SN_AAA
        Thisform.SAL40001_KFDM(BBB,1)=Alltrim(客户代码)
        Thisform.SAL40001_KFDM(BBB,2)=Alltrim(简称)
        Skip
    Endfor
    This.RowSourceType=5
    This.RowSource="Thisform.SAL40001_KFDM"
    This.Requery
    ...
谢谢,虽然会清除所有的内存变量,但问题基本上已经解决了。 建议不用PUBLIC是出于节省运行时的内存还是有其它的原因呢?
都市夜猫 2015-01-04
  • 打赏
  • 举报
回复
1. 报错后在命令窗口执行一或多次 clear all 再试试编辑表单
2. 不建议用 public,用 additem 加载,或者将数组作为表单属性:
If SN_AAA<=0  &&没有匹配的记录
This.RowSource = ""
This.Requery
Else
AddProperty(Thisform, 'SAL40001_KFDM[1,2]')
Dimension Thisform.SAL40001_KFDM[SN_AAA,2]
For BBB=1 To SN_AAA
Thisform.SAL40001_KFDM(BBB,1)=Alltrim(客户代码)
Thisform.SAL40001_KFDM(BBB,2)=Alltrim(简称)
Skip
Endfor
This.RowSourceType=5
This.RowSource="Thisform.SAL40001_KFDM"
This.Requery
...
GEORGECHIN1 2015-01-02
  • 打赏
  • 举报
回复
引用 1 楼 apple_8180 的回复:
应该是有设计不合理的地方,如表单存在外部引用,而你去关闭了它。
谢谢版主! 是有错误,也知道错误在哪,比如在COMBO1.INTERACTIVATECHANGE中有如下的代码: IF SN_AAA<=0 &&没有匹配的记录 THIS.ROWSOURCE="" THIS.REQUERY ELSE RELEASE SAL40001_KFDM PUBLIC SAL40001_KFDM(SN_AAA,1) FOR BBB=1 TO SN_AAA SAL40001_KFDM(BBB,1)=ALLTRIM(客户代码) SAL40001_KFDM(BBB,2)=ALLTRIM(简称) &&很明显这里会报错 SKIP ENDF THIS.RowSourceType=5 THIS.ROWSOURCE="SAL40001_KFDM" THIS.Requery 这时程序会报错,但报错后就不能对其表单进行再行编辑,试图编辑时VFP就弹出如上的对话框,除非退出VFP。就如事务处理时,如果少了END END TRANSACTION 就关不了数据表,但在命令窗口加上这一句就可以了,但这个不知该如何处理。
十豆三 2015-01-02
  • 打赏
  • 举报
回复
应该是有设计不合理的地方,如表单存在外部引用,而你去关闭了它。

2,723

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧