線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1510
推到 Plurk!
推到 Facebook!

資料庫查詢錯誤急急急

 
wangwb_1027
一般會員


發表:6
回覆:13
積分:3
註冊:2006-07-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-02-09 10:40:02 IP:219.132.xxx.xxx 訂閱
哪位大哥幫我看看小弟在運行程式的時候出現如下錯誤:
Invalid use of keyword.
Token:varchar(30),a.p_qty)
Line Number:1.
在SQL中執行又是OK的,這一句不知道哪裡錯了"convert(varchar(30),a.p_qty) as p_qty"
代碼如下:
DATAM.QR_MCMRTNIN.Close;
DATAM.QR_MCMRTNIN.SQL.Clear;
DATAM.QR_MCMRTNIN.SQL.Add('selecta.op_no,a.op_date,b.job_no,c.st_no,d.inv_no,convert(varchar(30),a.p_qty) as p_qty');
DATAM.QR_MCMRTNIN.SQL.Add('from mtltran a');
DATAM.QR_MCMRTNIN.SQL.Add('left join wipjob b on a.orderm_id=b.job_id');
DATAM.QR_MCMRTNIN.SQL.Add('left join mtlstorage c on a.tovst_id=c.st_id');
DATAM.QR_MCMRTNIN.SQL.Add('left join mtlinv d on a.inv_id=d.inv_id');
DATAM.QR_MCMRTNIN.SQL.Add('where a.state=1 and a.trantype_id="mcmrtnin"');
DATAM.QR_MCMRTNIN.SQL.Add('and a.OP_DATE BETWEEN :DAT1 AND :DAT2');
DATAM.QR_MCMRTNIN.SQL.Add('order by a.op_no');
DATAM.QR_MCMRTNIN.ParamByName('DAT1').AsDate:=DATETIMEPICKER1.Date;
DATAM.QR_MCMRTNIN.ParamByName('DAT2').AsDate:=DATETIMEPICKER2.Date;
DATAM.QR_MCMRTNIN.Prepare;
DATAM.QR_MCMRTNIN.Open;
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-02-09 11:10:15 IP:60.248.xxx.xxx 未訂閱
改成Cast(p_qty as VarChar(30))試試
wangwb_1027
一般會員


發表:6
回覆:13
積分:3
註冊:2006-07-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-02-09 11:34:56 IP:61.66.xxx.xxx 訂閱
修改後執行出現如下錯誤:
Invalid use of keyword.
Token:from
Line Number:2.
===================引 用 文 章===================
改成Cast(p_qty as VarChar(30))試試
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-02-09 12:10:12 IP:60.248.xxx.xxx 未訂閱
qty之後from之前需加一個空白
as p_qty');
DATAM.QR_MCMRTNIN.SQL.Add(
'from mtltran a');
wangwb_1027
一般會員


發表:6
回覆:13
積分:3
註冊:2006-07-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-02-09 14:12:03 IP:219.132.xxx.xxx 訂閱
我改了還是不行,奇怪了,我用另一個數據庫連接方式查詢資料庫就沒有問題。用DATA Moudle就有問題。
===================引 用 文 章===================
qty之後from之前需加一個空白
as p_qty');
DATAM.QR_MCMRTNIN.SQL.Add(
'from mtltran a');
chuang7287
初階會員


發表:1
回覆:20
積分:29
註冊:2002-10-22

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-02-09 15:19:36 IP:61.228.xxx.xxx 訂閱
我不知道是不是你筆誤?
DATAM.QR_MCMRTNIN.SQL.Add('selecta.op_no,a.op_date,b.job_no,c.st_no,d.inv_no,convert(varchar(30),a.p_qty) as p_qty');

請改為

DATAM.QR_MCMRTNIN.SQL.Add('select a.op_no,a.op_date,b.job_no,c.st_no,d.inv_no,convert(varchar(30),a.p_qty) as p_qty');
Select 與 a.op_no少個空白

------
結案=動力
高手等等我 .... 追隨高手永不懈怠!!
wangwb_1027
一般會員


發表:6
回覆:13
積分:3
註冊:2006-07-06

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-02-09 19:44:24 IP:219.130.xxx.xxx 訂閱
這些我都檢查過了確定沒有問題。convert(varchar(30),a.p_qty) as p_qty');是這一部分出了問題可能是類型設置錯了。我也不知道要怎樣設置。急求高手解答!!!

===================引 用 文 章===================
我不知道是不是你筆誤?
DATAM.QR_MCMRTNIN.SQL.Add('selecta.op_no,a.op_date,b.job_no,c.st_no,d.inv_no,convert(varchar(30),a.p_qty) as p_qty');

請改為

DATAM.QR_MCMRTNIN.SQL.Add('select a.op_no,a.op_date,b.job_no,c.st_no,d.inv_no,convert(varchar(30),a.p_qty) as p_qty');
Select 與 a.op_no少個空白

chuang7287
初階會員


發表:1
回覆:20
積分:29
註冊:2002-10-22

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-02-09 21:13:15 IP:210.61.xxx.xxx 訂閱
說實在的要是真的查不出原因,
何不換個角度處理(雖然有點不求甚解!)?
你真正的目的不就是要將a.p_qty轉成文字型態,對吧!
作法:
1.放棄使用convert(varchar(30),a.p_qty) as p_qty直接使用a.p_qty
2.在程式中當你有要使用這個欄位時使用 DATAM.FieldByName('p_qty').AsString
一樣達到你要的目的

除非你有其他用途?
------
結案=動力
高手等等我 .... 追隨高手永不懈怠!!
wangwb_1027
一般會員


發表:6
回覆:13
積分:3
註冊:2006-07-06

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-02-10 08:06:16 IP:219.130.xxx.xxx 訂閱
我也有試過直接使用a.p_qty,不過運行的時候也有錯誤。謝謝這位大哥。我再想想其它辦法吧。
===================引 用 文 章===================
說實在的要是真的查不出原因,
何不換個角度處理(雖然有點不求甚解!)?
你真正的目的不就是要將a.p_qty轉成文字型態,對吧!
作法:
1.放棄使用convert(varchar(30),a.p_qty) as p_qty直接使用a.p_qty
2.在程式中當你有要使用這個欄位時使用 DATAM.FieldByName('p_qty').AsString
一樣達到你要的目的

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