以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 高级功能研发区 (http://www.weistock.com/bbs/list.asp?boardid=5) ---- 如何通过VBA写数据到ACCESS (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=75415) |
-- 作者:日积月累 -- 发布时间:2015/2/5 21:55:49 -- 如何通过VBA写数据到ACCESS 我今天才下载金字塔,对VBA也不熟悉,请问我想实现以下功能,需要如何做,谢谢!!! 每1秒通过金字塔读取某合约(如IF1502)的价格、分时线的均线、1分钟K线图的60日均线值并保存到Access中。(如果分时均线和60日均线不好同时读取,只读取均线也可以) Access数据库文件名Trade.mdb,表名为DayRecord,字段如下: ID,Time,Contract,Price,Average,SixtyAverage [此贴子已经被作者于2015/2/5 21:57:07编辑过]
|
-- 作者:日积月累 -- 发布时间:2015/2/5 22:36:29 -- Sub APPLICATION_VBAStart() \'设定access文件 AccessFilePath = "D:Trade.accdb" \'在ACCESS数据库中插入数据******************************************************************** \'打开数据库 Set adoConn=CreateObject("Adodb.Connection") adoConn.Open"Provider=MicroSoft.Jet.OLEDB.4.0;Data Source=D:\\Trade.mdb" \'在access数据库中写入记录 strSqlcre="INSERT INTO DayRecord (TradeTime,Contract,Price,Average,SixtyAverage) VALUES (\'09:52:05\',\'IF1502\',3520,3515,3585) " adoConn.Execute(strSqlcre) application.MsgOut "SQL语句: "& strSqlcre adoConn.close application.MsgOut "结束" \'结束在ACCESS数据库中插入数据******************************************************************** End Sub |
-- 作者:日积月累 -- 发布时间:2015/2/5 22:59:37 -- 摸索了一下,参考别人的代码,用上面的方法可以向ACCESS插入一行数据。 我想问下,如何读取某合约(如IF1502)的价格、分时线的均线、1分钟K线图的60日均线值?还有如何让上面的代码能够每1秒钟执行一次 |
-- 作者:日积月累 -- 发布时间:2015/2/5 23:12:02 -- sub Application_VBAStart() Call Application.SetTimer(1,1*1000) \'每1秒执行1次SetTimer,SetTimer里应该是毫秒 end sub Sub Application_Timer(ID) \'设定access文件 \'AccessFilePath = "D:\\*******\\Asset.accdb" AccessFilePath = "D:Trade.accdb" \'开始在ACCESS数据库中新建表******************************************************************** \'application.MsgOut "新建Access表" \'Set adoConn=CreateObject("Adodb.Connection") \'连接数据库(数据指向是金字塔安装目录下的test.mdb,也可以自己更改想要的路径) \'adoConn.Open"Provider=MicroSoft.Jet.OLEDB.4.0;Data Source=D:\\艺的文件夹\\自编程序\\风控系列06 金字塔vbs文件\\DailyAsset.mdb" \'adoConn.Open"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & AccessFilePath \'可以连接access2007数据库格式 \'adoConn.Open"Provider=MicroSoft.Jet.OLEDB.4.0;Data Source=D:\\Trade.mdb" \'查找表是否存在 \'Dim Rs \'Set Rs = adoConn.OpenSchema(20) \'Do While Not Rs.EOF \' If Rs("Table_Name") = "TreadingRecord" Then \' \'找到表的操作。。 \' strSqldro="drop table TreadingRecord" \' adoConn.Execute(strSqldro) \' End If \' Rs.MoveNext \'Loop \'Rs.Close \'Set Rs = Nothing \'创建表 各列代表的意义分别是 交易时间,交易品种,交易状态(买卖,买空,卖空,头寸模型,风险百分比) \' strSqlcre="create table TreadingRecord (TreadeDateTime DateTime NOT NULL, TreadMarket varchar(10) NOT NULL, TreadeStatus varchar(10) NOT NULL,PositionSizeModle varchar(10) NOT NULL, PercentRisk real)" \' adoConn.Execute(strSqlcre) \'adoConn.Close \'结束在ACCESS数据库中新建表******************************************************************** \'在ACCESS数据库中插入数据******************************************************************** \'打开数据库 Set adoConn=CreateObject("Adodb.Connection") \'adoConn.Open"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & AccessFilePath \'可以连接access2007数据库格式 adoConn.Open"Provider=MicroSoft.Jet.OLEDB.4.0;Data Source=D:\\Trade.mdb" \'在access数据库中写入记录 strSqlcre="INSERT INTO DayRecord (TradeTime,Contract,Price,Average,SixtyAverage) VALUES (Now,\'IF1502\',3520,3515,3585) " adoConn.Execute(strSqlcre) application.MsgOut "SQL语句: "& strSqlcre adoConn.close application.MsgOut "结束" \'结束在ACCESS数据库中插入数据******************************************************************** End Sub \'用上面的代码可以实现1秒钟插入1次数据了 \'最后一个问题,如何读取某合约的分时均价????? |
-- 作者:王锋 -- 发布时间:2015/2/6 10:26:31 -- http://www.weistock.com/bbs/dispbbs.asp?boardid=5&Id=75418 |