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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 金字塔vba数据库交互

   

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


  共有12711人关注过本帖平板打印复制链接

主题:金字塔vba数据库交互

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


加好友 发短信 czt
等级:蜘蛛侠 帖子:1445 积分:6114 威望:0 精华:3 注册:2012/1/16 10:31:19
金字塔vba数据库交互  发帖心情 Post By:2012/11/13 23:07:24 [只看该作者]

金字塔vba指标调用数据库教程
本教程主要用于帮助初学用户熟悉在vba中进行数据库的相关操作,主要包含以下三部分内容:
第一节,数据库的准备工作
第二节,数据库的实际操作,主要涉及到的知识点
1) 创建表,字段
2) 插入数据-当前周期数据,跨周期
3) 索引和读取数据
4) 删除表,字段
第三节,使用建议和注意事项
一、 数据库的准备工作(vba使用数据库首先我们需要连接数据库)
在金字塔的高级编程区中新建一个窗体,双击窗体进入写代码部分;以下例子需要在金字塔安装根目录下建立一个test.mdb数据库,建立完成后我们事先准备工作就已经完成了,接着在金字塔vba里就可以直接对表,字段进行操作了。

二、 数据库操作方法(具体代码和注释<使用时选取需要的代码只要稍许修改>)
2.1 连接数据库
此段代码是以下每个操作都要使用到的,已经标注了在哪里插入代码,只要将操作代码粘贴到红色位置中就可以实现相应操作(2.2-2.6都是操作代码,附图)

'定义一个函数,供vba开始运行时调用
sub DataInsert()
'设置对象adoConn,进行连接
Set adoConn=CreateObject("Adodb.Connection")
'连接数据库(数据指向是金字塔安装目录下的test.mdb,也可以自己更改想要的路径)
adoConn.Open"Provider=MicroSoft.Jet.OLEDB.4.0;Data Source="&Application.AppPath&"\test.mdb"
//
此位置插入具体功能模块代码
//
'数据库启动时调用
sub application_vbastart()
    call DataInsert()
    '调试
    'call application.MsgOut("11")
end sub

2.2 创建表
strSqlcre="create table if00"
adoConn.Execute(strSqlcre)
'插入字段
strSqlalt1="alter table if00 add stockdate double"
strSqlalt2="alter table if00 add vclose double"
adoConn.Execute(strSqlalt1)
adoConn.Execute(strSqlalt2)
2.3 插入数据
'调入其他周期数据
set qtzq= marketdata.GetHistoryData("if00","Zj",5)
'调试数据调入是否成功
'call application.MsgOut(qtzq.close(qtzq.Count-1))

'插入数据(最新价)并且利用一个for循环遍历插入前N日的收盘价
'取得中金所if00合约价格
Set Report1=MarketData.GetReportData("if00","zj")
for i=2 to 5
strSqlins="INSERT INTO if00 (stockdate, vclose) VALUES ('"&Report1.NewPrice&"', '"&qtzq.close(qtzq.Count-i)&"')"
adoConn.Execute(strSqlins)
next


2.4 检索和读取数据
'检索并且更新数据
strSqlupd1="select stockdate from if00 "
strSqlupd2="update if00 set stockdate=0 where vclose=2249"
adoConn.Execute(strSqlupd1)
adoConn.Execute(strSqlupd2)

'读取数据
strSqlread="select stockdate from if00 where vclose =2249 "
'strSqlread=strSqlread&"where vclose =2249"
'ADO Recordset 对象用于容纳一个来自数据库表的记录集。
Set rstTmp=CreateObject("ADODB.RecordSet")
rstTmp.open strSqlread,adoConn
aa=rstTmp("stockdate")
call application.MsgOut(aa)

2.5 删除字段
strSqldel="delete from if00 where vclose =2249"
adoConn.Execute(strSqldel)

2.6 删除表
strSqldro="drop table if00"
adoConn.Execute(strSqldro)
adoConn.Close
End sub

三、 注意事项
? 1 .使用的时候将数据库关闭,不然可能导致出错
? 2 .以上只是抛砖引玉,整理了一些基本使用,如果大家要用于实践的话可以参照sql的例子及各类文献


[本帖被加为精华]
 回到顶部