資料庫回傳錯誤「command text can not return a result set」 |
缺席
|
macchen
初階會員 發表:66 回覆:102 積分:33 註冊:2006-07-07 發送簡訊給我 |
請問各位高手一下,就是我在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 發送簡訊給我 |
|
macchen
初階會員 發表:66 回覆:102 積分:33 註冊:2006-07-07 發送簡訊給我 |
你好,謝謝你的回覆,我之前有在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 發送簡訊給我 |
那你可以提供程式,讓我試一下嗎?? ===================引 用 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 發送簡訊給我 |
你好,程式的片段當然是沒問題,但是資料庫的部份可能要請你用模擬的了,因為我自已測試是是無法試出這個問題,是客戶在使用時告知的,並且這個限象不是固定發生的,所以很難抓到問題點,所以才會到這邊請各位大大幫幫忙,畢竟我的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 發送簡訊給我 |
呵!!
如你說的!! "因為我自已測試是是無法試出這個問題,是客戶在使用時告知的,並且這個限象不是固定發生的,所以很難抓到問題點" 不是固定發生的,所以我也無法用試的幫你找出問題!! 能力不足也無法從你提供的 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 發送簡訊給我 |
謝謝你的回覆,但你指的「是不是在可以在 "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 發送簡訊給我 |
您好,
我沒用過您這樣的語法, 不知道您有沒有試過把 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 發送簡訊給我 |
你好: 如你所說:"因為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 發送簡訊給我 |
你好,關於你說的加上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 發送簡訊給我 |
恩,這個我到是沒想到,我先試試看,看能不能從這邊找出些什麼方向,謝謝你。
===================引 用 salo0610 文 章=================== 你好: 如你所說:"因為client端這邊我已經有用try了,所以才會有此訊息出現,但是該如何解決呢?" 我的意思是當發生例外時,順便把當時所使用的 sql 語法,也 show 出來看看,確定當時的sql 語法是沒問題的 !!! ===================引 用 macchen 文 章=================== 謝謝你的回覆,但你指的「是不是在可以在 "on e: exception do" 時, show 出當時 ADOQ_apple 的 SQL 來找出問題呢???」, 這是指什麼意思呢?是client這邊嗎,還是指mts這邊的呢?因為client端這邊我已經有用try了, 所以才會有此訊息出現,但是該如何解決呢?還是有什麼地方可以設定讓此訊息不會出現(當然不是指用try的方式^^),謝謝。 =======================================================
------
DELPHI初學者 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |