注册 登录
编程论坛 VFP论坛

小白练手,求指导!

heibaochen 发布于 2023-12-31 12:20, 460 次点击
问题描述
1、打开程序,直接在“点名器”页面随机点名登记成绩,正常,切换到“阅读器”中,选择班级查看数据,也正常,但切回“点名器”对任意班级点名时,则报错:“文件正在使用!”,然后强制退出。
2、打开程序,直接在“点名器”页面随机点名登记成绩,正常,切换到“管理器”中,选择任意班级在列表里显示班级数据,不做其他操作,切回“点名器”对任意班级点名时,则报错:“文件正在使用!”,然后强制退出。
3、如果打开程序后不点名,直接到“阅读器”查看班级数据,则只要在“点名器”中对未在“阅读器”中查看过数据的班级能正常点名,但一旦被查看过数据了,则无法再进行点名,报错:“文件正在使用!”,然后强制退出。此情况,在“管理器”中也是一样。

项目文件如下,望各位不吝指导,拜谢!

只有本站会员才能查看附件,请 登录
12 回复
#2
sdta2023-12-31 12:36
应该是表未关闭造成的
#3
heibaochen2023-12-31 12:48
回复 2楼 sdta
我大概知道跟表或工作区有关,但我试过在切换页面时关闭表,好像也解决不了问题。
帮忙看看项目文件吧,黔驴技穷了!
#4
nbwww2023-12-31 18:11
把 USE (fname)   改为  SELECT  * FROM (fname) into CURSOR temp1   
#5
heibaochen2023-12-31 20:44
回复 4楼 nbwww
非常感谢,问题解决了,在阅读器和管理器中知道用游标数据库,到这里只想着表和工作区的事了,竟然忘了用游标数据库,多谢多谢!

顺便请教几个问题:
1、表单的数据环境中的数据库表随表单的打开关闭则打开关闭,它们在几号工作区呢?
2、表单控件的数据源如果是在程序中指定的游标数据库,这个游标是自动打开吗,能修改它吗,如何关闭它?
3、本例中“管理器”中列表框的数据源是某数据表的某个字段,当删除或修改某记录的字段值时,它对应的字段值在列表框中如何同步更新刷新(删除或修改)。

再次感谢!
#6
laowan0012023-12-31 21:17
以下是引用heibaochen在2023-12-31 20:44:59的发言:

1、表单的数据环境中的数据库表随表单的打开关闭则打开关闭,它们在几号工作区呢?


只回答第1个问题:系统会在下一个空闲工作区打开一个表(相当于:use temp1 in 0)
需要切换到指定表的工作区时:select temp1    就行了
我从来不知道我的那些表在几号工作区
#7
heibaochen2024-01-01 11:32
回复 6楼 laowan001
版主您好,当提示“文件正在使用”时,有什么办法能知道它在哪里被打开使用了?
#8
heibaochen2024-01-01 11:42
回复 4楼 nbwww
您好,现在发现一个问题,但凡涉及到写数据表时,用 use (fname) 就会报“文件正在使用”,比如:点名里写入成绩时,管理器里需要添加班级或删除学生记录时。如果有时间,麻烦您再给看一下,多谢多谢。
#9
nbwww2024-01-01 19:42
以下是引用heibaochen在2024-1-1 11:42:53的发言:

您好,现在发现一个问题,但凡涉及到写数据表时,用 use (fname) 就会报“文件正在使用”,比如:点名里写入成绩时,管理器里需要添加班级或删除学生记录时。如果有时间,麻烦您再给看一下,多谢多谢。


那是不是要查上次打开有没有关闭,或者SELECE 表名
#10
laowan0012024-01-01 20:08
以下是引用heibaochen在2024-1-1 11:32:50的发言:

版主您好,当提示“文件正在使用”时,有什么办法能知道它在哪里被打开使用了?


假设打开的文件名是:temp
messagebox(SELECT('temp'))    && SELECT('temp')返回工作区的号,比如 2

其实:select temp 就可以直接转到这个表的工作区了



[此贴子已经被作者于2024-1-1 20:09编辑过]

#11
laowan0012024-01-01 20:13
以下是引用heibaochen在2024-1-1 11:42:53的发言:

您好,现在发现一个问题,但凡涉及到写数据表时,用 use (fname) 就会报“文件正在使用”,比如:点名里写入成绩时,管理器里需要添加班级或删除学生记录时。如果有时间,麻烦您再给看一下,多谢多谢。


养成关闭表的习惯,不要每次都打开,如果中间的程序需要这个表一直开着,那就用  select 表名 来转到那个表的工作区就好,记得最后还是要关闭表,除非quit了
另外:use (fname) 建议改成  use (fname) in 0  ,这样不会造成打开一个表而误关闭另一个表
#12
hu9jj2024-01-02 07:02
这些问题在表的属性中只要将需要的表添加到数据源里就能解决,表的打开或关闭VFP平台会自动管理,用不着我们考虑,方便又省心。
#13
wengjl2024-01-02 08:15
建议使用表别名,需要用哪个表时,只选定别名就行,不用的及时 关闭!
1