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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → 连接sql server的代码导致整个公式都不执行

   

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


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

主题:连接sql server的代码导致整个公式都不执行

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


加好友 发短信
等级:新手上路 帖子:82 积分:0 威望:0 精华:0 注册:2020/9/21 10:56:16
连接sql server的代码导致整个公式都不执行  发帖心情 Post By:2020/9/29 0:15:13 [显示全部帖子]

我在公式里想添加连接sql server数据库做数据存储和查询,但是一加入数据库的语句,整个公式就不执行和显示任何结果了。我尝试了ODBC、DSN less这两种连接方式,都不行。我已经验证确认数据库是可以通过其他方式比如web程序连接和查询的,也就是说服务器的地址、数据库名、用户名和密码等设置都是正确的

以下是连接数据库的两种代码:
DATABASE('provider=MSDAORA;Data Source=9BC2\SQLEXPRESS;User ID=sa;Password=xxxxx;');
DBTABLE('Select top 1 * From tupe Order By ID');
cc:=DBVALUE('stkname');  
DBREADTYPE(1);
上述代码中我把provider改成Sqloledb也不行。

ODBC的连接代码:
DATABASE('Data Source=stk;UID=sa;PWD=1qaz@WSX;');
DBTABLE('Select top 1 * From tupe Order By ID');
cc:=DBVALUE('stkname');  
DBREADTYPE(1);

把连接数据库的代码去掉后公式就能够正常执行和显示结果

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


加好友 发短信
等级:新手上路 帖子:82 积分:0 威望:0 精华:0 注册:2020/9/21 10:56:16
  发帖心情 Post By:2020/9/30 4:46:37 [显示全部帖子]

连接access数据库也不行

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


加好友 发短信
等级:新手上路 帖子:82 积分:0 威望:0 精华:0 注册:2020/9/21 10:56:16
  发帖心情 Post By:2020/10/13 8:39:33 [显示全部帖子]

我现在已经开通了金字塔信达证券版专业版的模拟交易,可以使用专业版的功能了,但是发现还是不能连接sql server。以下是连接sql server的代码范例:
DATABASE('driver=9BC2\SQLEXPRESS;Server=127.0.0.1;DATABASE=stock;UID=sa;PWD=xxxxx');
DBTABLE('Select top 1 * From tupe Order By ID');
cc:=DBSTRING('stkname'); 
DBREADTYPE(1);   

只要一加入这段代码,策略就不执行了,信息窗口什么都不输出

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


加好友 发短信
等级:新手上路 帖子:82 积分:0 威望:0 精华:0 注册:2020/9/21 10:56:16
  发帖心情 Post By:2020/10/13 12:32:16 [显示全部帖子]

access数据库按照论坛帖子里的指南可以连接。

但sql server就是连接不上,而且我的sql server通过web服务是可以访问的,可以正常输出数据。
我把帖子范例中的test.mdb导入到sql server中生成了同样名称的数据库test, 里面也添加了同样名称的表SH600000, 通过web服务也可以访问,但是在金字塔里就不行

能否再帮我分析下我的连接字符串有什么问题:
DATABASE('driver={SQL Server};Server=127.0.0.1;DATABASE=test;UID=sa;PWD=xxxx);
//检索数据库表
DBTABLE('Select * From SH600000 Order By StockDate desc');
//读取STOCKCLOSE字段数据 
cc:DBVALUE('STOCKCLOSE'); 

我的sql server服务器名是:9BC2\SQLEXPRESS


[此贴子已经被作者于2020/10/13 12:33:09编辑过]

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


加好友 发短信
等级:新手上路 帖子:82 积分:0 威望:0 精华:0 注册:2020/9/21 10:56:16
  发帖心情 Post By:2020/10/13 13:31:21 [显示全部帖子]

另外连接access数据库还遇到一个问题,用范例的中的代码
DATABASE('Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\stk\test.mdb'); 
DBTABLE('Select * From SH600000 Order By StockDate desc');
cc:DBVALUE('STOCKCLOSE');  

msgout(1,numtostr(cc,2));

我只能读取和输出第一条数据 而不是完整的数据集。
我尝试用msgout(1,numtostr(cc[3],2)); 想输出第3条数据,但显示的还是第一条数据的值
怎样写才能循环输出所有的数据?

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


加好友 发短信
等级:新手上路 帖子:82 积分:0 威望:0 精华:0 注册:2020/9/21 10:56:16
  发帖心情 Post By:2020/10/13 19:34:40 [显示全部帖子]

1. sql server就是安装在本机的,所以地址用的是127.0.0.1
2. 是运行在逐k线模式下的,但是数据集只能输出第一条。

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


加好友 发短信
等级:新手上路 帖子:82 积分:0 威望:0 精华:0 注册:2020/9/21 10:56:16
  发帖心情 Post By:2020/10/14 0:13:33 [显示全部帖子]

逐k线模式下如果不指定数组,直接输出:
msgout(1,numtostr(cc,2));
结果就是只能输出一条数据啊。我需要的是要能够循环输出符合查询条件的所有数据。我最早就是按照帖子里的范例这么输出的,发现了这个问题,然后尝试指定数组下标输出,结果发现数组里每条数据的结果都是一样的。但事实上在test.mdb里是有n多条不一样的数据的。这个问题你们有自己验证一下吗?

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


加好友 发短信
等级:新手上路 帖子:82 积分:0 威望:0 精华:0 注册:2020/9/21 10:56:16
  发帖心情 Post By:2020/10/14 17:29:28 [显示全部帖子]

我把提取的数量缩小到top 10, top 5, top 20等都试了,取到的数组里的数据还是都一样的。为了做排查,我还把默认的按日期排序改成了按stockclose降序排列,但是还是没有解决问题。而且我做这几次对比时还发现了一个奇怪的现象:取top 5, top 10, top 20的数据,所取到的数据都不一样,以cc[1]为例,msgout(1,numtostr(cc[1])),会看到这三次取值都不一样。按说按股价降序排列,取到的第一个数据应该是同一条才对。详见以下三张截图中红圈标注的部分:

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

图片点击可在新窗口打开查看此主题相关图片如下:图片02a.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:图片03.png
图片点击可在新窗口打开查看
test.mdb就是你们帖子中提供的范例数据库,我没有做任何变化

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


加好友 发短信
等级:新手上路 帖子:82 积分:0 威望:0 精华:0 注册:2020/9/21 10:56:16
  发帖心情 Post By:2020/10/16 23:26:47 [显示全部帖子]

我改变默认显示顺序只是为了排查是什么原因导致只能输出查询结果数组中的第一个数据

 回到顶部