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,仍会执行插入语句 ?
if c>5555 then
begin
dbtable('insert into signal(stockdate,direction,operation) values(getdate(),"S","buyshort")');
dbexecute(update_sql);
end;
在这里加上调试语句后看看为什么
??什么意思呀?上面的语句仍是有进行插入数据库的。
[此贴子已经被作者于2013-4-8 18:22:10编辑过]
加上日志不会吗?
日志上会清楚的告诉你,为什么你提出这个帖子的疑问。
我们也不是神仙啊
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编辑过]

,可能是我用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不行