ADOQuery問題 |
答題得分者是:st33chen
|
lasterliu
一般會員 發表:38 回覆:57 積分:19 註冊:2007-11-05 發送簡訊給我 |
想請教請問各位大大一個問題,有無辦法在ADOQuery進行查詢後,再從中尋找資料。
舉例如下: [code delphi] ADOQuery1.Close; ADOQuery1.SQL.Text:='select * from Table1'; ADOQuery1.ExecSQL; ADOQuery1.Open; [/code] 請問再進行搜尋後,有無方法可以再從其搜尋得到的資料中在進行一次搜尋嗎?請知道的大大可以給小弟一點提示,謝謝~ |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
|
lasterliu
一般會員 發表:38 回覆:57 積分:19 註冊:2007-11-05 發送簡訊給我 |
P.D大大與st33chen大大謝謝您們的回覆。
P.D大大: 1.Query之後使用locate 方式:大大不好意思我試了一下,這是回傳布林值,而不是回傳資料表內容,小弟想要的是原本搜尋到的內容中再從中擷取依部分內容出來顯示 2.使用多條件一次解決:多條件的意思是說一次就下多條件搜尋嗎?若是的話,這個方法可能不適合我的程式,因為程式上的設計需求為一開始去打開需要的資料表(其中可能已下了一些條件式進行篩選),接著再由使用者下其它搜尋的條件進行搜尋 3.使用 select ... where select ... 方式(次查詢):理由同二 4.你用 excesql 的方式是沒有回傳值的功能, 你應該直接使用 adoquery.sql.text:= select ... " 用 open 就可以:對耶~那大大請問excesql的功用是什麼呢,我原本以為它的功能是執行我輸入的SQL語法@@? st33chen大大: 用 filtered 及 filter 屬性,我先試試看,看可不可以,因為這屬性我沒用過,不曉得因如何使用且功能為何,我先試試看,看是不是符合我的需求。 謝謝大大們的提示,小弟先試試看^^。 |
eaglewolf
資深會員 發表:4 回覆:268 積分:429 註冊:2006-07-06 發送簡訊給我 |
1.
Locat 回傳的boolean 值 是要告訴你有沒有找到你要的資料 如果有, 你的adoQuery 就會指向你該筆資料 你只要利用類似 adoQuery.FielByName('xxx').AsString 的語法 即可取得特定欄位的資料 2. 是執行沒錯,但不會回傳資料集,而是回傳受影響的筆數 3. st33chen 大大 所提的方式會比較符合你的需求 ===================引 用 lasterliu 文 章=================== P.D大大與st33chen大大謝謝您們的回覆。 P.D大大: 1.Query之後使用locate 方式:大大不好意思我試了一下,這是回傳布林值,而不是回傳資料表內容,小弟想要的是原本搜尋到的內容中再從中擷取依部分內容出來顯示 2.使用多條件一次解決:多條件的意思是說一次就下多條件搜尋嗎?若是的話,這個方法可能不適合我的程式,因為程式上的設計需求為一開始去打開需要的資料表(其中可能已下了一些條件式進行篩選),接著再由使用者下其它搜尋的條件進行搜尋 3.使用 select ... where select ... 方式(次查詢):理由同二 4.你用 excesql 的方式是沒有回傳值的功能, 你應該直接使用 adoquery.sql.text:= select ... " 用 open 就可以:對耶~那大大請問excesql的功用是什麼呢,我原本以為它的功能是執行我輸入的SQL語法@@? st33chen大大: 用 filtered 及 filter 屬性,我先試試看,看可不可以,因為這屬性我沒用過,不曉得因如何使用且功能為何,我先試試看,看是不是符合我的需求。 謝謝大大們的提示,小弟先試試看^^。
------
先查HELP 再查GOOGLE 最後才發問 沒人有義務替你解答問題 在標題或文章中標明很急 並不會增加網友回答速度 Developing Tool: 1.Delphi 6 2.Visual Studio 2005 3.Visual Studio 2008 DBMS: MS-SQL
編輯記錄
eaglewolf 重新編輯於 2009-02-28 09:00:58, 註解 無‧
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
1.使用 filter 會拖垮你的效能, 少用為妙
2.你說第二, 三種方式做不到, 我不這麼認為, 或許你希望用戶在看到第一次的結果後, 再下條件取第二次, 那你在設計上一樣可以做的到啊! 記錄第一次的條件, 先處理第一次sql 讓結果出來, 當用戶對第一次結果再下條件, 那不就是 sql1 and sql2 的觀念嗎? 對用戶好像是兩次sql選擇, 但你在第二次的 sql 中加入第一次 sql 條件就 ok! 試試吧!
編輯記錄
P.D. 重新編輯於 2009-02-28 22:15:44, 註解 無‧
|
lasterliu
一般會員 發表:38 回覆:57 積分:19 註冊:2007-11-05 發送簡訊給我 |
謝謝各位大大的回覆:
st33chen大大的建議(使用filter)可以達成我要的需求(至於效能小弟不知該如何測試出來,目前只在本機測試)。 謝謝eaglewolf大大的解說^^。 P.D大大最後的建議(若我理解沒錯的話)跟我目前的設計很相似,我描述一下我目前的設計,因為此程式設計為共用查詢,所以一開始會先去資料庫的一個固定資料表中找尋此程式代號的程式碼(如:執行此程式的代號為A001,那資料表中資料為A001 select * into #temp1 from A.dbo.Employee where department='M' select * from #temp1),接著我會執行此段程式碼後,會再從中找尋最後一個select,再將其後面的程式碼擷取下來(select * from #temp1),最後再加上USER所加的其他條件式在進行篩選一次。若程式碼部分是StoreProcedure,則輸入SP的代號,再進去SP中的程式碼擷取最後一個Select語句,最後再從select語句的後面加上USER下的條件判斷式進行查詢。但問題是有時程式碼最後面不是只有單純的一個select語句或是在SP中最後的語句還有其它的字,如此在擷取時就常會有BUG出現,無法通用,所以現在才會想說不去擷取程式碼內容,而是讓它執行一次後再由USER下條件式從它查詢出來的結果再進行篩選查詢。 不知小弟這樣的描述是否可以讓大大們了解,若有描述不清楚的地方,再煩請大大們提出,謝謝大大們的指教。 |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |