| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 410 人关注过本帖
标题:如何关闭已打开的数据表
只看楼主 加入收藏
chychychy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:325
专家分:105
注 册:2015-4-18
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
如何关闭已打开的数据表
图片附件: 游客没有浏览图片的权限,请 登录注册

在表单中运行一段程序
点击红框1后,再点击红框2
THISFORM.Label2.CAPTION=" "
SET SAFE OFF
SELECT 0
fn1=GETFILE('DBF','打开报名库')
USE (fn1) ALIAS gkbmk
UPDA jian SET jian.axm=gkbmk.xm FROM gkbmk WHERE jian.sfzh=gkbmk.sfzh    &&&&按sfzh导入姓名axm
UPDA jian SET jian.aksh=gkbmk.ksh FROM gkbmk WHERE jian.sfzh=gkbmk.sfzh  &&&&按sfzh导入考生号aksh
SELECT jian
REPLACE ALL j3 WITH  '姓名不一致' FOR xm<>axm
REPLACE ALL j4 WITH  '考生号无法导入' FOR aksh=' '
COUNT FOR j1<>' ' OR j2<>"  " OR j3<>" "OR j4<>" "OR j5<>" " TO nn3
THISFORM.Label2.CAPTION="检查各类错误数: "+ALLTRIM(STR(nn3))+" 人"
IF nn3<1
    RETURN
ELSE
    ask=MESSAGEBOX('是否浏览并导出',1+32+0,'返回')
    IF ask=1
        BROWSE FOR j1<>' ' OR j2<>"  " OR j3<>" "OR j4<>" "OR j5<>" "
        wjm="导出4检查出各类错误数-"+TRANSFORM(nn3)+"条数据"
        COPY TO &wjm FOR  j1<>' ' OR j2<>"  " OR j3<>" "OR j4<>" "OR j5<>" "
        COPY TO &wjm FOR  j1<>' ' OR j2<>"  " OR j3<>" "OR j4<>" "OR j5<>" " TYPE XL5
    ELSE
        RETURN
    ENDIF
ENDIF

if used (fn1)
   use in (fn1)
endif
没起到关闭数据的作用,用sele gkbmk;use gkbmk也不可以
在不退出这个表单程序的情况下再次运行红框2,总是弹窗提示“文件正在使用”,卡在fn1=GETFILE('DBF','打开报名库')处,如果放在SELECT 0的前面,则提示文件不存在,问题出在哪里了?

[此贴子已经被作者于2024-6-11 20:12编辑过]

搜索更多相关主题的帖子: 关闭 数据表 导入 FOR 打开 
2024-06-11 20:01
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:10 
sele gkbmk
use

use in "gkbmk"
2024-06-11 21:15
chychychy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:325
专家分:105
注 册:2015-4-18
收藏
得分:0 
回复 2楼 吹水佬
两句都测试还是提示“文件正在使用”
图片附件: 游客没有浏览图片的权限,请 登录注册
2024-06-11 21:27
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:0 

先用used()检测一下再分别处理
2024-06-11 21:43
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:66
帖 子:1094
专家分:2693
注 册:2015-12-30
收藏
得分:10 
回复 楼主 chychychy
IF nn3<1
    RETURN
ELSE
    ask=MESSAGEBOX('是否浏览并导出',1+32+0,'返回')
    IF ask=1
        ...
    ELSE
        RETURN
    ENDIF
ENDIF

if used (fn1)
   use in (fn1)
endif

这两个RETURN直接就跑了,打开的表也不管了,下次回来肯定说是“文件正在使用”啊
要养成谁打开的表谁关闭的习惯,就不会出现这种情况了

2024-06-11 22:13
chychychy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:325
专家分:105
注 册:2015-4-18
收藏
得分:0 
回复 4楼 吹水佬
方框2按钮中的命令改成下列内容测试
程序代码:
THISFORM.Label2.CAPTION=" "
Select 0
fn1=Getfile('DBF','打开报名库')
Use (fn1) Alias gkbmk
*Browse

