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

資料庫回傳錯誤「command text can not return a result set」

缺席
macchen
初階會員


發表:66
回覆:102
積分:33
註冊:2006-07-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-08-11 10:30:16 IP:211.75.xxx.xxx 訂閱
請問各位高手一下,就是我在client端這邊寫了一個sql語法,透過tadoquery(寫在中間層,有連接tdatasetprovider),然後會到資料庫中去查詢一個記錄並將結果回傳,所以我下的sql語法是使用select的方式將結果回傳,但是沒回傳值在使用select的語法不是不會有問題嗎?但為何我在執行這段sql語法時會常常發生回傳「command text can not return a result set」,我是使用try…except的方式抓到的,請問各位有沒有什麼地方是我寫錯了,或是請幫忙指導一下,謝謝各位。

delphi 7
ms sql 2000
win xp
以上為操作環境
------
DELPHI初學者
salo0610
高階會員


發表:42
回覆:120
積分:107
註冊:2003-02-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-08-11 10:37:02 IP:220.132.xxx.xxx 未訂閱
macchen
初階會員


發表:66
回覆:102
積分:33
註冊:2006-07-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-08-11 10:41:46 IP:211.75.xxx.xxx 訂閱
你好,謝謝你的回覆,我之前有在google上找過這個問題,但是大家的問題點好像都是在執行「新增/刪除/更新」的sql語法,而且是使用open,不是使用execute的方式執行該段sql語法才會回傳這個錯誤訊息,但是我是只有使用select,所以使用open是不會有問題的,所以想請問一下,是不是我那邊設定的方式有問題呢?謝謝你。


===================引 用 salo0610 文 章===================

是不是跟以下的問題一樣???

連接 Access 資料新增,刪除的問題
http://delphi.ktop.com.tw/board.php?cid=168&fid=918&tid=34008
------
DELPHI初學者
salo0610
高階會員


發表:42
回覆:120
積分:107
註冊:2003-02-18

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-08-11 10:48:36 IP:220.132.xxx.xxx 未訂閱

那你可以提供程式,讓我試一下嗎??

===================引 用 macchen 文 章===================
你好,謝謝你的回覆,我之前有在google上找過這個問題,但是大家的問題點好像都是在執行「新增/刪除/更新」的sql語法,而且是使用open,不是使用execute的方式執行該段sql語法才會回傳這個錯誤訊息,但是我是只有使用select,所以使用open是不會有問題的,所以想請問一下,是不是我那邊設定的方式有問題呢?謝謝你。


===================引 用 salo0610 文 章===================

是不是跟以下的問題一樣???

連接 Access 資料新增,刪除的問題
http://delphi.ktop.com.tw/board.php?cid=168&fid=918&tid=34008

macchen
初階會員


發表:66
回覆:102
積分:33
註冊:2006-07-07

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-08-11 11:03:06 IP:211.75.xxx.xxx 訂閱
你好,程式的片段當然是沒問題,但是資料庫的部份可能要請你用模擬的了,因為我自已測試是是無法試出這個問題,是客戶在使用時告知的,並且這個限象不是固定發生的,所以很難抓到問題點,所以才會到這邊請各位大大幫幫忙,畢竟我的delphi的了解還不是很足夠,因為公司的關係,所以只能給片段的程式碼,大致說明一下程式的寫法,請見諒:
client端:
使用一個clientdatase(cds_queryapple)t連結到mts
try
CDS_Queryapple.close;
ICTsock.AppServer.Queryapple(APPLENAME); //QueryAPPLE是到APPLE的db中去找尋
CDS_Queryapple.open;
except
on e: exception do
showmessage('lll ' e.Message);
end;
MTS,使用TADOQUERY加上一個TDATASETPROVIDER(都是採用預設),而sql語法是直接寫在tadoquery內參數的sql內,
內容為「Select applename from allapple.dbo.apple
where
applename = ''
Order by fdate desc
」:
procedure TMTS_SAPPLE.Queryapple(const applename: WideString);
begin
ADOQ_apple.Close;
ADOQ_apple.SQL[2] := 'applename = ' quotedstr(applename);
end;

