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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 在符合if条件下才进行数据库插入语句,为什么不符合if条件,仍会执行该数据库相关语句?

   

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


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

主题:在符合if条件下才进行数据库插入语句,为什么不符合if条件,仍会执行该数据库相关语句?

美女呀,离线,留言给我吧!
淡月映梅
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:274 积分:956 威望:0 精华:0 注册:2012/11/27 10:33:50
在符合if条件下才进行数据库插入语句,为什么不符合if条件,仍会执行该数据库相关语句?  发帖心情 Post By:2013/4/7 17:39:38 [只看该作者]

                      DATABASE('driver=SQL Server;Server=192.168.0.105;DATABASE=hkysignal;UID=sa;PWD=123');
                      update_sql:='update signal set ordertime=' & numtostr(time,0) & ',orderprice=' & numtostr(c,0) & ' where ID=(select MAX(id) from signal)';
                       if c>5555 then 
                          begin 
                             dbtable('insert into signal(stockdate,direction,operation) values(getdate(),"S","buyshort")');
                             dbexecute(update_sql);
                          end;  

分条件进行插入语句,为什么上面的句子明明价格不会大方于5555,仍会执行插入语句 ?

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


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/4/7 20:48:46 [只看该作者]

if c>5555 then 
                          begin 
                             dbtable('insert into signal(stockdate,direction,operation) values(getdate(),"S","buyshort")');
                             dbexecute(update_sql);
                          end;  
在这里加上调试语句后看看为什么


金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
美女呀,离线,留言给我吧!
淡月映梅
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:274 积分:956 威望:0 精华:0 注册:2012/11/27 10:33:50
  发帖心情 Post By:2013/4/8 18:21:11 [只看该作者]

??什么意思呀?上面的语句仍是有进行插入数据库的。
[此贴子已经被作者于2013-4-8 18:22:10编辑过]

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


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/4/8 22:00:46 [只看该作者]

加上日志不会吗?

日志上会清楚的告诉你,为什么你提出这个帖子的疑问。

我们也不是神仙啊



金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
rushtaotao
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 czt
等级:蜘蛛侠 帖子:1445 积分:6114 威望:0 精华:3 注册:2012/1/16 10:31:19
  发帖心情 Post By:2013/4/8 22:36:57 [只看该作者]

if c>5555 then 
                          begin 
                             dbtable('insert into signal(stockdate,direction,operation) values(getdate(),"S","buyshort")');
                             dbexecute(update_sql);
                          end;



推荐 c>5555 写成cond 在图标上输出是0还是1 来判断条件是否达成


在  dbtable('insert into signal(stockdate,direction,operation) values(getdate(),"S","buyshort")');这句话前面和后面分别加上输出(可以输出日志,也可以通过对变量进行赋值 来判断 程序到底走到哪里了 情况是怎么样)  这个是编程的一个调试手段 只有调试手段才能告诉你 你的程序问题在哪里哦
                         
[此贴子已经被作者于2013-4-8 22:38:09编辑过]

 回到顶部
美女呀,离线,留言给我吧!
淡月映梅
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:274 积分:956 威望:0 精华:0 注册:2012/11/27 10:33:50
  发帖心情 Post By:2013/4/9 12:00:46 [只看该作者]

图片点击可在新窗口打开查看,可能是我用dbtable的原因吧,像下面的语句就不会进行插入数据库动作
cond:c>5555;
 DATABASE('driver=SQL Server;Server=192.168.0.105;DATABASE=hkysignal;UID=sa;PWD=123');
 if cond then 
 begin 
 debugfile('d:\temp.txt','testvalue:= %2f',cond);
 dbexecute('insert into signal(stockdate) values(getdate())');
 debugfile('d:\temp.txt','testvalue2:= %2f',cond);
 end;
用dbtable的原因是它能实现字符串的数据库插入动作。而dbexecute不行

 回到顶部