| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1709 人关注过本帖
标题:请教VFP能接受的内存问题
只看楼主 加入收藏
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
我算的结果都是重复? 按13行8列为一块算,是否这样算的?
程序代码:
USE 有无重复检验记录表 ALIAS 有无重复检验记录表 IN 0
ZAP
USE 原表 ALIAS 原表 IN 0
SELECT 原表
GO 2 
i = 0
DO WHILE !EOF("原表")
    DIMENSION a原表[13, 8]
    COPY TO ARRAY a原表 FIELDS LIKE* NEXT 14
    IF !EOF("原表")
        SKIP IN "原表"
    ENDIF
    i = i + 1
    DIMENSION a原表[104]
    ASORT(a原表)
    bl = .T.
    dd = 0
    FOR EACH ad IN a原表
        IF ad == dd
            *? dd,ad,"运行记录号", i, "已有重复,作废"
            bl = .F.
            EXIT
        ELSE
            dd = ad
        ENDIF
    ENDFOR
    
    IF bl
        ? "运行记录号", i, "无重复"
    ENDIF
ENDDO
CLOSE DATABASES ALL
RETURN
2015-03-07 10:45
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:10 
程序代码:
Clear 
Clear All 
Create Cursor Tt1 (记录行 i,值 i)
t1=Seconds()
Select * from (Select 列1,列2,列3,列4,列5,列6,列7,列8,Ceiling(Recno()/14) 记录号,Iif(Mod(Recno(),14)=0,14,Mod(Recno(),14)) 行号 from 原表) a1 where Between(a1.行号,2,12) into cursor temp
Scan
    Scatter Fields Like* To azd
    For lnI=1 To Fcount("temp")-2
        Insert Into tt1 Values (temp.记录号,azd[lnI])
    EndFor 
EndScan 
Select 记录行,Iif(nmax>1,"重复",Space(4)) 结果 from (Select 记录行,Max(ncnt) nmax from (select 记录行,值,Count(*) ncnt from tt1 group by 1,2) A1 group by 1) A2 into cursor temp1
MessageBox(Transform(Seconds()-t1))
browse

坚守VFP最后的阵地
2015-03-07 14:24
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:10 
看了楼主的代码:
FOR P=1 TO HS/14
    SELECT 3
    USE 原表
    Go (P-1)*14+2
    k = 0
    RETURN1 = 0
    DIMENSION number1(11,8)
    FOR i = (P-1)*14+2 TO (P-1)*14+12  &&将二维表格数据导入一维数组
        FOR j = 2 TO 9
            k = k+1
            a =b(i,j)
            number1(k) = a
        ENDFOR
        SKIP
    ENDFOR
看似也是14行8列一块,但只取前11行的有效数,最后2行没用?
再试了一下,是不是这结果:
程序代码:
USE 有无重复检验记录表 ALIAS 有无重复检验记录表 IN 0
ZAP
USE 原表 ALIAS 原表 IN 0
SELECT 原表
GO 2 
i = 0
DO WHILE !EOF("原表")
    DIMENSION a原表[15, 8]
    COPY TO ARRAY a原表 FIELDS LIKE* NEXT 15
    i = i + 1
    *DIMENSION a原表[104]
    DIMENSION a原表[88]
    ASORT(a原表)
    bl = .T.
    dd = 0
    FOR EACH ad IN a原表
        IF ad == dd
            *? "运行记录号", i, "已有重复,作废",dd,ad
            INSERT INTO 有无重复检验记录表 VALUES (i, "已有重复,作废")
            bl = .F.
            EXIT
        ELSE
            dd = ad
        ENDIF
    ENDFOR
    IF bl
        *? "运行记录号", i, "无重复"
        INSERT INTO 有无重复检验记录表 VALUES (i, "无重复")
    ENDIF
ENDDO
SELECT 有无重复检验记录表
GO TOP 
BROWSE
CLOSE DATABASES ALL
RETURN
2015-03-07 15:45
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 43楼 吹水佬
先生您好,首先感谢您的代码,可行了,诚挚的感谢。但我在拜读时有一行我搞不懂:
 DIMENSION a原表[88]  这一行代码作何用处我看不懂,请指教,谢谢
2015-03-07 20:14
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 42楼 sdta
哦,是定义一个一维的88个内存变量是吗
2015-03-07 20:15
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
是的,DIMENSION a原表[88] 是定义数组(a原表)88个单元。
2015-03-07 20:48
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 46楼 吹水佬
谢谢先生,诚挚的感谢
2015-03-08 09:14
快速回复:请教VFP能接受的内存问题
数据加载中...
 
   



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

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