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

SQL问题

尚未結案
andy_qin
一般會員


發表:41
回覆:51
積分:18
註冊:2003-03-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-04 21:03:46 IP:218.19.xxx.xxx 未訂閱
oracle数据库! 在数据库中直接运行一段sql select 语句没任何问题, 在adoquery1的sql属性中直接加入此段sql语句,再将adoquery1.active:=true, 也可查询出结果, 可是我先 var sql1:string; ***** sql1:='selec***********'; sql:=sql ' ' 'and***********'; adoquery1.close; adoquery1.sql.clear; adoquery1.sql.add(sql1); adoquery1.open; 即是将同一个语句用以上的方法加入却没法查询, 提示"数据类型不被支持", 这是为什么?
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-05 12:52:10 IP:61.217.xxx.xxx 未訂閱
改為這樣看看 var sql1:string; ***** sql1:='selec***********'; sql1:=sql1 ' ' 'and***********'; adoquery1.close; adoquery1.sql.clear; adoquery1.sql.add(sql1); adoquery1.open; 如果你sql1這各字串裡面沒有問題那麼open就沒有問題...TRY TRY SEE
Mickey
版主


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-06 12:10:46 IP:218.32.xxx.xxx 未訂閱
厲害 chin 兄, 辨識力超強 < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=7540183&CC=168637"> 資料庫種類繁多, 記得先說用啥資料庫喔
andy_qin
一般會員


發表:41
回覆:51
積分:18
註冊:2003-03-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-04-07 10:40:56 IP:218.19.xxx.xxx 未訂閱
原来的sql语句没问题,只是在这里提问时写错!
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-04-07 10:57:42 IP:211.74.xxx.xxx 未訂閱
這句看不懂...< >< >
引言: 来 sql语ぷ没问题,び ダ这 矗问时写错!
發表人 - chih 於 2003/04/07 10:58:23
andy_qin
一般會員


發表:41
回覆:51
積分:18
註冊:2003-03-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-04-07 11:22:10 IP:218.19.xxx.xxx 未訂閱
我的sql语句没问题,只是在这里写错了!
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-04-07 11:39:39 IP:211.74.xxx.xxx 未訂閱
那可以Run了嗎??
引言: 我的sql语句没问题,只是在这里写错了!
andy_qin
一般會員


發表:41
回覆:51
積分:18
註冊:2003-03-06

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-04-07 14:45:27 IP:218.19.xxx.xxx 未訂閱
运行的时候说"数据类型不被支持" 如果我将这段SQL 语句直接加入到adoquery1.sql 的属性中, 再将active:=true;这样查询没问题, 如果用我提问题的方法加入却是不能运行! 为何?
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-04-07 14:53:19 IP:211.74.xxx.xxx 未訂閱
問題還是出在這裡, sql1:='selec***********'; sql1:=sql1 ' ' 'and***********'; 你可以把整段完整的code貼上來嗎??
引言: 运行的时候说"数据类型不被支持" 如果我将这段SQL 语句直接加入到adoquery1.sql 的属性中, 再将active:=true;这样查询没问题, 如果用我提问题的方法加入却是不能运行! 为何?
andy_qin
一般會員


