| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4037 人关注过本帖
标题:prg内容太多报错
只看楼主 加入收藏
schtg
Rank: 12Rank: 12Rank: 12
来 自:Usa
等 级:贵宾
威 望:67
帖 子:1738
专家分:3329
注 册:2012-2-29
收藏
得分:4 
直接将 IF FILE("&_rb")=.F.  改为 IF FILE(_rb)=.F. 测试一下,看一看结果。
2017-09-30 19:02
yewxj
Rank: 3Rank: 3
等 级:论坛游侠
威 望:5
帖 子:157
专家分:153
注 册:2015-6-18
收藏
得分:0 
回复 11楼 schtg
IF FILE("&_rb")=.F.  改为 IF FILE(_rb)=.F. 以后,这里就正常了,
但后面的程序有很多类似下面这样的内容,如果不修改,仍然报错,
_a="aaaa"
?"ccc &_a ccc"
改成下面内容后才不报错,
_a="aaaa"
?"ccc "+_a+" ccc"
程序里面没有&后,可以正常运行。
只是很奇怪,为什么程序大了以后,使用&会报错。

[此贴子已经被作者于2017-10-2 17:25编辑过]

2017-10-02 17:23
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
会报错?
提示的错误信息是什么?

2017-10-02 19:22
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
以下是引用yewxj在2017-10-2 17:23:39的发言:

IF FILE("&_rb")=.F.  改为 IF FILE(_rb)=.F. 以后,这里就正常了,
但后面的程序有很多类似下面这样的内容,如果不修改,仍然报错,
_a="aaaa"
?"ccc &_a ccc"
改成下面内容后才不报错,
_a="aaaa"
?"ccc "+_a+" ccc"
程序里面没有&后,可以正常运行。
只是很奇怪,为什么程序大了以后,使用&会报错。

这与程序大小无关,是宏替换的规律尚未完全了解。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2017-10-03 05:37
yewxj
Rank: 3Rank: 3
等 级:论坛游侠
威 望:5
帖 子:157
专家分:153
注 册:2015-6-18
收藏
得分:0 
1、2都报错如图,3正常
图片附件: 游客没有浏览图片的权限,请 登录注册
2017-10-08 09:30
wangzhiyi
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:366
专家分:684
注 册:2014-4-9
收藏
得分:0 
不知道是什么原因,我把其中一组单独作为程序运行不报错。单从程序中的语句分析应该没有语法错误。
SET TALK OFF
CLOSE ALL
_rq= val(dtos(date()-1))
_yyyy=LEFT(ALLTRIM(STR(_rq)),4)
_yyyymm=LEFT(ALLTRIM(STR(_rq)),6)
_yyyymmdd=LEFT(ALLTRIM(STR(_rq)),8)
_mmdd=SUBSTR(allt(str(_rq)),5,4)
*************************------------------------*************************
*************************------检查日报文件------*************************
*************************------------------------*************************
USE yyb ALIAS yyb IN 0
_rb=_yyyy+"_日报.dbf"
IF !FILE("&_rb")   &&如果日报文件不存在,则新建日报文件
  CREATE DBF &_rb (品种 C(10),成交量 N(20,2),日期 N(8),项目 C(30),d_分公司 C(30),m_分公司 C(30),y_分公司 C(30))
  USE
ENDIF
USE &_rb ALIAS rb IN 0
SELECT yyb
FOR _i=1 TO RECCOUNT()  &&日报文件与yyb.dbf对比,如缺少营业部字段,则添加
  GOTO _i
  SELECT rb
  IF FSIZE("d_"+ALLTRIM(yyb->brhid))=0
    ALTER TABLE rb ADD ("d_"+ALLTRIM(yyb->brhid)) C(30)
    ALTER TABLE rb ADD ("m_"+ALLTRIM(yyb->brhid)) C(30)
    ALTER TABLE rb ADD ("y_"+ALLTRIM(yyb->brhid)) C(30)
  ENDIF
  SELECT yyb
ENDFOR
***************
*************************------------------------*************************
*************************------检查日报文件------*************************
*************************------------------------*************************
RETURN

[此贴子已经被作者于2017-10-9 14:58编辑过]

2017-10-09 10:59
wangzhiyi
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:366
专家分:684
注 册:2014-4-9
收藏
得分:0 
首先,楼主的&代换问题可以解决。把IF FILE("&_rb")=.f.   &&如果日报文件不存在,则新建日报文件改为
IF FILE([_rb])=.f.   &&如果日报文件不存在,则新建日报文件就可以了,只是楼主的程序N多个地方没有打开这个新建的日报文件。
还有一点是看不懂楼主为什么要反复的创建这个日报文件。
2017-10-09 15:01
yewxj
Rank: 3Rank: 3
等 级:论坛游侠
威 望:5
帖 子:157
专家分:153
注 册:2015-6-18
收藏
得分:0 
回复 17楼 wangzhiyi
后面的程序需要连接SQL服务器才能运行,所以我上传的只是用来做测试用的
2017-10-10 16:50
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:658
专家分:2180
注 册:2014-2-7
收藏
得分:0 
从本质上看,楼主的问题是一个宏替换如何使用的问题。请看下面的几个例子:

_rb = "2017_日报.dbf"
if file("&_rb") = .f.    && 语句1
    ? "ok1"
endif
if !file("&_rb")    && 语句2
    ? "ok2"
endif
if !file(_rb)       && 语句3
    ? "ok3"
endif
if !file((_rb))     && 语句4
    ? "ok4"
endif

上面的代码中,只有“语句3”和“语句4”可以正常运行。在FILE()函数中不支持宏替换,这可能是 VFP 的一个 Bug。
若变量 _rb 中含有带空格的文件夹名,如:_rb = "c:\my file\2017_日报.dbf",则最好使用“语句4”格式,也就是用名称表达式代替宏替换。我在64位WIN7+VFP9 SP2 下,使用“语句3”也可以测试通过,但在其他系统下可能有问题,还未测试。

泉城飞狐
2017-10-19 16:54
yewxj
Rank: 3Rank: 3
等 级:论坛游侠
威 望:5
帖 子:157
专家分:153
注 册:2015-6-18
收藏
得分:0 
谢谢老师!
2017-10-19 22:10
快速回复:prg内容太多报错
数据加载中...
 
   



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

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