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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 金字塔VBA数据库控件实例 共大家参考

   

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


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

主题:金字塔VBA数据库控件实例 共大家参考

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


加好友 发短信
等级:新手上路 帖子:15 积分:186 威望:0 精华:0 注册:2010/9/5 14:56:55
金字塔VBA数据库控件实例 共大家参考  发帖心情 Post By:2010/9/24 12:24:05 [只看该作者]

按照自己的交易思想来开发相应的程序最大的一个宗旨就是简单化,系统不能搞得太复杂,免得某个环节出现问题导致错过交易机会。

作为一个测试,将自己预定义好的预埋单保存到一个标准的文本文件里面(这个预埋单的期限不仅仅是今天,也可能到未来的三个月或者一个月)。事实上,我们使用数据库来保存这些记录,但是一个数据库文件过于庞大,而且还有安装引擎等东西,麻烦,如果异地在异机上操作(本人还有工作),还要再次安装这些数据库(可能除了ACESS之外等小型文件之外)。最好的方法就是使用文本文件,也好编辑。文本编辑器很多。编辑的格式也简单。

下面几个例子:

假设 我的预埋单的记录保存在标准化的文件内   test.csv (逗号或者TAB或者自定义的符号作为隔离符)。

假设所在文件夹子  d:\jameszyj 下  完整的路径为  d:\jameszyj\test.csv

 

1、建立文件型或者跟系统性的的ODBC  (控制面板 管理工具 下 的ODBC管理器)

    dsn= jameszyj

    很简单就可以设置了,只要设定好目录就可以了, 即  d:\jameszyj

    那么该文件子底下每个文本文件就是一个表。

    该文件夹下还有 一个文件  schema.ini  这里面保存本目录下每个文本文件的信息。

    其中有个 key :ColNameHeader=false  默认值是false ,可以改成true 相当于表结构的名字

 

2、完成之后在金字塔做以下工作

     新建一个FORM对象,然后在vba控件栏(工具箱)增加一个一个数据库控件 这个数据库控件在金字塔的主目录下

     名字为:EDITGRIDCTRLLIB.OCX  金字塔安装之后就注册好了

     在工具箱右键点击"添加控件"的时候 弹开一个窗口 在窗口的最下面 会看到"可以编辑的网格控件" 在其左边的checkbox 点击之后确定 就成功将该控件添加到面板上,就可以像使用MS FORMS 2.0 控件那样使用了。

    如果找不到这个控件,可以把这个文件拷贝到c:\windows\system32下

    然后使用以下命令就可以注册了:

    regsvr32  editgridctrllib.ocx

 

3、实现部分

    将该网格控件拖到 FORM上 右键点击 然后在窗口内 将名字命为  fg

 

Sub test_Load()
    set lnv_sqlca = createobject("adodb.connection")
    lnv_sqlca.c
    lnv_sqlca.open
    if lnv_sqlca.state <> 1 then
       msgbox "不能打开交易记录",0,"Warning Tip"
       exit sub
    end if
    set lnv_rs = createobject("adodb.recordset")
    lnv_rs.open "select * from test.csv",lnv_sqlca  ' 每个文本文件就是一个表
    set test_fg.datasource = lnv_rs
    lnv_sqlca.close
End Sub

然后启动VBA 执行该窗口,窗口打开之后,该网格数据控件就显示出文本文件的内容了。

 

作为例子,仅供参考。

 

这样子信息的保存通过这个思路就可以实现了。我们完全可以借助金字塔的VBA功能可以开发出自己的交易系统,套利系统,程序交易模型,太棒了。

 

但有一个关键的问题是,金字塔的多线程处理可能要加强,少用循环语句,特别是循环语句内需要执行较多时间的时候,系统就会被这个循环独占,导致金字塔内的其他任务会在搁置。特别是这个任务最佳的触发条件正好处于循环之内的时候。

 

   

 

 

   


版主评定:好评,获得10个金币奖励好评,获得10个金币奖励
(理由:好文章)
 回到顶部
帅哥哟,离线,有人找我吗?
jameszyj
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:15 积分:186 威望:0 精华:0 注册:2010/9/5 14:56:55
  发帖心情 Post By:2010/9/24 12:27:27 [只看该作者]

'上面的代码粘贴过来的时候有点不对

Sub test_Load()
    set lnv_sqlca = createobject("adodb.connection")
    lnv_sqlca.c
    lnv_sqlca.open
    if lnv_sqlca.state <> 1 then
       msgbox "不能打开交易记录",0,"Warning Tip"
       exit sub
    end if
    set lnv_rs = createobject("adodb.recordset")
    lnv_rs.open "select * from test.txt",lnv_sqlca
    set test_fg.datasource = lnv_rs
    lnv_sqlca.close
End Sub


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


加好友 发短信
等级:论坛游侠 帖子:574 积分:3167 威望:0 精华:0 注册:2009/10/10 11:13:01
  发帖心情 Post By:2010/9/24 14:55:39 [只看该作者]

不错,论坛因你而精彩
由于论坛的某些限制,部分代码无法正常贴出,参考本论坛提供上传文件的方法,写成文件,存于网络,贴链接

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


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2010/9/24 20:02:05 [只看该作者]

新版已经增加  application.PeekAndPump 方法,可以实现异步操作。

但是提醒用户,异步操作对编程能力要求很高,稍有补注意就会导致程序崩溃


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


加好友 发短信
等级:论坛游侠 帖子:574 积分:3167 威望:0 精华:0 注册:2009/10/10 11:13:01
  发帖心情 Post By:2010/9/24 20:06:21 [只看该作者]

 期待。。。

 回到顶部
美女呀,离线,留言给我吧!
股疯
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:60 积分:477 威望:0 精华:3 注册:2010/8/4 0:37:55
  发帖心情 Post By:2010/9/25 11:55:37 [只看该作者]

图片点击可在新窗口打开查看好办法


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


加好友 发短信
等级:新手上路 帖子:4 积分:25 威望:0 精华:0 注册:2010/11/30 13:00:27
  发帖心情 Post By:2011/4/22 12:42:10 [只看该作者]

你好

为什么我按照这个编程,只能显示一条信息呢?

代码如下:

    Set adoConn=CreateObject("Adodb.Connection")
    adoConn.Open "Provider=MicroSoft.Jet.OLEDB.4.0;Data Source=e:\sen\stock\stock.mdb"
    strSql="Select * From shzf where gpdm like '" &StockLabel& "'"'查询字符串要加"'"
 Set Rs=adoConn.Execute(strSql)
   set mdbsh_EditGridCtrlzf.datasource = Rs

 

查询到9条数据库,但只显示一条数据,还有哪里要设置嘛?


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


加好友 发短信
等级:蜘蛛侠 帖子:1366 积分:5210 威望:0 精华:7 注册:2010/12/11 18:00:33
  发帖心情 Post By:2011/4/22 21:31:09 [只看该作者]

我的方法是使用Accesss数据库或者Sql Server数据库,这样,可以利用数据库的优越的查询性能。

不过使用EditGrid控件来存放数据倒是个不错的方法。

 


 回到顶部