欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → [求助]一个奇怪的问题。BLOCK对象最后二项数据缺乏。

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有4965人关注过本帖树形打印复制链接

主题:[求助]一个奇怪的问题。BLOCK对象最后二项数据缺乏。

帅哥哟,离线,有人找我吗?
yeyi
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:253 积分:1742 威望:0 精华:0 注册:2010/8/12 13:04:52
[求助]一个奇怪的问题。BLOCK对象最后二项数据缺乏。  发帖心情 Post By:2011/11/7 14:41:38 [只看该作者]

一个VBA程序,导出板块中的市场代码和品种代码到文本文件中。

前面数据导出正常,板块中的最后二项数据均为空白。

 

比如一个板块有5个品种:SH600104,SZ000758,SH600756,SZ000089,SH600108

结果板块文本文件中只有:

SH600104

SZ000758

SH600756

再加2行空行。

是否GetStockMarket函数有BUG.

另外,count到底是基于0还是基于1的

 

TIMAX=1

 blocktype(TIMAX)="程-预警板块-大幅上涨模式"
 blockname(TIMAX)= "当日中大幅上涨板块"

 

 Set b = CreateObject("Stock.Block")
 
 
 
 FOR I=1 TO  TIMAX 
 
    ' init_block_data_TextBoxType.Text =blocktype(I)
  '   init_block_data_TextBoxBlock.Text = blockname(I)
     'init_block_data.show()
 
         application.MsgOut Date &" " &Time& "导出板块数据....:"&blocktype(I)&"  名称:"&blockname(I)

      If b.IsTypeExist(blocktype(I))=0 Then  
     
          End if    
 
      If b.IsBlockExist(blockname(I))=0  Then
         
      else
           
            call  b.open(blockname(I),1)
            tnblockcount=b.count
   
                  
            tcfiledire=Application.AppPath+"\systemblock\"
            tcfilename=blockname(I)+".txt"
            tcfilepath=tcfiledire+tcfilename
   
             Set fs = CreateObject("Scripting.FileSystemObject")

             Set a = fs.CreateTextFile(tcfilepath, True)
             a.Close

            for J=0 TO tnblockcount
                   tcmarket=b.GetStockMarket(j)
                   tccode=b.GetStockCode(j)
                   tcstr=tcmarket+tccode
                   call document.debugfile(tcfilepath,tcstr,0)
            next      
           
          End if

    NEXT
 
 
     
    application.MsgOut Date &" " &Time& "导出板块数据完成!" 


 回到顶部
帅哥哟,离线,有人找我吗?
26327756l
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:676 积分:2548 威望:0 精华:3 注册:2011/4/13 16:18:50
  发帖心情 Post By:2011/11/7 16:05:29 [只看该作者]

问题正在解决中


 回到顶部
帅哥哟,离线,有人找我吗?
26327756l
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:676 积分:2548 威望:0 精华:3 注册:2011/4/13 16:18:50
  发帖心情 Post By:2011/11/8 9:33:42 [只看该作者]

count 只是代表总数,有多少个合约就会显示多少,它不是数组变量。

其他问题还在解决中

[此贴子已经被作者于2011-11-8 9:33:58编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
26327756l
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:676 积分:2548 威望:0 精华:3 注册:2011/4/13 16:18:50
  发帖心情 Post By:2011/11/8 9:42:44 [只看该作者]

GetStockMarket 不是BUG 可以正常使用

我贴上一个GetStockMarket的使用,并不是保存到文件里,只是打印一下板块的合约代码。从你上面的代码看,你好像是少用了 OPEN 方法。

 

 Set b = CreateObject("Stock.Block")
 
call b.open("上海A股",0)

application.MsgOut  b.count

 
 FOR I=1 TO  b.count
   application.MsgOut b.GetStockCode(i)
 next
    
 


 回到顶部
帅哥哟,离线,有人找我吗?
yeyi
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:253 积分:1742 威望:0 精华:0 注册:2010/8/12 13:04:52
  发帖心情 Post By:2011/11/8 10:09:48 [只看该作者]

有啊, call b.open(blockname(I),1)

 回到顶部
帅哥哟,离线,有人找我吗?
26327756l
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:676 积分:2548 威望:0 精华:3 注册:2011/4/13 16:18:50
  发帖心情 Post By:2011/11/8 10:13:14 [只看该作者]

有些数据,是你定义的,我不能像你那样测试。

我只能测试一下GetStockMarket和GetStockCode 方法,测试后是没有问题的,可以输出板块里的合约,至于你的问题,建议你不要先保存到文档里,先打印输出验证一下数据是否存在和正确,还验证open的参数是否正确。

[此贴子已经被作者于2011-11-8 10:23:51编辑过]

 回到顶部