全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:982
推到 Plurk!
推到 Facebook!

将sql 中的print'x'在delphi中show出来

尚未結案
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-09 14:41:53 IP:218.72.xxx.xxx 未訂閱
各位大大,又有事要麻烦各位了: 我有如下sql server的code: if (select sum(价格)from a公司)>110 print '大于110元' else print '小于110元' 在sql中运行正常,但我把它用到delphi中时(如下)就不能显示print部分的提示了,请教该如何修改? adoquery1.close; adoquery1.sql.clear; adoquery1.sql.add('if (select sum(价格)from a公司)>110); adoquery1.sql.add('print ' '''' '大于110元' ''''); adoquery1.sql.add('else'); adoquery1.sql.add('print ' '''' '小于110元' ''''); adoquery1.execsql; adoquery1.close; adoquery1.sql.clear; Thank you very much!
yachanga
資深會員


發表:24
回覆:335
積分:296
註冊:2003-09-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-09 15:01:40 IP:211.74.xxx.xxx 未訂閱
想法如下 希望對你有幫助     adoquery1.close; adoquery1.sql.clear; adoquery1.sql.add('select sum(价格) total from a公司'); adoquery1.open; if adoquery1.fieldbyName('total').asInteger>110 then  showmeessage('大於110元') else  showmeessage('小於110元');    ~悠遊法國號~
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-09 15:35:05 IP:218.72.xxx.xxx 未訂閱
引言: 想法如下 希望對你有幫助 adoquery1.close; adoquery1.sql.clear; adoquery1.sql.add('select sum(价格) total from a公司'); adoquery1.open; if adoquery1.fieldbyName('total').asInteger>110 then showmeessage('大於110元') else showmeessage('小於110元'); ~悠遊法國號~
实在对不起,我刚才的code 有误,应加上事务功能,再求教各位大大: begin tran update a公司 set 价格=价格*2 if (select sum(价格)from a公司)>110 print '大于110元' else print '小于110元' if @@error>0 rollback tran else commit tran delphi code如下: adoquery1.close; adoquery1.sql.clear; adoquery1.sql.add('update a公司'); adoquery1.sql.add('set 价格=价格*2'); adoquery1.sql.add('if (select sum(价格)from a公司)>110); adoquery1.sql.add('print ' '''' '大于110元' ''''); adoquery1.sql.add('else'); adoquery1.sql.add('print ' '''' '小于110元' ''''); adoquery1.sql.add('if @@error>0'); adoquery1.sql.add('rollback tran'); adoquery1.sql.add('else'); adoquery1.sql.add('commit tran'); adoquery1.execsql;
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-09 18:13:54 IP:203.95.xxx.xxx 未訂閱
HI, 這樣的話, 建議你將 print 改為 select , 做為回傳的結果, 如:    
if xx then
  select 'ok' as result
else
  select 'fail' as result
然後在 delphi 的 code 中, 使用 ADOQuery1.Open, 帶回回傳的結果集, 再利用 ADOQuery1.FieldByName('result').AsString 來作判斷! 發表人 - timhuang 於 2004/04/09 18:18:33
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-10 22:38:06 IP:218.32.xxx.xxx 未訂閱
luowy651 你好: SQL之"raiserror" 指令, 可將 Message Raise 到前端, 不過依你的需求, 好像不太恰當, 因為不是 Error. 姑且參考看看吧. http://delphi.ktop.com.tw/topic.php?TOPIC_ID=47865
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-11 10:31:11 IP:61.164.xxx.xxx 未訂閱
谢谢Mickey兄,姑且把raiserror作为一个加强型的print吧,方法很简单,缺点是前端会除显示内容外,还会显示一个error图标,还有前端该message框上的caption中show出的form名称是Application.title,不能修改,不知有否改变的方法。 timhuang大大的方法也是可行的。只是小弟分数不够了。 再次谢谢以上各位大大的回应,小弟不胜感谢! 發表人 - luowy651 於 2004/04/11 11:04:11 發表人 - luowy651 於 2004/04/11 11:08:03
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-11 14:47:11 IP:218.32.xxx.xxx 未訂閱
如果不想交給 Exception 去 raise Message, 可以用 try...except 例如: try // Exec SQL except on E:Exception do showmessage(E.Message); end;
系統時間:2024-05-18 16:01:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!