[此贴子已经被作者于2015/11/15 20:12:35编辑过]
Sub findfirstsecondOPI(Precode,tMarket)
on error resume next '有可能没有某些合约,如02合约通常没有
for k=1 to 12 '3 遍历同一品种所有合约
if k<10 then
icode=Precode & "0" & cstr(k)
else
icode=Precode & cstr(k)
end if
set History2 = marketdata.GetHistoryData(iCode,tMarket,5) '由于这一句可能会发生错误,导致cs中输出日期错误,怎么解释?
next '3
End Sub
Sub cs()
on error resume next
T=25
Precode="CS"
tMarket="DQ"
set History1 = marketdata.GetHistoryData(Precode & "00",tMarket,5)
M=History1.Count-1
for j=0 to M
tdate=cdate(History1.Date(j))
findfirstsecondOPI Precode,tMarket
application.msgout tdate
next
End Sub
得到错误的日期输出:
2014-12-19
2014-12-23 ‘从这里开始就不对了
2014-12-24
2015-01-06
2015-01-08
2015-01-19
2015-01-20
2015-01-21
2015-01-22
2015-01-30
2015-02-05
2015-03-10
2015-03-12
2015-03-16
2015-03-20
2015-04-02
2015-04-15
2015-04-29
2015-05-06
2015-05-07
2015-05-11
2015-05-14
2015-05-26
2015-06-01
2015-06-25
2015-06-30
2015-09-22
2015-09-28
2015-10-15
2015-10-16
2015-10-27
2015-11-02
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
0:00:00
即便在findfirstsecondOPI Precode,tMarket
后面再加一句err.number=0也不管用
但是,在后面加一句
set History1 = marketdata.GetHistoryData(Precode & "00",tMarket,5)
重新set一下倒是管用,不过其中的原因想不明白,为什么后面的错误在已经on error resume next 或者err.number=0后会导致早前声明的History1 对象毁了。是不是可以进一步推广,任何语句中的错误(无论之前之后发生的)都会导致所有与之相关的子程序中的对象被毁?!
[此贴子已经被作者于2015/11/15 20:55:25编辑过]