欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 如何通过VBA写数据到ACCESS

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2829人关注过本帖树形打印复制链接

主题:如何通过VBA写数据到ACCESS

帅哥哟,离线,有人找我吗?
日积月累
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:6 积分:0 威望:0 精华:0 注册:2015/2/5 21:55:06
如何通过VBA写数据到ACCESS  发帖心情 Post By:2015/2/5 21:55:49 [只看该作者]

我今天才下载金字塔,对VBA也不熟悉,请问我想实现以下功能,需要如何做,谢谢!!!

每1秒通过金字塔读取某合约(如IF1502)的价格、分时线的均线、1分钟K线图的60日均线值并保存到Access中。(如果分时均线和60日均线不好同时读取,只读取均线也可以)
Access数据库文件名Trade.mdb,表名为DayRecord,字段如下:
ID,Time,Contract,Price,Average,SixtyAverage
[此贴子已经被作者于2015/2/5 21:57:07编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
日积月累
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:6 积分:0 威望:0 精华:0 注册:2015/2/5 21:55:06
  发帖心情 Post By: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


 回到顶部
帅哥哟,离线,有人找我吗?
日积月累
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:6 积分:0 威望:0 精华:0 注册:2015/2/5 21:55:06
  发帖心情 Post By:2015/2/5 22:59:37 [只看该作者]

摸索了一下,参考别人的代码,用上面的方法可以向ACCESS插入一行数据。
我想问下,如何读取某合约(如IF1502)的价格、分时线的均线、1分钟K线图的60日均线值?还有如何让上面的代码能够每1秒钟执行一次

 回到顶部
帅哥哟,离线,有人找我吗?
日积月累
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:6 积分:0 威望:0 精华:0 注册:2015/2/5 21:55:06
  发帖心情 Post By: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次数据了
'最后一个问题,如何读取某合约的分时均价?????

 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2015/2/6 10:26:31 [只看该作者]



金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部