注册 登录
编程论坛 VFP论坛

为何宏替换生成临时文件提示语法错误

chychychy 发布于 2025-07-08 11:08, 157 次点击
只有本站会员才能查看附件,请 登录

程序代码:

SET SAFETY OFF
SELECT xxdm,xxmc FROM yssj GROUP BY 1,2 INTO CURSOR tmp &&&生成一临时文件过渡
SELECT tmp
SCAN
    wjm = ALLTRIM(xxdm) + ALLTRIM(xxmc)
    ?wjm
    **如导出excel文件
    SELECT * FROM yssj WHERE yssj.xxdm = tmp.xxdm INTO CURSOR (wjm)  &&&此句提示语法错误
    COPY TO (wjm) TYPE XL5  
    **如导出dbf文件可
    SELECT * FROM yssj WHERE yssj.xxdm = tmp.xxdm INTO DBF (wjm)
    SELECT tmp &&这句也可以省略
ENDSCAN

一是如果将INTO CURSOR (wjm) 改成INTO dbf (wjm) 就可以,为什么CURSOR不可以,dbf可以?
二是如果对wjm做如下修改,前面加个字符就可以,什么原因?难道因为xxdm是0开头的数字,cursor 临时文件不可以吗?求解释
SET SAFETY OFF
SELECT xxdm,xxmc FROM yssj GROUP BY 1,2 INTO CURSOR tmp &&&(wjm) &&&生成一临时文件过渡
SELECT tmp
SCAN
    cdm=ALLTRIM(tmp.xxdm)
    wjm ="N"+ALLTRIM(xxdm) + ALLTRIM(xxmc) &&前面加个字符就可以
    ?wjm
    SELECT * FROM yssj WHERE alltr(yssj.xxdm) =cdm INTO CURSOR  (wjm)
    COPY TO  (wjm) TYPE xl5
    SELECT tmp &&这句也可以省略
ENDSCAN

[此贴子已经被作者于2025-7-8 14:35编辑过]

6 回复
#2
sam_jiang2025-07-08 13:10
你xxdm是数字字符吧?
#3
chychychy2025-07-08 14:31
回复 2楼 sam_jiang
是的

#4
sam_jiang2025-07-08 17:10
回复 3楼 chychychy
vfp变量首字母不能是数字😂
#5
chychychy2025-07-08 18:31
回复 4楼 sam_jiang
谢谢解答,但是为什么程序运行中CURSOR不可以,dbf可以?
#6
sam_jiang2025-07-08 20:01
回复 5楼 chychychy
cursor的命名规则遵循vfp变量命名规则
#7
chychychy2025-07-09 08:13
回复 6楼 sam_jiang
谢谢!。原来如此,这样对的上了。
问了下DEEPSEEK,回答:
INTO CURSOR 的命名规则:
游标名必须是合法的VFP标识符:只能包含字母、数字、下划线,不能包含空格、汉字或其他特殊字符(如 !@#$%^&* 等)且不能以数字开头。

不能以数字开头是对的,但是DP回答中“不能包含汉字估计又是一本正经的胡说八道了。
1