發表:41
回覆:51
積分:18
註冊:2003-03-06

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-04-08 08:11:29 IP:218.19.xxx.xxx 未訂閱
procedure TForm3.FormShow(Sender: TObject); begin sql1:='select sas.rundate,sas.art_no,a.descr,sas.sales,sas.sales_amnt,a.dms,a.stock,a.mmail_no,a.sell_pr*(1 tax.vat_perc/100.00),a.on_order'; sql1:=sql1 ' ' 'from article a,st_art_sales_daily@hombs sas,tax'; sql1:=sql1 ' ' 'where sas.art_no=a.art_no and sas.store_no=4 and a.vat_no=tax.vat_no' ' '; sql1:=sql1 ' ' 'and to_char(sas.rundate,' '''YYYYMMDD''' ')>=' formatdatetime('YYYYMMDD',datetimepicker1.date) ' ' 'and to_char(sas.rundate,' '''YYYYMMDD''' ')<=' formatdatetime('YYYYMMDD',datetimepicker1.date) ' '; sql5:='order by sas.rundate'; end; procedure TForm3.epEfRndBtn1Click(Sender: TObject); begin adoconnection1.Connected:=false; adoconnection1.Connected:=true; if flatedit1.Text<>'' then sql2:='and sas.art_no=' flatedit1.Text ' '; if flatedit2.Text<>'' then sql3:='and a.suppl_no=' flatedit2.Text ' '; if flatedit3.Text<>'' then sql4:='and a.art_grp_no=' flatedit3.Text ' '; adoquery1.Close; adoquery1.SQL.Clear; adoquery1.SQL.Add(sql1 sql2 sql3 sql4 sql5); adoquery1.Open; "数据类型不被支持"
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-04-08 08:31:25 IP:218.16.xxx.xxx 未訂閱
1. formatdatetime 得出的結果也要用 ' 括住丫 : sql1:=sql1 ' ' 'and to_char(sas.rundate,''YYYYMMDD'')>=''' formatdatetime('YYYYMMDD',datetimepicker1.date) ''' and to_char(sas.rundate,''YYYYMMDD'')<=''' formatdatetime('YYYYMMDD',datetimepicker1.date) ''' '; 2. 你這句還是放在 FormShow, 那還不是每次都是昨天嗎? 應像 SQL2,3,4 放在 TForm3.epEfRndBtn1Click 丫
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-04-08 17:41:57 IP:61.216.xxx.xxx 未訂閱
這一句好像有點問題 sql1:=sql1 ' ' 'from article a,st_art_sales_daily@hombs sas,tax'; 請改成你的Table, st_art_sales_daily@hombs 是你的TableName嗎?? 發表人 - chih 於 2003/04/08 17:43:25
andy_qin
一般會員


發表:41
回覆:51
積分:18
註冊:2003-03-06

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-04-09 08:05:54 IP:218.19.xxx.xxx 未訂閱
对,是我的一个远程数据库,SQL应该没问题, 我已测试过,我将SQL 语句直接加入adoquery1.sql的属性中, 再将active:=true;这样可以查询结果.
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-04-09 08:18:15 IP:211.74.xxx.xxx 未訂閱
這樣的話.. procedure TForm3.epEfRndBtn1Click(Sender: TObject); begin adoconnection1.Connected:=false; adoconnection1.Connected:=true; if flatedit1.Text<>'' then sql2:='and sas.art_no=' #39 flatedit1.Text #39 ' '; if flatedit2.Text<>'' then sql3:='and a.suppl_no=' #39 flatedit2.Text #39 ' '; if flatedit3.Text<>'' then sql4:='and a.art_grp_no=' #39 flatedit3.Text #39 ' '; adoquery1.Close; adoquery1.SQL.Clear; adoquery1.SQL.Add(sql1 sql2 sql3 sql4 sql5); adoquery1.SQL.SAVETOFILE('C:\CHKSQL.txt');//加上這一句 adoquery1.Open; 然後你將該txt的語法拿到SQL PLUS RUN看看
引言: 对,是我的一个远程数据库,SQL应该没问题, 我已测试过,我将SQL 语句直接加入adoquery1.sql的属性中, 再将active:=true;这样可以查询结果.
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-04-09 09:24:06 IP:218.16.xxx.xxx 未訂閱
你試過我說的括住 formatdatetime('YYYYMMDD',datetimepicker1.date) 那句了嗎??? "数据类型不被支持" 的原因是你若不括住,你的SQL 會變成 : "...and to_char(sas.rundate,'YYYYMMDD') >= 20030408 and to_char(sas.rundate,'YYYYMMDD') <= 20030409 ' 當然类型不被支持了 括住後 "...and to_char(sas.rundate,'YYYYMMDD') >= '20030408' and to_char(sas.rundate,'YYYYMMDD') <= '20030409' ' 應沒這個問題
Ktop_Robot
站務副站長


發表:0
回覆:3511
積分:0
註冊:2007-04-17

發送簡訊給我
#16 引用回覆 回覆 發表時間:2007-04-30 13:45:18 IP:000.000.xxx.xxx 未訂閱
提問者您好:


以上回應是否已得到滿意的答覆?


若已得到滿意的答覆,請在一週內結案,否則請在一週內回覆還有什麼未盡事宜,不然,
將由版主(尚無版主之區域將由副站長或站長)自由心證,選擇較合適之解答予以結案處理,
被選上之答題者同樣會有加分獎勵同時發問者將受到扣 1 分的處分。不便之處,請見諒。


有問有答有結案,才能有良性的互動,良好的討論環境需要大家共同維護,感謝您的配合。

------
我是機器人,我不接受簡訊.
系統時間:2024-04-19 15:37:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!