| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4215 人关注过本帖
标题:能否将vfp中表的数据按显示->编辑的样式导出来
只看楼主 加入收藏
whinda
Rank: 6Rank: 6
等 级:贵宾
威 望:13
帖 子:253
专家分:418
注 册:2012-2-4
收藏
得分:0 
前提是所有字段均是字符型,不是的话加入转换函数。
2016-03-14 22:13
阿狸bccn
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-8-20
收藏
得分:0 
再想请教各位一个问题,用数据库连接的方式与用程序一行行字段插入的方式来看,即上述用union的方式与用其他非数据库连接的方式的出来的结果中,在数据量逐渐增大的情况下,哪种方式运行的速度比较快?
2016-03-15 09:04
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9796
专家分:26886
注 册:2012-2-5
收藏
得分:0 
吹版的效率高

坚守VFP最后的阵地
2016-03-15 09:20
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
当只有 1W 条记录时,差别不大,差别约 2 秒。
当有 10W 条记录时,差别开始明显,一个耗时约 29秒,另一个约 5秒。

Clear
Close Databases
*!*    测试一:29s
Create Cursor Test1 (Id Int Autoinc, Name C(10), XingBie C(2), PhoneNum C(5))
For I = 1 To 100000
    Insert Into Test1 (Name, XingBie, PhoneNum) Values(Sys(2015), Iif(Int(I/2) = I/2, '男', '女'), Sys(3))
Endfor

t1 = Seconds( )
Select Id, Field(1) + ':' As 字段A, (Select Padl(Id, 10, " ")       As 字段B From Test1 Where Id = A.Id) From Test1 As A ;
    Union ;
Select Id, Field(2) + ':' As 字段A, (Select Name                    As 字段B From Test1 Where Id = A.Id) From Test1 As A ;
    Union ;
Select Id, Field(3) + ':' As 字段A, (Select XingBie                 As 字段B From Test1 Where Id = A.Id) From Test1 As A ;
    Union ;
Select Id, Field(4) + ':' As 字段A, (Select Padl(PhoneNum, 10, " ") As 字段B From Test1 Where Id = A.Id) From Test1 As A ;
    Into Cursor Query

Select 字段A, 字段B From Query Into Cursor Query
Browse Last Nowait
? Transform(Seconds( ) - T1) + '秒'
Messagebox(Transform(Seconds( ) - T1) + '秒')

*!*    Return


*!*    测试二:5s
Create Cursor Test1 (Id Int Autoinc, Name C(10), XingBie C(2), PhoneNum C(5))
For I = 1 To 100000
    Insert Into Test1 (Name, XingBie, PhoneNum) Values(Sys(2015), Iif(Int(I/2) = I/2, '男', '女'), Sys(3))
EndFor

t1 = Seconds( )
Create Cursor tt (S1 C(10), S2 C(10))
Select Test1
Scan
    For i = 1 To Fcount()
        ss1 = Field(i)
        ss2 = Transform(Evaluate(ss1))
        Insert Into tt Values (ss1, ss2)
    Endfor
Endscan
Select tt
Go Top
Browse Last Nowait
? Transform(Seconds( ) - T1) + '秒'
Messagebox(Transform(Seconds( ) - T1) + '秒')




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


民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-03-15 10:53
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10537
专家分:42927
注 册:2014-5-20
收藏
得分:0 
表操作的效率主要看遍历表次数。
一个 Select ... From 至少有一个“表”,而且每个 Select 至少要遍历“表”一次,多个 Select “嵌套”就可想而知。
2016-03-15 13:54
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
其实楼主的问题不是很难,这里至少 90(+)% 的人会做,有人跟帖说用 SQL 语句做难度大,所以引出了多重连接的 SQL 算法。
这里的 SQL 语句复杂,效率低,不通用,纯粹是玩弄技巧,或者是一题多解,作为 SQL 语法的练手。

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-03-15 14:31
快速回复:能否将vfp中表的数据按显示->编辑的样式导出来
数据加载中...
 
   



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

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