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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → 数据库访问函数具体用法

   

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


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

主题:数据库访问函数具体用法

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


加好友 发短信
等级:论坛游侠 帖子:140 积分:0 威望:0 精华:0 注册:2017/7/20 10:05:39
数据库访问函数具体用法  发帖心情 Post By:2017/7/20 14:10:53 [只看该作者]

数据库访问例子:
//连接d:\test.mdb数据库
DATABASE('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\test.mdb');
//检索数据库表
DBTABLE('Select * From @Code@ Order By StockDate');
//读取STOCKCLOSE字段数据
//cc:=DBVALUE('STOCKCLOSE');
cc:=DBSTRING('stockdate');
MSGOUT(1,cc);
----------------------
比如当前读取名为SH600000表,表中有7条记录:
SH600000
stockdate stockopen stockhigh stocklow stockclose stockvolume stockamount stockadvance stockdecline stockopenint stockqt stockopenv stockopena
2008/12/8 星期一 13.85 14.81 13.85 14.77 1574854 2251423232 1 1 0 2796 15094 21009634
2008/12/5 星期五 13.25 13.7 13.2 13.57 881932 1187705856 2336 2263 0 2851 6318 8371350
2008/12/4 星期四 13.24 13.94 13.17 13.36 1895744 2556767744 2288 2390 0 2850 13445 17801180
2008/12/3 星期三 12.31 12.94 12.23 12.9 1284943 1611821824 2343 2304 0 2876 5951 7325274
2008/12/2 星期二 11.87 12.28 11.69 12.07 728934 872567232 2337 2193 0 2850 7924 9405752
2008/12/1 星期一 11.9 12.3 11.63 12.19 624735 750631872 2288 2154 0 2772 3606 4290583
2008/11/28 星期五 12.65 12.65 11.9 11.99 1122281 1359461120 2657 1930 0 2923 3878 4905670
我想访问每条记录的每个字段,怎么写?DBTABLE、DBVALUE、DBSTRING的返回值是类型是表格吗?
上述代码我在调试(模式使用的选中的逐K线,仅刷最后一根K线)时,MSGOUT(1,cc);为什么打出很多条相同的记录,如下(部分):

2017/07/20 13:55:51  2008-12-08 00:00:00
2017/07/20 13:55:51  2008-12-08 00:00:00
2017/07/20 13:55:51  2008-12-08 00:00:00
2017/07/20 13:55:51  2008-12-08 00:00:00
2017/07/20 13:55:51  2008-12-08 00:00:00
2017/07/20 13:55:51  2008-12-08 00:00:00
2017/07/20 13:55:51  2008-12-08 00:00:00
2017/07/20 13:55:51  2008-12-08 00:00:00
2017/07/20 13:55:51  2008-12-08 00:00:00
2017/07/20 13:55:51  2008-12-08 00:00:00
2017/07/20 13:55:51  2008-12-08 00:00:00
2017/07/20 13:55:51  2008-12-08 00:00:00
2017/07/20 13:55:51  2008-12-08 00:00:00
2017/07/20 13:55:51  2008-12-08 00:00:00
2017/07/20 13:55:51  2008-12-08 00:00:00
2017/07/20 13:55:51  2008-12-08 00:00:00
2017/07/20 13:55:51  2008-12-08 00:00:00
2017/07/20 13:55:51  2008-12-08 00:00:00
2017/07/20 13:55:51  2008-12-08 00:00:00
2017/07/20 13:55:51  2008-12-08 00:00:00
2017/07/20 13:55:51  2008-12-08 00:00:00
2017/07/20 13:55:51  2008-12-08 00:00:00

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2017/7/20 14:50:20 [只看该作者]

1.某条记录的全部字段的话,只能在读取到记录之后一个个读取。

2.看函数说明的话,DBTABLE返回的是数据集,其他的2个是取得单值的。

3.msgout打印出那么多是因为你使用的是逐K模式,然后你这语句每次读的都是同样的一条记录。取得值是完全一样的。



命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
lh1988
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:140 积分:0 威望:0 精华:0 注册:2017/7/20 10:05:39
  发帖心情 Post By:2017/7/20 14:57:57 [只看该作者]

DBTABLE返回的数据集如何访问呢,比如我前面的代码DBTABLE('Select * From @Code@ Order By StockDate'),应该会取到7条记录,如何遍历取出每条记录的字段值呢?

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2017/7/20 15:13:09 [只看该作者]

以下是引用lh1988在2017/7/20 14:57:57的发言:
DBTABLE返回的数据集如何访问呢,比如我前面的代码DBTABLE('Select * From @Code@ Order By StockDate'),应该会取到7条记录,如何遍历取出每条记录的字段值呢?

1.读取到某一条记录之后:使用DBTABLE这个函数分别读取这条记录的各个字段值就行了。返回的值会限定在当前这个记录下的字段范畴内。

2.读取到的数据集,目前基本上只能处理第一条记录(比如排序的第一条记录)。

 

想要更好的操作数据库,只能用VBA或者C++了。毕竟是easy language 没办法那么灵活多变。



命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2017/7/20 15:15:06 [只看该作者]

stockdate

必须是标准格式,


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20170720151429.jpg
图片点击可在新窗口打开查看

 回到顶部