注册 登录
编程论坛 VFP论坛

别名已被使用

sarge_xp 发布于 2021-07-16 08:30, 2114 次点击
***********
CREATE CURSOR TEM(编号 C(10),发生量 C(10))
APPEND BLANK
REPLACE TEM.编号 WITH "003",TEM.发生量 WITH "69"
ALTER TABLE TEM ADD 单价 F(12,2)

UPDATE TEM SET 单价=VAL(发生量)

SELECT 单价,编号 FROM TEM INTO CURSOR ABC READWRITE

SELECT DISTINC 编号 FROM ABC INTO CURSOR TEM READWRITE        &&出错:别名已被使用

***********

运行最后一句出错:别名已被使用,是什么原因呢 ?
只有本站会员才能查看附件,请 登录


9 回复
#2
sdta2021-07-16 09:42
那就不要用这个别名
#3
sarge_xp2021-07-16 10:03
回复 2楼 sdta
select-sql 好象每次都重建个数据库,不管之前是否存在
#4
wengjl2021-07-16 10:07
以下是引用sarge_xp在2021-7-16 08:30:13的发言:

***********
CREATE CURSOR TEM(编号 C(10),发生量 C(10))
APPEND BLANK
REPLACE TEM.编号 WITH "003",TEM.发生量 WITH "69"
ALTER TABLE TEM ADD 单价 F(12,2)

UPDATE TEM SET 单价=VAL(发生量)

SELECT 单价,编号 FROM TEM INTO CURSOR ABC READWRITE

SELECT DISTINC 编号 FROM ABC INTO CURSOR TEM READWRITE        &&出错:别名已被使用

***********

运行最后一句出错:别名已被使用,是什么原因呢 ?


关键是你对VFP的处事原则不清,一个表打开,就占一个工作区,一个工作区中打开的表就有一个名称,这个名称叫别名,默认同表的名称,也可以被你指定为某个名称。

你前面的语句中 打开了表 TEM ,即有一个工作区中的表别名为 TEM 。 前面没有关闭过,所以你最后一句 又用 TEM 就出错了。换一个就没事了



#5
wengjl2021-07-16 10:10
你只要在最后出错一句前加上
sele tem
use
最后一句就不会出错了,但先前的TEM会被覆盖掉的
#6
sarge_xp2021-07-16 11:09
回复 5楼 wengjl
临时表的关闭等于删除
#7
mywisdom882021-07-16 12:23
CREATE CURSOR TEM(编号 C(10),发生量 C(10))
APPEND BLANK
REPLACE TEM.编号 WITH "003",TEM.发生量 WITH "69"
ALTER TABLE TEM ADD 单价 F(12,2)

UPDATE TEM SET 单价=VAL(发生量)

SELECT 单价,编号 FROM TEM INTO CURSOR ABC READWRITE

SELECT DISTINC 编号 FROM ABC INTO CURSOR TEM READWRITE        &&出错:别名已被使用
*************
问题出现在
ALTER TABLE TEM ADD 单价 F(12,2)
改为
SELECT TEM.*,000000.00 as 单价 FROM TEM INTO CURSOR TEM READWRITE

[此贴子已经被作者于2021-7-16 12:32编辑过]

#8
mywisdom882021-07-16 12:35
CREATE CURSOR TEM(编号 C(10),发生量 C(10))
APPEND BLANK
REPLACE TEM.编号 WITH "003",TEM.发生量 WITH "69"
*!* ALTER TABLE TEM ADD 单价 F(12,2) && 问题出现在这里,改为
SELECT TEM.*,000000.00 as 单价 FROM TEM INTO CURSOR TEM READWRITE
UPDATE TEM SET 单价=VAL(发生量)
SELECT 单价,编号 FROM TEM INTO CURSOR ABC READWRITE
SELECT DISTINC 编号 FROM ABC INTO CURSOR TEM READWRITE
#9
mywisdom882021-07-16 12:42
VFP SQL可以这样做的
create cursor 表名称(字段 c(10))
select * from 表名称 into cursor 表名称
同样
create table d:\表名称(字段 c(10))
select * from 表名称 into table d:\表名称


#10
sarge_xp2021-07-16 20:45
回复 4楼 wengjl
CREATE CURSOR TEM(编号 C(10),发生量 C(10))
APPEND BLANK
REPLACE TEM.编号 WITH "003",TEM.发生量 WITH "69"
*

*UPDATE TEM SET 单价=VAL(发生量)

SELECT * FROM TEM INTO CURSOR ABC readwrite

SELECT DISTINC 编号 FROM ABC INTO CURSOR TEM READWRITE        &&出错:别名已被使用


**********************************

改成这样,通过了。之前的问题出现在 ALTER TABLE TEM ADD 单价 F(12,2) 这一句,为什么呢?
1