注册 登录
编程论坛 VFP论坛

update 语句调试不过

sarge_xp 发布于 2021-04-14 06:14, 2082 次点击
采集了学生的班级学号、体温数据后,逐条加入日期,采用update 是比较有效率的方法,但总调试不过,提示没法找到表,是什么原因呢 ? 用replace 没问题,但效率低。
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
11 回复
#2
sdta2021-04-14 07:12
试试
UPDATE Cj SET 日期 = thisform.text1.value WHERE EMPTY(日期)
#3
sarge_xp2021-04-14 10:37
回复 2楼 sdta
thisform.text1.value 卡在这
只有本站会员才能查看附件,请 登录


后面的没问题
#4
sdta2021-04-14 10:53
D1 = thisform.text1.value
UPDATE Cj SET 日期 = D1 WHERE EMPTY(日期)

Visual FoxPro 9.0 语言参考
UPDATE - SQL 命令
看下命令的用法
SET Column_Name1= eExpression1 [, Column_Name2 = eExpression2 ...]  *NEW VFP9-用法变化
指定要进行更新的表中的列及其新值。如果省略 WHERE 子句,表中的每一行都用相同的值更新。如果想在表达式中使用某个对象的属性,需要将属性赋值给一个内存变量,然后在表达式中使用这个变量。例如,您可以指定 x = oColField("iid").Value ,然后在您的 UPDATE - SQL 命令中使用 SET 子句 set iid = x 。如果在表达式中直接引用对象属性,如 objectname.property,命令将把其当作别名对待,并使命令失败。可以在 SET 子句包含一个子查询(subquery)来指定表达式。如果子查询(subquery)没有返回任何结果,则其返回 NULL 。有关子查询(subquery)的语法和信息,请参见 SELECT - SQL 命令 - FROM 子句。

[此贴子已经被作者于2021-4-14 10:56编辑过]

#5
zgr5262021-04-15 02:17
回复 楼主 sarge_xp
sj1=thisform.text1.value
upda cj set 日期=SJ1 FROM.....
#6
schtg2021-04-15 05:39
请试一试:
只有本站会员才能查看附件,请 登录
#7
laowan0012021-04-15 08:04
select 编号,体温 from tem into array abc
insert into cj from array abc
这两句可以合并成一句
insert into cj (编号,体温) select 编号,体温 from tem

关于update和replace,从效率上说没感觉有什么大的差异,也许数据量到一定规模会有差异
本人偏向使用replace,因为update后总会出现某条记录的值未更新,另外replace后记录号会变化,而update后记录号不变
#8
sarge_xp2021-04-15 09:19
回复 6楼 schtg
这样在句法上没问题的,在实际应用上,有时加入的数据不是当天的,就只能临时修改系统日期了,有时候修改完,数据转入后,会忘了将系统日期改回,造成不必要的麻烦。
#9
ycvf2021-04-15 09:19
以下是引用schtg在2021-4-15 05:39:43的发言:

请试一试:

楼主要的是逐条加入日期
#10
schtg2021-04-15 20:28
可用5楼的办法实现的,试一试。
只有本站会员才能查看附件,请 登录
#11
mywisdom882021-04-16 08:34
4楼都清楚告诉你了。
如果想在表达式中使用某个对象的属性,需要将属性赋值给一个内存变量,然后在表达式中使用这个变量
我一般不会出现这样的问题,因为我习惯这样做。

Visual FoxPro 9.0 语言参考
UPDATE - SQL 命令
看下命令的用法
SET Column_Name1= eExpression1 [, Column_Name2 = eExpression2 ...]  *NEW VFP9-用法变化
指定要进行更新的表中的列及其新值。如果省略 WHERE 子句,表中的每一行都用相同的值更新。如果想在表达式中使用某个对象的属性,需要将属性赋值给一个内存变量,然后在表达式中使用这个变量。例如,您可以指定 x = oColField("iid").Value ,然后在您的 UPDATE - SQL 命令中使用 SET 子句 set iid = x 。如果在表达式中直接引用对象属性,如 objectname.property,命令将把其当作别名对待,并使命令失败。可以在 SET 子句包含一个子查询(subquery)来指定表达式。如果子查询(subquery)没有返回任何结果,则其返回 NULL 。有关子查询(subquery)的语法和信息,请参见 SELECT - SQL 命令 - FROM 子句。
#12
sarge_xp2021-04-17 16:40
以下是引用sdta在2021-4-14 10:53:35的发言:

D1 = thisform.text1.value
UPDATE Cj SET 日期 = D1 WHERE EMPTY(日期)

Visual FoxPro 9.0 语言参考
UPDATE - SQL 命令
看下命令的用法
SET Column_Name1= eExpression1 [, Column_Name2 = eExpression2 ...]  *NEW VFP9-用法变化
指定要进行更新的表中的列及其新值。如果省略 WHERE 子句,表中的每一行都用相同的值更新。如果想在表达式中使用某个对象的属性,需要将属性赋值给一个内存变量,然后在表达式中使用这个变量。例如,您可以指定 x = oColField("iid").Value ,然后在您的 UPDATE - SQL 命令中使用 SET 子句 set iid = x 。如果在表达式中直接引用对象属性,如 objectname.property,命令将把其当作别名对待,并使命令失败。可以在 SET 子句包含一个子查询(subquery)来指定表达式。如果子查询(subquery)没有返回任何结果,则其返回 NULL 。有关子查询(subquery)的语法和信息,请参见 SELECT - SQL 命令 - FROM 子句。

方便给个例句吗 ?
1