| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2362 人关注过本帖
标题:请教循环语句
取消只看楼主 加入收藏
qiaolinxj
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2009-3-14
收藏
得分:0 
以下是引用bccn0906在2013-11-26 17:43:01的发言:

CY2里的记录不是来自 cy1的吗,这又怎么与WX对上号呢?
是的,wx就是无效样本,CY2是被替换的有效样本,从CY1里取得,但是是根据WX里的每类每层的个数来从CY1里同类同层里取得,取得的标志就是随机数从小到大所需的个数。
现在就是WX里有2000家样本,但是因为CY1里有些层不满足此层的个数大于WX此层个数+5,所以停止执行。这样一共符合条件的就是大概1000个样本,现在就是这一千个样本必须找到它对应的WX里的样本,因为2张表示没有关联字段,所以我考虑用指针,比如CY2的第一家样本根据它的大类它的层找到WX里样本相对应的个数,再用WX里的这几家样本个数RADOM排序,最小的对应第一家样本,在wx的B2字段里标记一下,例如填个1,那执行CY2里本层第二家样本时,对应的WX本层样本数就排除刚才标记了的那家样本,用剩余的几家样本RODAM排序,取最小的对应第二家,然后以此类推。还有就是当找到了对应的样本得把WWX里code字段、hl字段的值填到CY2对应样本的code和HL字段里。不知道我说明白了没,表达能力实在有限,谢谢啦

[ 本帖最后由 qiaolinxj 于 2013-11-26 18:57 编辑 ]
2013-11-26 18:55
qiaolinxj
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2009-3-14
收藏
得分:0 
回复 22楼 bccn0906
你好,我想直接在CY2和WX里操作,就利用你最后那段程序不知道可行么,问题是我最小值取数不会,就是红色的AND后面还得写个取最小随机数吧,另外随机数是已经赋好值了
SELECT 2
USE CY2
 SCAN
 FOR I=1 TO 1118
     SELECT 1
     USE WX
     SELECT hydl,fc,COUNT(*) as s FROM cy1  GROUP BY hydl,fc
     LOCATE FOR  hydl=cy2.hydl AND fc=cy2.fc AND not(bZ2=='1') AND
     
     IF FOUND()
         REPLACE bZ2 WITH '1' IN wx
         REPLACE WIGHT0 WITH WX.WEIGHT,NH0 WITH wx.Nh code10 WITH WX.code1,NH10 WITH wx.Nhl IN cy2
     ELSE
         =MESSAGEBOX('错误',64,'提示')
     ENDIF
       ENDFOR
     SELECT cy2
 ENDSCAN
 CLOSE DATABASES
2013-11-27 11:17
qiaolinxj
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2009-3-14
收藏
得分:0 
回复 26楼 bccn0906
是啊,赋在RANDOM字段里啊,好像我上面拼错了,呃,不好意思。另外CY2里这张表我已经抽好了1118条,现在就是要找到每条和它相对应的WX里的样本
2013-11-27 12:07
qiaolinxj
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2009-3-14
收藏
得分:0 
回复 29楼 kiff
额,谢谢啦,这还真是十年前的毕业设计老师教的,后来一直很少用VF,很多东西都忘记了,额
2013-11-27 19:59
qiaolinxj
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2009-3-14
收藏
得分:0 
以下是引用bccn0906在2013-11-27 13:44:39的发言:

Use WX In 0
Use CY2 In 0
SELECT CY2
SCAN
    CALCULATE MIN(Random) TO Random_TMP FOR hydl=CY2.hydl And fc=CY2.fc And Not(bZ2=='1') IN WX
    SELECT WX
    LOCATE FOR hydl=CY2.hydl And fc=CY2.fc And Not(bZ2=='1') AND Random=Random_TMP
    If Found()
        Replace bZ2 With '1' In WX
        Replace WIGHT0 With WX.WEIGHT,NH0 With WX.NH0,code10 With WX.code10,NH10 With WX.Nhl In CY2
    Else
        =Messagebox('错误',64,'提示')
    Endif
    Select CY2
Endscan
Close Databases
谢谢,下午开会,明天试试看
2013-11-27 19:59
qiaolinxj
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2009-3-14
收藏
得分:0 
回复 28楼 bccn0906
你好,刚试了这段程序,发现CY2里是每一层对应WX里的同层的一家随机数最小样本,而不是CY2里每一家对应WX里同层的每一家
2013-11-28 11:22
qiaolinxj
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2009-3-14
收藏
得分:0 
回复 33楼 bccn0906
是啊,我说的每一家就是每一条的意思,但我运算出来是比如53的第一层有7条记录,这七条记录都是对应WX里53第一层里随机数最小的那条记录,而不是说CY2里53第一层第二条应该对应wx里同层除了已标记那家随机数最小的记录
2013-11-28 11:36
qiaolinxj
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2009-3-14
收藏
得分:0 
回复 35楼 bccn0906
这个和昨天那个好像没变化么,刚运行全是错误提示。。。。。
2013-11-28 11:48
qiaolinxj
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2009-3-14
收藏
得分:0 
回复 35楼 bccn0906
不好意思,你这段程序应该没问题,因为有几条记录对不上,我估计是我这个程序抽的时候有问题
 use cy1.dbf
 sele 2
 use yb.dbf
 sele 3
 use wx.dbf
 SELECT 4
 USE cy2.dbf
 SELECT 4
 DELETE ALL
 PACK

 for i=53 to 89
     for m=1 to 5
         sele 2
         sele * from yb where hydl=i and fc=m into dbf ls1
         SELECT ls1
         n=RECCOUNT()
         k=n+5
         SELECT 1
         SELECT * FROM cy1 WHERE hydl=i AND fc=m INTO dbf ls2
         SELECT ls2
         s=RECCOUNT()
         IF k<=s
             SELECT 3
             SELECT * FROM wx WHERE hydl=i AND fc=m INTO dbf ls3
             SELECT ls3
             x=RECCOUNT()
             IF x<>0
                 SELECT top x * FROM cy1 ORDER BY random WHERE hydl=i AND fc=m INTO dbf ls4
                 SELECT 4
                 APPEND FROM ls4
                 SELECT ls4
                 USE
                 DELETE FILE ls4.dbf
             ENDIF  

             SELECT ls3
             USE
             DELETE FILE ls3.dbf
            
         ENDIF
         SELECT ls1
         USE
         DELETE FILE ls1.dbf
         SELECT ls2
         USE
         DELETE FILE ls2.dbf
         
     ENDFOR
 ENDFOR
 CLOSE ALL
2013-11-28 11:59
qiaolinxj
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2009-3-14
收藏
得分:0 
回复 38楼 bccn0906
是啊,我是根据我上面帖的这个程序抽的,按理说和WX的应该都对应起来,你能不能棒哦看看是不是那个程序有问题?谢谢
2013-11-28 12:41
快速回复:请教循环语句
数据加载中...
 
   



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

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