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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → [求助]如何成功将数据写入数据库?

   

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


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

主题:[求助]如何成功将数据写入数据库?

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


加好友 发短信
等级:新手上路 帖子:16 积分:269 威望:0 精华:0 注册:2010/3/23 22:48:09
[求助]如何成功将数据写入数据库?  发帖心情 Post By:2010/8/10 13:22:58 [只看该作者]

DATABASE('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Test.mdb');
DBEXECUTE('insert into RB(stockclose) values(close)');

没办法写入数据,错误在哪,请教!
(数据库都按要求建好得)

 

请版主给予一个具体可用的例子,感谢

[此贴子已经被作者于2010-8-10 13:23:45编辑过]

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


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

DBEXECUTE('insert into RB(stockclose) values(close)');

 

这里的close是字符串变量,无论哪个数据库都不会认得

 

DATABASE('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Test.mdb');
DBEXECUTE('insert into RB(stockclose) values('&NUMTOSTR(close,2)&')');

 

再试


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


加好友 发短信
等级:新手上路 帖子:16 积分:269 威望:0 精华:0 注册:2010/3/23 22:48:09
  发帖心情 Post By:2010/8/10 17:07:38 [只看该作者]

没搞明白  INSERT INTO 语句为:

INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

 

我将stockclose定义数据类型为:数字 ; close 是我要写入的收盘价也应该是:数字

 

如果使用NUMTOSTR(close,2) 不就是字符值?

[此贴子已经被作者于2010-8-10 17:08:42编辑过]

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


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

建议你先补习基础的编程语言的基本语法结构,字符串和变量的主要区别。

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


加好友 发短信
等级:新手上路 帖子:16 积分:269 威望:0 精华:0 注册:2010/3/23 22:48:09
  发帖心情 Post By:2010/8/11 9:12:20 [只看该作者]

加载公式提示 : 没有为命令对象设置命令。


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


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

DATABASE('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Test.mdb');

DBTABLE2('Select * From ');
DBEXECUTE('insert into RB(stockclose) values('&NUMTOSTR(close,2)&')');

 

暂时增加中间一列看看是否可以正常工作了


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


加好友 发短信
等级:新手上路 帖子:16 积分:269 威望:0 精华:0 注册:2010/3/23 22:48:09
  发帖心情 Post By:2010/8/12 14:17:57 [只看该作者]

增加中间一列后,可成功写入数据;

但写入数据的结果与想实现的效果有较大出入;

 

在实时的接收行情中加载公式,软件基本上就不可能运行甚至崩溃;

打开数据库查看,里面是有数据,而且当相多,细心看会发现有周期重复的数据;

 

个人的想法是将当前周期的数值写入数据库,下一个周期的数值增加入下一条记录;

但看到的结果却是每一个周期,语句就将从第一个周期至当前周期的每个数值一个个写入数据库,然后下一个周期又重复一次,是否就这个原因导致运行不了崩溃?

 

如果只要实现我原有想法,只将当前周期记录写入,过往的记录不再重复写入应该如何编写?

 


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


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

你这是想抓取行情数据,目前来看只能用VBA来实现

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


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

有一种办法可以不取过去的数据

加上语句
DATABASE('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Test.mdb');
DBTABLE2('Select * From RB');
If Not(IsLastBar) Then exit;
DBEXECUTE('insert into RB(stockclose) values('&NUMTOSTR(close,2)&')');


这一语句的意思是只考虑最后一个数据BAR

但是实验下来的效果不理想,即使是最后一个bar,金字塔也要操作多次,估计了下大概2秒钟一次。如果是等时间间隔(需admin确认),这种方法可能可以用来采集些盘口数据。

如果想对应一根K线,仅仅采集一次数据,如何实现,方法如下
1.在数据表中加多个数据项,cnt,设定为索引不重复
2.改写公式DBEXECUTE('insert into RB(cnt,stockclose) values('&NUMTOSTR(barpos-1,0)&','&NUMTOSTR(ref(close,1),5)&')');

利用索引不重复的机理,使每个bar的数据仅写入表一次。注意写入数据要使用ref(...,1),由于当前的bar的数据没有完全形成,只能记录上一根bar的数据


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


加好友 发短信
等级:新手上路 帖子:16 积分:269 威望:0 精华:0 注册:2010/3/23 22:48:09
  发帖心情 Post By:2010/8/13 9:18:38 [只看该作者]

为了不使行情软件负担过重,影响数据的接收,已将工作迁到VBA上去了;

 

但遇到一个问题:使用RegReportNotify触发事件,执行写入数据的动作; 

查看数据库,发现同一条记录有不定数量的重复记录数(大概1~5条),这怎会事?


 回到顶部
总数 19 1 2 下一页