===================引 用 salo0610 文 章===================

那你可以提供程式,讓我試一下嗎??

===================引 用 macchen 文 章===================
你好,謝謝你的回覆,我之前有在google上找過這個問題,但是大家的問題點好像都是在執行「新增/刪除/更新」的sql語法,而且是使用open,不是使用execute的方式執行該段sql語法才會回傳這個錯誤訊息,但是我是只有使用select,所以使用open是不會有問題的,所以想請問一下,是不是我那邊設定的方式有問題呢?謝謝你。


===================引 用 salo0610 文 章===================

是不是跟以下的問題一樣???

連接 Access 資料新增,刪除的問題
http://delphi.ktop.com.tw/board.php?cid=168&fid=918&tid=34008

------
DELPHI初學者
salo0610
高階會員


發表:42
回覆:120
積分:107
註冊:2003-02-18

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-08-11 11:49:22 IP:220.132.xxx.xxx 未訂閱
呵!!

如你說的!!

"因為我自已測試是是無法試出這個問題,是客戶在使用時告知的,並且這個限象不是固定發生的,所以很難抓到問題點"

不是固定發生的,所以我也無法用試的幫你找出問題!! 能力不足也無法從你提供的 code 看出端泥!!! (真拍細!!!)

我想!!!

是不是在可以在 "on e: exception do" 時, show 出當時 ADOQ_apple 的 SQL 來找出問題呢???
===================引 用 macchen 文 章===================
你好,程式的片段當然是沒問題,但是資料庫的部份可能要請你用模擬的了,因為我自已測試是是無法試出這個問題,是客戶在使用時告知的,並且這個限象不是固定發生的,所以很難抓到問題點,所以才會到這邊請各位大大幫幫忙,畢竟我的delphi的了解還不是很足夠,因為公司的關係,所以只能給片段的程式碼,大致說明一下程式的寫法,請見諒:
client端:
使用一個clientdatase(cds_queryapple)t連結到mts
try
CDS_Queryapple.close;
ICTsock.AppServer.Queryapple(APPLENAME); //QueryAPPLE是到APPLE的db中去找尋
CDS_Queryapple.open;
except
on e: exception do
showmessage('lll ' e.Message);
end;
MTS,使用TADOQUERY加上一個TDATASETPROVIDER(都是採用預設),而sql語法是直接寫在tadoquery內參數的sql內,
內容為「Select applename from allapple.dbo.apple
where
applename = ''
Order by fdate desc
」:
procedure TMTS_SAPPLE.Queryapple(const applename: WideString);
begin
ADOQ_apple.Close;
ADOQ_apple.SQL[2] := 'applename = ' quotedstr(applename);
end;

===================引 用 salo0610 文 章===================

那你可以提供程式,讓我試一下嗎??

===================引 用 macchen 文 章===================
你好,謝謝你的回覆,我之前有在google上找過這個問題,但是大家的問題點好像都是在執行「新增/刪除/更新」的sql語法,而且是使用open,不是使用execute的方式執行該段sql語法才會回傳這個錯誤訊息,但是我是只有使用select,所以使用open是不會有問題的,所以想請問一下,是不是我那邊設定的方式有問題呢?謝謝你。


===================引 用 salo0610 文 章===================

是不是跟以下的問題一樣???

連接 Access 資料新增,刪除的問題
http://delphi.ktop.com.tw/board.php?cid=168&fid=918&tid=34008

macchen
初階會員


發表:66
回覆:102
積分:33
註冊:2006-07-07

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-08-11 13:05:52 IP:211.75.xxx.xxx 訂閱

謝謝你的回覆,但你指的「是不是在可以在 "on e: exception do" 時, show 出當時 ADOQ_apple 的 SQL 來找出問題呢???」,這是指什麼意思呢?是client這邊嗎,還是指mts這邊的呢?因為client端這邊我已經有用try了,所以才會有此訊息出現,但是該如何解決呢?還是有什麼地方可以設定讓此訊息不會出現(當然不是指用try的方式^^),謝謝。

