| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7104 人关注过本帖
标题:说来惭愧还没用过TABLEUPDATE()来保存数据,请讨论
只看楼主 加入收藏
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
结帖率:98.98%
收藏
已结贴  问题点数:20 回复次数:22 
说来惭愧还没用过TABLEUPDATE()来保存数据,请讨论
说来惭愧还没用过TABLEUPDATE()来保存数据,请讨论?
1、TABLEUPDATE()来保存数据,比用UPDATE,REPL的好处是什么?坏处是什么?
2、比如有很多个数据要更新,如100个数据或者1000个数据时,用 SCAN...ENDSACN +UPDATE等循环形式更新?还是用TABLEUPDATE()来更新比较好?
比较好的意思是,更新的速度,表的操作性,锁记录,表的数据源是DBF或者SQL数据库。。


[此贴子已经被作者于2016-3-17 11:33编辑过]

搜索更多相关主题的帖子: 记录 数据源 操作性 SQL数据库 
2016-03-17 11:32
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你先看看这个函数是干什么的再考虑所问问题。

授人以渔,不授人以鱼。
2016-03-17 12:04
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
以下是引用TonyDeng在2016-3-17 12:04:18的发言:

你先看看这个函数是干什么的再考虑所问问题。

他不就是,保存试图,利于缓存保存记录的吗。。
我以前修改记录,都是用 UPDATE或者REPL等来修改保存的。
2016-03-17 12:25
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
那是让更改生效的动作,更改还是用原来的指令。

授人以渔,不授人以鱼。
2016-03-17 12:53
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
对带缓冲的数据库才用得上这个,它是把存在缓冲区的新数据批量实际刷新数据库的行为,不能取代你编辑数据的指令。

授人以渔,不授人以鱼。
2016-03-17 12:58
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
replace或update等都附带加解锁功能,但若是对多条记录锁定后编辑批量刷新,就用到这个指令。对数据的更改是单记录进行还是批量执行,由程序需求和设计决定,并不是用到这个就好或显得高级,其实在我看来这东西让共享处理更复杂难解。

授人以渔,不授人以鱼。
2016-03-17 13:04
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:658
专家分:2180
注 册:2014-2-7
收藏
得分:6 
1. 使用缓冲的好处是:当表单控件设置了ControlSource时,可以在修改控件的值后仍可以取消修改。
2. Tableupdate()是将缓冲中的数据实际保存到物理表,Tablerevert()是取消本次修改。
3. 在执行 Tableupdate()或Tablerevert()前,对表的修改仍使用 Append、Insert、Replace、Update、Delete命令对表进行修改,只不过修改仅保存在本地缓冲中,并没有立即生效而已。
4. 缓冲分行缓冲和表缓冲。若是行缓冲,则不能移动记录指针,否则会自动执行Tableupdate(),也就是说,行缓冲只能取消对当前记录的修改。而表缓冲可以取消对多行记录的修改,可以移动记录指针,必须发出Tableupdate()时才保存到磁盘。
5. 对于已设置缓冲的表来说,执行Append、Replace等命令时不锁定记录,而是在执行TableUpdate()时才锁定。
6. 实际使用时,仅在用户添加或修改记录时,才使用缓冲(也可以不使用)。在非维护界面一般不使用缓冲。

泉城飞狐
2016-03-17 13:33
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
回复 6楼 TonyDeng
谢谢!
我问个的本意:
我从SQL2000下载数据到本地,比如下载了1000条记录,我要在这1000条记录中输入某些数据,可能要输入10个字段左右。
我是用UPDATE命令1条条更新,还是用试图来更新?首先考虑的速度方面。
我以前是
select 本地表1
go top
i=1
nRecc=recc()
scan
wait window nowait "正在更新数据 "+tran(i)+"/"+tran(nRecc)
i=i+1
id=(本地表1.id)
zd1=allt(本地表1.字段1)
zd2=allt(本地表1.字段2)
zd3=allt(本地表1.字段3)
zd4=allt(本地表1.字段4)
zd5=allt(本地表1.字段5)
sqlexec(nHandle,'update sql表1 set 字段1=?zd1,字段2=?zd2,字段3=?zd3,字段4=?zd4,字段5=?zd5 where id=?id')
endscan
2016-03-17 13:39
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:658
专家分:2180
注 册:2014-2-7
收藏
得分:0 
是“视图”,不是“试图”。
采用 SPT 方式将本地记录写入 SQL Server,只能是一条条写入,无法批量写入。
即使使用视图,在系统内部也是逐条写入的,在效率上不会有明显区别。

泉城飞狐
2016-03-17 13:51
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 8楼 mywisdom88
你这里下载是什么概念?

授人以渔,不授人以鱼。
2016-03-17 14:26
快速回复:说来惭愧还没用过TABLEUPDATE()来保存数据,请讨论
数据加载中...
 
   



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

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