以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  帮助中Table 对象GetReportData方法怎么用?  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=51573)

--  作者:pel46585
--  发布时间:2013/5/2 13:39:33
--  帮助中Table 对象GetReportData方法怎么用?

Set Table = Report.GetGridByName("上海指数").GetTable()
msgbox Table.GetReportData(0)\'这里不知道怎么写

\'Getgrid这个方法也不会用


--  作者:rushtaotao
--  发布时间:2013/5/2 17:14:02
--  

\'取当前最新价

NewPrice = ReportData.NewPrice

MsgBox NewPrice



其中newprice就是reportdata里面的数据


--  作者:pel46585
--  发布时间:2013/5/3 10:22:57
--  
求回答
--  作者:rushtaotao
--  发布时间:2013/5/3 11:10:52
--  
还不明白??


--  作者:pel46585
--  发布时间:2013/5/3 12:20:44
--  

明白了


--  作者:spacedude
--  发布时间:2018/5/16 23:46:07
--  再问从Table中得到Reportdata的方法
     Set Table = Report.GetGridByName("上海指数").GetTable()

        for i=0 to table.rowcount()

        Set StockData=table.getReportData(i)
        application.MsgOut StockData.marketName    \'报错缺少对象StockData,请问为什么?
        set StockData=nothing

    set Table=nothing

本意是想从动态显示牌的列表中读出取出每一行合约,和这个合约对应的市场名称,比如RB00对应的SQ

--  作者:yukizzc
--  发布时间:2018/5/17 10:45:52
--  

Set Table = Report.GetGridByName("上海指数").GetTable()

        for i=0 to Table.rowcount()-1

        Set StockData=Table.getReportData(i)
        application.MsgOut StockData.marketName    \'报错缺少对象StockData,请问为什么?
        next
        set StockData=nothing

    set Table=nothing


--  作者:spacedude
--  发布时间:2018/5/17 15:23:46
--  再问从Table中得到Reportdata的方法(停不下来)
 代码修正后不再报错,但是调用后停不下来
代码放在Function 模块中,在Macro模块中调用。
开始放在Application.VbaStart()下调用也出现过这个问题(运行后不会停下来,直到死机。)
Funaction模块中代码:
Sub Report_RefurbishFinished(Table)
    application.ActivateFrame("Report")
    Set Table = Report.GetGridByName("上海指数").GetTable()
        call table.SwitchBlock( "连续合约板块",1   )
        for i=0 to table.rowcount()-1
        Set StockData=Table.getReportData(i)
        application.MsgOut StockData.marketName
        set StockData=nothing
        next
    set Table=nothing

End Sub


Macro模块下代码:
Sub APPLICATION_VBAStart()
    application.ClearMsg    \'控制台清屏
    call Report_RefurbishFinished(Table) \'读列表
End Sub


--  作者:spacedude
--  发布时间:2018/5/17 15:39:38
--  
  修改后不再报错,但VBA不会停下来,一直执行到金字塔崩溃。
之前把代码放在Application.VbaStart()下调用也有这个情况 ,
后来不放在vbaStart()之下 调用,而是直接把调用指令写在Macro模块下,这种情况不会一直执行
现在上述两种方式都一直执行,不会停止。
版本:V4.61 (X64)
--  作者:无为剑
--  发布时间:2018/5/17 18:29:42
--  
1,Report_RefurbishFinished 事件是报表刷新时自动触发的,你通过在该事件中调用SwitchBlock会导致死循环,导致这个事件不断被重复触发
2,只有你自己创建的对象才需要销毁,从系统中获取的对象不要销毁,会导致内存使用异常。
 
下面代码改写后可以正常工作
 
 
Sub Report_RefurbishFinished222(Table)
    application.ActivateFrame("Report")
    Set Table = Report.GetGridByName("上海指数").GetTable()
        call table.SwitchBlock( "连续合约板块",1   )
        for i=0 to table.rowcount()-1
        Set StockData=Table.getReportData(i)
        application.MsgOut StockData.marketName
        \'set StockData=nothing
        next
    \'set Table=nothing
End Sub
 
 
Sub APPLICATION_VBAStart()
    application.ClearMsg    \'控制台清屏
    call Report_RefurbishFinished222(Table) \'读列表
End Sub