===================引 用 salo0610 文 章===================
呵!!

如你說的!!

"因為我自已測試是是無法試出這個問題,是客戶在使用時告知的,並且這個限象不是固定發生的,所以很難抓到問題點"

不是固定發生的,所以我也無法用試的幫你找出問題!! 能力不足也無法從你提供的 code 看出端泥!!! (真拍細!!!)

我想!!!

是不是在可以在 "on e: exception do" 時, show 出當時 ADOQ_apple 的 SQL 來找出問題呢???
------
DELPHI初學者
st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-08-12 13:45:32 IP:122.116.xxx.xxx 訂閱
您好,
我沒用過您這樣的語法, 不知道您有沒有試過把
procedure TMTS_SAPPLE.Queryapple(const applename: WideString);
begin
ADOQ_apple.Close;
ADOQ_apple.SQL[2] := 'applename = ' quotedstr(applename);
end;
中的 const 拿掉會如何 ?
------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
salo0610
高階會員


發表:42
回覆:120
積分:107
註冊:2003-02-18

發送簡訊給我
#9 引用回覆 回覆 發表時間:2008-08-13 09:08:45 IP:220.132.xxx.xxx 未訂閱

你好:

如你所說:"因為client端這邊我已經有用try了,所以才會有此訊息出現,但是該如何解決呢?"

我的意思是當發生例外時,順便把當時所使用的 sql 語法,也 show 出來看看,確定當時的sql 語法是沒問題的 !!!

===================引 用 macchen 文 章===================

謝謝你的回覆,但你指的「是不是在可以在 "on e: exception do" 時, show 出當時 ADOQ_apple 的 SQL 來找出問題呢???」,
這是指什麼意思呢?是client這邊嗎,還是指mts這邊的呢?因為client端這邊我已經有用try了,
所以才會有此訊息出現,但是該如何解決呢?還是有什麼地方可以設定讓此訊息不會出現(當然不是指用try的方式^^),謝謝。

=======================================================
macchen
初階會員


發表:66
回覆:102
積分:33
註冊:2006-07-07

發送簡訊給我
#10 引用回覆 回覆 發表時間:2008-08-13 10:33:29 IP:211.75.xxx.xxx 訂閱
你好,關於你說的加上const,這個應該影響不大吧(我是不知為什麼會有影響呢?請告知一下,謝謝),而且這個是mts在新增procedure時自動加入的,不是我自已加入的,你可以試一個mts的程式就會知道了,謝謝你的回覆。

===================引 用 st33chen 文 章===================
您好,
我沒用過您這樣的語法, 不知道您有沒有試過把
procedure TMTS_SAPPLE.Queryapple(const applename: WideString);
begin
ADOQ_apple.Close;
ADOQ_apple.SQL[2] := 'applename = ' quotedstr(applename);
end;
中的 const 拿掉會如何 ?
------
DELPHI初學者
macchen
初階會員


發表:66
回覆:102
積分:33
註冊:2006-07-07

發送簡訊給我
#11 引用回覆 回覆 發表時間:2008-08-13 10:35:20 IP:211.75.xxx.xxx 訂閱
恩,這個我到是沒想到,我先試試看,看能不能從這邊找出些什麼方向,謝謝你。


===================引 用 salo0610 文 章===================

你好:

如你所說:"因為client端這邊我已經有用try了,所以才會有此訊息出現,但是該如何解決呢?"

我的意思是當發生例外時,順便把當時所使用的 sql 語法,也 show 出來看看,確定當時的sql 語法是沒問題的 !!!

===================引 用 macchen 文 章===================

謝謝你的回覆,但你指的「是不是在可以在 "on e: exception do" 時, show 出當時 ADOQ_apple 的 SQL 來找出問題呢???」,
這是指什麼意思呢?是client這邊嗎,還是指mts這邊的呢?因為client端這邊我已經有用try了,
所以才會有此訊息出現,但是該如何解決呢?還是有什麼地方可以設定讓此訊息不會出現(當然不是指用try的方式^^),謝謝。

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