以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://www.weistock.com/bbs/list.asp?boardid=2)
----  数据库访问函数具体用法  (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=156103)

--  作者:lh1988
--  发布时间: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
--  发布时间:2017/7/20 14:50:20
--  

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

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

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


--  作者:lh1988
--  发布时间:2017/7/20 14:57:57
--  
DBTABLE返回的数据集如何访问呢,比如我前面的代码DBTABLE(\'Select * From @Code@ Order By StockDate\'),应该会取到7条记录,如何遍历取出每条记录的字段值呢?
--  作者:FireScript
--  发布时间: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
--  发布时间:2017/7/20 15:15:06
--  

stockdate

必须是标准格式,


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