以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  请问能加快读取MDB数据库的频率吗?  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=64723)

--  作者:tdk1
--  发布时间:2014/5/7 10:36:06
--  请问能加快读取MDB数据库的频率吗?
在分笔周期把处理好的数据写入MDB数据厍,写入数据正常.但通过公式读取时发现每隔4至5秒才会刷新一次数据,请问如何才能做到实时刷新呢?
--  作者:王锋
--  发布时间:2014/5/7 10:55:06
--  
你在什么地方读取了,建议把你的情况详细描述
--  作者:tdk1
--  发布时间:2014/5/7 11:30:14
--  

zjif00
stockdate vclose m30 u30 l30
2014-05-07 11:12:39 2143.8 2347 104
2014-05-07 11:12:40 2144.2 1332 843
2014-05-07 11:12:40 2144.2 1328 843
2014-05-07 11:12:41 2143.8 2347 104
2014-05-07 11:12:42 2144.2 1289 852
2014-05-07 11:12:42 2144 2072 362
2014-05-07 11:12:43 2144.2 1268 852
2014-05-07 11:12:43 2144 2048 362
2014-05-07 11:12:43 2144 2048 362
2014-05-07 11:12:44 2144.2 1251 852
2014-05-07 11:12:45 2144.2 1218 852

在金字塔通过函数:

DBEXECUTE(\'insert into zjif00(stockdate,vclose,m30,u30) values(cdate(\'&day1[DATACOUNT]&\'),\'&numtostr(c[DATACOUNT],1)&\',\'&numtostr(UPVOL,0)&\',\'&numtostr(DOWNVOL,0)&\')\');

写入,结果是正常的.

 

在同一个金字塔用如下公式读取:

//连接数据库
DATABASE(\'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\asset.mdb\');
//检索数据库表
DBTABLE(\'Select * From ZJIF00 Order By StockDate\');
//读取数据

UPVOL:DBVALUE(\'M30\');
DOWNVOL:DBVALUE(\'U30\');

 

有4至5秒钟显示直线,然后变回正确图形,又有4至5秒钟直线,再变回正确图形.

 

详细我录了视频,必要的话可通过QQ和邮件发过去的,请在信息告知Q号或邮箱,谢谢!!

 


--  作者:王锋
--  发布时间:2014/5/7 11:51:28
--  

怀疑是写库的部分跟读取部分冲突了导致的.

你试试将写库PEL公式代码关掉,只保留读库代码再看看


--  作者:tdk1
--  发布时间:2014/5/7 12:27:08
--  

我用的是两个公式,一个写一个读.关了写厍的公式就没数字更新啦.....

你们可否测试一下:在分笔周期下用一公式写入收盘价,再用另一公式读出,在数据库里数据正确的前提下,一样都会有4至5秒才刷一次的情况.延时过长这个功能基本没法用了.


--  作者:王锋
--  发布时间:2014/5/7 19:02:28
--  

方便的话,把你的公式和数据库附件传到论坛吧,我们测测


--  作者:王锋
--  发布时间:2014/5/8 15:31:12
--  

公式1

RUNMODE : 0;

DATABASE(\'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\test.mdb\');

GLOBALVARIABLE : x=0;
if ISLASTBAR then
begin
if x != time then
begin
x := time;
myDate := NUMTOSTR(year,0)&\'/\'&NUMTOSTRex(month,0,2)&\'/\'&NUMTOSTRex(day,0,2)&\' \'&NUMTOSTRex(hour,0,2)&\':\'&NUMTOSTRex(minute,0,2)&\':\'&NUMTOSTRex(second,0,2);

mysql:=\'insert into zjif00(stockdate,vclose) values(#\'&myDate&\'#,\'&NUMTOSTR(c,2)&\')\';
//MSGOUT(1,mysql);
DBEXECUTE(mysql);
end
end

公式2

DATABASE(\'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\test.mdb\');

//检索数据库表
DBTABLE(\'Select * From ZJIF00 Order By StockDate\');
//读取数据

UPVOL:DBVALUE(\'vCLOSE\');

 

我们用简单的上述公式进行测试,没发现你说的问题.

注意公式1涉及2个函数目前版本没有,请等待3.2BETA3版发布后即可正常使用.

 

数据库附件请见附件

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:test.rar


--  作者:BBGGG
--  发布时间:2015/11/20 17:03:19
--  
 edfffffffffffffff
--  作者:BBGGG
--  发布时间:2015/11/20 17:07:04
--  
 是慢几秒钟,和楼主说的一样
--  作者:王锋
--  发布时间:2015/11/20 17:08:52
--  
accss数据库本身没法针对高频的,如果是要高频处理,建议采取不要使用数据库。