注册 登录
编程论坛 VFP论坛

一个奇怪的问题

laowan001 发布于 2023-05-04 17:34, 223 次点击
一个程序,已经用了几年了,一直没问题,今天突然报错

临时表不能被修改,因为它包含了未保存的记录

出错语句:update a set a.字段1=b.字段1 FROM 表1 a,表2 b where a.id=b.id
表1和表2都是cursor,非只读,内容是正常的,字段没问题

这么多年,还是头回见到这个错误

请教各位,这是哪里出了问题?

[此贴子已经被作者于2023-5-4 17:38编辑过]

14 回复
#2
gs25367856782023-05-04 18:02
我从来就没有用过临时表
你修改成正式表一定能解决。
#3
吹水佬2023-05-04 18:10
表1或表2有无同时用在其他地方(如控件的数据源)
#4
吹水佬2023-05-04 18:13
或者试试先执行FLUSH,如:
FLUSH IN "表1"
FLUSH IN "表2"
#5
schtg2023-05-04 18:15
回复 楼主 laowan001
可能其他冲突所致吧
#6
laowan0012023-05-04 18:23
以下是引用吹水佬在2023-5-4 18:13:57的发言:

或者试试先执行FLUSH,如:
FLUSH IN "表1"
FLUSH IN "表2"


还是老样子
#7
laowan0012023-05-04 18:24
以下是引用吹水佬在2023-5-4 18:10:47的发言:

表1或表2有无同时用在其他地方(如控件的数据源)

表1是一个grid的数据源,表2是新生成的cursor
#8
sdta2023-05-04 18:38
同名临时表未关闭?
#9
laowan0012023-05-04 18:40
以下是引用sdta在2023-5-4 18:38:39的发言:

同名临时表未关闭?

cursor如果同名的话,会覆盖原来的内容
#10
laowan0012023-05-04 18:40
以下是引用schtg在2023-5-4 18:15:33的发言:

可能其他冲突所致吧

不清楚啊
#11
laowan0012023-05-04 18:43
以下是引用吹水佬在2023-5-4 18:10:47的发言:

表1或表2有无同时用在其他地方(如控件的数据源)

重新生成了cursor,暂时解除grid的数据源指定,现在没事了

但在没事之前,还出现另一句程序出现同样的错误,但后来又没事了

感谢吹版

但奇怪的是,一直都是这么用,很长时间了也没问题啊,怎么今天突然出现了
#12
laowan0012023-05-04 19:12
以下是引用gs2536785678在2023-5-4 18:02:50的发言:

我从来就没有用过临时表
你修改成正式表一定能解决。


我这个系统,5年多了,订单记录至今4802W条,对应的作业数据也是相同的量级,其他的表就不算了,客户端除了一个数据字典(300+记录)是正式表,其他全部都是临时表,正式数据全部在服务器上
#13
shizi02023-05-04 23:14
可能与临时表建索引、绑定的对象Grid允许insert之类有关系,总之,应该是你最近改了其他对象什么地方,但你没意识到跟临时表有关。
#14
laowan0012023-05-05 07:55
以下是引用shizi0在2023-5-4 23:14:19的发言:

可能与临时表建索引、绑定的对象Grid允许insert之类有关系,总之,应该是你最近改了其他对象什么地方,但你没意识到跟临时表有关。

感谢回复。
这个程序已经好久没动过了,天天都用,而且上午还在用,下午就出现问题了,挺怪的
#15
独木星空2023-05-05 08:29
你们讨论的很好,好久不来了,向各位版主及网友打声招呼,特别是laowan001,吹水佬,在程序上的帮助。
1