以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 金字塔软件问题提交 (http://weistock.com/bbs/list.asp?boardid=2) ---- 连接sql server的代码导致整个公式都不执行 (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=182397) |
-- 作者:popypopy -- 发布时间:2020/9/29 0:15:13 -- 连接sql server的代码导致整个公式都不执行 我在公式里想添加连接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); 把连接数据库的代码去掉后公式就能够正常执行和显示结果 |
-- 作者:无为剑 -- 发布时间:2020/9/29 8:51:47 -- 数据库功能需要收费版才能支持,另外你试试改到Access数据库看看呢?看看是都不行还是就只是Sql server不行 |
-- 作者:popypopy -- 发布时间:2020/9/30 4:46:37 -- 连接access数据库也不行 |
-- 作者:popypopy -- 发布时间: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); 只要一加入这段代码,策略就不执行了,信息窗口什么都不输出
|
-- 作者:无为剑 -- 发布时间:2020/10/13 8:48:54 -- 光是上面的信息我们无法帮你看到问题的,因为我们也不知道你的数据库信息和表信息是否有异常,你可以看一下我们提供的数据库ACCESS范例,完全按照范例上的运行看看,逐步排查问题。 利用数据库扩充金字塔的数据存放及分析能力 http://www.weistock.com/bbs/dispbbs.asp?boardid=5&Id=401
|
-- 作者:popypopy -- 发布时间: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 -- 发布时间: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条数据,但显示的还是第一条数据的值 怎样写才能循环输出所有的数据?
|
-- 作者:无为剑 -- 发布时间:2020/10/13 17:13:04 -- 1,Server=127.0.0.1 这个是表示本地的服务器数据库连接,你测试时是在数据库的服务器上吗?否则的话这里你要写上SERVER的服务器地址。 2,改用逐K线运行模式输出整个数据集
|
-- 作者:popypopy -- 发布时间:2020/10/13 19:34:40 -- 1. sql server就是安装在本机的,所以地址用的是127.0.0.1 2. 是运行在逐k线模式下的,但是数据集只能输出第一条。
|
-- 作者:无为剑 -- 发布时间:2020/10/13 21:11:16 -- 1, 这个问题我们就无法帮你解决了,你可以使用其他工具使用ADO调用的方式看看能否正常连接你的SQL服务器。比如VB,VC等开发工具 2,逐k线模式下,你直接这样输出,不要指定数组 msgout(1,numtostr(cc,2)); [此贴子已经被作者于2020/10/13 21:11:37编辑过]
|