*?Used(gkmbk)

If Used("gkbmk") && 测试是否用gkbmk别名打开表
    Select gkbmk && 选择以gkbmk别名打开表的工作区
    ?Alias() &&返回当前工作区的别名,结果为gkbmk
    *BROWSE 
    THISFORM.Label2.CAPTION=" 关闭了"
    *List && 显示xs.dbf表内容
ENDIF
SELECT gkbmk
USE


If Used("gkbmk") && 测试是否用gkbmk别名打开表
    Select gkbmk && 选择以gkbmk别名打开表的工作区
    ?Alias() &&返回当前工作区的别名,结果为gkbmk
    THISFORM.Label2.CAPTION=" 打开了"
    *List && 显示xs.dbf表内容
ENDIF

这样测试标签只显示“打开了几个字”,也能反复运行方框2按钮。但是用原来的还是错误提示

[此贴子已经被作者于2024-6-12 07:45编辑过]

2024-06-11 22:36
chychychy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:325
专家分:105
注 册:2015-4-18
收藏
得分:0 
回复 5楼 laowan001
谢谢,原来如此,调整语句SELECT gkbmk;use这两句位置,问题解决了。
程序代码:
CLEAR 
THISFORM.Label2.CAPTION=" "
SET SAFE OFF

SELECT 0
fn1=GETFILE('DBF','打开报名库')
USE (fn1) ALIAS gkbmk
UPDA jian SET jian.axm=gkbmk.xm FROM gkbmk WHERE jian.sfzh=gkbmk.sfzh    &&&&按sfzh导入姓名axm
UPDA jian SET jian.aksh=gkbmk.ksh FROM gkbmk WHERE jian.sfzh=gkbmk.sfzh  &&&&按sfzh导入考生号aksh

SELECT gkbmk&&&关闭打开的报名库方便下一次导入数据,否则提示文件已打开
&&&要养成谁打开的表谁关闭的习惯,就不会出现这种情况了,之前错误是因为下面有两个RETURN直接就跑了,打开的表也不管了,下次回来肯定说是“文件正在使用”啊
USE 

SELECT jian
REPLACE ALL j3 WITH  '姓名不一致' FOR xm<>axm
REPLACE ALL j4 WITH  '考生号无法导入' FOR aksh=' '
&&&REPLACE ALL j5 WITH  '性别不一致' FOR xb<>axb
COUNT FOR j1<>' ' OR j2<>"  " OR j3<>" "OR j4<>" "OR j5<>" " TO nn3
THISFORM.Label2.CAPTION="检查各类错误数: "+ALLTRIM(STR(nn3))+" 人"

IF nn3<1
    RETURN
ELSE
    ask=MESSAGEBOX('是否浏览并导出',1+32+0,'返回')
    IF ask=1
        BROWSE FOR j1<>' ' OR j2<>"  " OR j3<>" "OR j4<>" "OR j5<>" "
        wjm="导出4检查出各类错误数-"+TRANSFORM(nn3)+"条数据"
        COPY TO &wjm FOR  j1<>' ' OR j2<>"  " OR j3<>" "OR j4<>" "OR j5<>" "
        COPY TO &wjm FOR  j1<>' ' OR j2<>"  " OR j3<>" "OR j4<>" "OR j5<>" " TYPE XL5
    ELSE
        RETURN
    ENDIF
ENDIF


再请教一下
那这两句return应该如何表达,才不出现这样错误



[此贴子已经被作者于2024-6-12 14:30编辑过]

2024-06-11 22:37
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:66
帖 子:1094
专家分:2693
注 册:2015-12-30
收藏
得分:0 
以下是引用chychychy在2024-6-11 22:37:28的发言:
那这两句return应该如何表达,才不出现这样错误

return之前把该关闭的文件都关了就行
2024-06-12 10:52
chychychy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:325
专家分:105
注 册:2015-4-18
收藏
得分:0 
回复 8楼 laowan001
好的,谢谢
2024-06-12 14:30
快速回复:如何关闭已打开的数据表
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031239 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved