以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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