请问用RegReportNotify 注册品种的话
如果某一个合约被注册两次
那是不是当ReportNotify 事件被触发的时候,会执行两次呢?
因为我导入数据库是用ReportNotify 来触发的,但是之前我第一次注册品种后没有取消
第二次又注册了。
然后发现数据库里的数据,有的在同一秒内,有4笔。然后两笔是一样的
你可以写上几条语句试试
在ReportNotify 方法里写上
application.msgout ReportData.NewPrice &ReportData.date
最后一笔数据到来的时间。如果有重复的话,就说明两次注册,就会执行两次触发。
额。我是每一笔新来的数据都记录下时间的(是REPORT里的时间)
然后输入到数据库,然后就发现重复啦
那么知道结论了,你要解决吗?
只注册一次不就行了。
有个细节需要知道
今天我开始注册了一次
然后把金字塔都关了
然后再开启金字塔
然后再注册一次
不知道这样算不算注册了两次呢?
因为现在看数据表 又发现了数据的重复
如果今天关闭金字塔后重新开启 然后注册 这个过程算注册一次的话
那就意味着有问题啦
这样 你实现一个 Unload 或close 或endVBA
在关闭的软件的时间执行一下上面的函数,
先判断这个对象是否已注册,如果注册了就,取消注册。
UnRegReportNotify 取消品种数据注册
嗯 明天我试试吧 我直接先写了个按钮 实行取消注册的品种
然后看看 一次注册的情况下 数据会不会出错
另外,干脆咨询下RegReportNotify品种后,数据的传输机制吧
是一秒传输2笔数据么?
如果这一秒内没有成交,那是否还传输数据,如果传输,那传输的是什么数据呢?
如果某段时间内没有成交的交易,但是委买,委卖有变化,那是否还是会传输,传输的最新价还是上一笔成交的数据么?
如果这段时间内既没有成交的交易,委买,委卖也没有变化,这个时候又是怎么传输的呢?
暂时想到这么多,麻烦版主解答一下哈
我现在怀疑有的重复数据是因为VBA这个程序语言的不稳定造成的
因为我仔细回忆了一下
我是开始打开宏的时候当时出了个错误
然后我修改了代码
然后关闭了宏和金字塔软件
然后重开软件 重新执行宏
之后运行的大概十二分钟的时间内 程序运行的很顺利
这个时间段输入的数据也没有问题,也没有重复
然后之后我发现数据库貌似没有实时地插入数据了,但是宏在很稳定的运行
这个时候我没有去动金字塔软件,后来在ACCESS数据库里把时间点按升序排列,发现是有数据的
但是很奇怪为什么之前都是自动升序排列数据的,要知道这个实时的插入数据肯定是按时间点的前后来插入数据的,也就是说最新时间的数据肯定是在数据库的后面的
上面是一个问题,然后我在收盘后查看数据库的数据,发现后面的就有数据重复了。
那现在就需要搞清楚,究竟是金字塔在RegReportNotify 品种后,机制上有问题呢
还是VBA这一语言太弱造成的问题