| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 484 人关注过本帖
标题:请教从“块”中取数后求平方和并写入新表问题
只看楼主 加入收藏
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
结帖率:73.44%
收藏
已结贴  问题点数:20 回复次数:9 
请教从“块”中取数后求平方和并写入新表问题
有一原表,内有13行7列的块(有很多这样的块,用select * from 原表 into array yb语句时提示内存不够),现在想求这些块中的第7行各数的平方和,并将这个平方和写入新表,代码如下,但不成功,请指点,谢谢
CLEAR
SET SAFETY OFF
CLOSE ALL
*---------------------------------
pfh=0
CREATE TABLE 新表 (原运行号 N(10))
    ALTER table 新表 ADD 和 n(20)
USE 原表 ALIAS 原表 IN 0
SELECT 原表
GO 2
i = 0
DO WHILE !EOF("原表")   
    DIMENSION a原表[15, 9]
    COPY TO ARRAY a原表 FIELDS LIKE 列* NEXT 15  
    i = i + 1
 FOR j=1 TO 9
  pfh=pfh+('列'+ALLTRIM(STR(j)))^2
 ENDFOR
 SELECT 新表
 APPEND BLANK
 REPLACE 原运行号 WITH i  
APPEND BLANK
 REPLACE 和 WITH pfh   
 ENDDO
BROWSE
CLOSE DATABASES ALL
RETURN
MESSAGEBOX('求和已结束!',64,'信息提示')
DELETE FILE  *.BAK
QUIT  
附件如下(因原表文件太大,在附件中只保留了这样的块共100块)
请教.zip (4.35 KB)
2015-04-20 12:47
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
晕!原来已经发过的啊。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2015-04-20 13:39
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 2楼 hu9jj
原来的问题不是这样的
2015-04-20 13:41
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 2楼 hu9jj
先生您好,我能将原表中的数据拷到临时表,代码如下:
CREATE CURSOR 临时表 (运行记录号 I,列1 I, 列2 I, 列3 I, 列4 I, 列5 I, 列6 I, 列7 I, 列8 I,列9 I)
APPEND FROM 原表.dbf
*---------
BROWSE
但是不会从临时表的每块的第7行求它的平方和,请求先生指点,谢谢
2015-04-20 14:17
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
程序代码:
clear
clear all
use 原表
select count(*) from 原表 where not empty(运行记录号) into array acnt
for lnI=1 to acnt[1]
    go (lnI-1)*14+7
    scatter to aa fields like*
    nsum=0
    for lnJ=1 to 9
        nsum=nsum+aa[lnJ]^2
    endfor
    insert into 新表 values (lnI,nsum)
endfor
select 新表
browse


楼主这段时间没有进步,代码还是老套路。

坚守VFP最后的阵地
2015-04-20 14:54
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:10 
程序代码:
clear
clear all
create cursor 新表 (原运行号 N(10),平方和 N(16))
select count(*) from 原表 where not empty(运行记录号) into array acnt
select 原表
for lnI=1 to acnt[1]
    go (lnI-1)*14+7
    scatter to aa fields like*
    nsum=0
    for lnJ=1 to 9
        nsum=nsum+aa[lnJ]^2
    endfor
    insert into 新表 values (lnI,nsum)
endfor
select 新表
browse

比较这段代码与5楼的代码有何不同

坚守VFP最后的阵地
2015-04-20 15:08
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:10 
SELECT 原表
GO 8    && 第一块的第7行
n原运行号 = 1
DO WHILE !EOF("原表")
    pfh = 0
    FOR i = 1 TO 9
          pfh = pfh + EVALUATE("列" + TRANSFORM(i) + "^2")
    ENDFOR
    INSERT INTO 新表 VALUES (n原运行号, pfh)
    n原运行号 = n原运行号 + 1
    SKIP 14    && 下一块的第7行
ENDDO
2015-04-20 15:41
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 6楼 sdta
回先生,是否是前者的新表是临时表,只浏览了一下,未保存新表
2015-04-20 15:43
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
以下是引用fdxxhjc在2015-4-20 15:43:55的发言:

回先生,是否是前者的新表是临时表,只浏览了一下,未保存新表

临时表与自由表你可以自由选择

坚守VFP最后的阵地
2015-04-20 16:11
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 9楼 sdta
哦,谢谢先生
2015-04-20 16:28
快速回复:请教从“块”中取数后求平方和并写入新表问题
数据加载中...
 
   



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

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