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

delphi + sql server + ado如何二次查询?

尚未結案
lovelypp
初階會員


發表:122
回覆:111
積分:46
註冊:2003-02-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-15 18:47:01 IP:218.2.xxx.xxx 未訂閱
即先用TAdoQuery查询一次, 第二次在第一次TAdoQuery的基础上查询? 请教高手
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-15 18:52:34 IP:202.62.xxx.xxx 未訂閱
您好﹗    使用子查詢即可﹒ 例一﹕ Select * From 資料表1 Where 欄位1 In (Select 欄位1 From 資料表2 Where 欄位2 = '1234') 例二﹕ Select 欄位1, 欄位2 From 資料表1 Where 欄位2 > (Select Avg(欄位2) From 資料表1)    ========================= 大病初愈﹐休養調整中... =========================
------
忻晟
juneo
高階會員


發表:103
回覆:190
積分:118
註冊:2004-05-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-15 20:27:09 IP:210.60.xxx.xxx 未訂閱
你好 TAdoQuery 內有各sql查詢字串的屬性 用程式更新後在將 TAdoQuery 設為Flash 在改為True 這樣TAdoQuery物件就會重新讀取,就可以取到第二次SQL內容 分享比獲得更快樂--Juneo
lovelypp
初階會員


發表:122
回覆:111
積分:46
註冊:2003-02-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-15 23:52:00 IP:218.2.xxx.xxx 未訂閱
大家可能误会我的问题了,不过还是谢谢 我的问题是这样的: 第一次查询时选出(select)了一批资料,例如12345笔资料,当然这么多资料对用户而言太多了。用户在这批资料的基础上再次查询,更改查询条件,使之更加严格,从而只搜出少数几笔(例如20笔)资料。 请问使用Delphi ADO应该如何做?哪位大虾能给个例子吗?
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-16 08:57:23 IP:202.62.xxx.xxx 未訂閱
您好﹗    Select * From (Select * From 資料表 where 條件式) where 條件式 紅色句為第一次查詢﹐并將回傳結果作為藍色句查詢語句中的資料表﹐而藍色句即是在第一次查詢的結果中再次賦予條件式進行二次查詢﹒ ========================= 大病初愈﹐休養調整中... ========================= 發表人 - cashxin2002 於 2004/10/16 08:59:19
------
忻晟
chamstar
一般會員


發表:24
回覆:36
積分:12
註冊:2004-10-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-10-16 09:29:08 IP:218.16.xxx.xxx 未訂閱
用edit1写入查询条件,再用adoquery的sql语句查询,增加查询按钮,写以下代码: var a,m:string; begin a:=edit1.Text; with adoquery1 do begin close; sql.clear; m:=a; sql.Add(m); OPEN; END; end;
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-10-16 10:01:52 IP:61.221.xxx.xxx 未訂閱
lovelypp 你好: 你所說的是view的觀念,若要實現在程式裡必須將第二個 TAdoQuery的DataSource指向第一個TAdoQuery
------
======================
昏睡~
不昏睡~
不由昏睡~
lovelypp
初階會員


發表:122
回覆:111
積分:46
註冊:2003-02-19

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-10-17 20:35:18 IP:218.2.xxx.xxx 未訂閱
================================================= 你所說的是view的觀念,若要實現在程式裡必須將第二個 TAdoQuery的DataSource指向第一個TAdoQuery ================================================= 我这样做了,可是设置第二个TAdoQuery的Active属性为True时异常,提示: "Missing Connection or Connection String"
lovelypp
初階會員


發表:122
回覆:111
積分:46
註冊:2003-02-19

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-10-18 12:09:46 IP:218.104.xxx.xxx 未訂閱
各位老大帮帮忙
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-10-18 12:40:29 IP:210.65.xxx.xxx 未訂閱
Hi lovelypp,    使用 Filter 是否可行?
procedure TForm1.Button3Click(Sender: TObject);
begin
  ADOQuery1.Filtered := False;
  ADOQuery1.Filter := 'username = '    QuotedStr(Edit1.text);
  ADOQuery1.Filtered := true;
end;
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
lovelypp
初階會員


發表:122
回覆:111
積分:46
註冊:2003-02-19

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-10-18 12:53:35 IP:218.104.xxx.xxx 未訂閱
谢谢,回答真是及时。 使用Filter的问题:加入我要进行三次,四次查询呢?
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-10-18 13:33:24 IP:210.65.xxx.xxx 未訂閱
Hi lovelypp,    
procedure TForm1.Button3Click(Sender: TObject);
begin
  ADOQuery1.Filtered := False;
  if ADOQuery1.Filter = '' then
    ADOQuery1.Filter := '('   Edit1.Text  ')'
  else
    ADOQuery1.Filter := ADOQuery1.Filter   ' and '   '('   Edit1.Text  ')';
  ADOQuery1.Filtered := True;
end;
其中,Edit1.Text 為過濾之條件句,如 user_name = 'xxx' ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-10-18 13:38:19 IP:218.160.xxx.xxx 未訂閱
引言: 您好﹗ Select * From (Select * From 資料表 where 條件式) where 條件式 紅色句為第一次查詢﹐并將回傳結果作為藍色句查詢語句中的資料表﹐而藍色句即是在第一次查詢的結果中再次賦予條件式進行二次查詢﹒ ========================= 大病初愈﹐休養調整中... ========================= 發表人 - cashxin2002 於 2004/10/16 08:59:19
不好意思,插個花,請教cashxin2002大大,因為我也有這樣的疑惑? 當我第一次 Select * From 資料表 where 條件式 時,假如我從100萬筆資料選出50個筆資料,需費時5分鐘. 當我第二次用 Select * From (Select * From 資料表 where 條件式) where 條件式 做篩選時,會花費5分鐘以上的時間?還是很快就能得到答案,因為不會再從 100萬筆資料篩選,只從50筆中的資料篩選呢?
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-10-18 14:07:48 IP:202.62.xxx.xxx 未訂閱
引言: 不好意思,插個花,請教cashxin2002大大,因為我也有這樣的疑惑? 當我第一次 Select * From 資料表 where 條件式 時,假如我從100萬筆資料選出50個筆資料,需費時5分鐘. 當我第二次用 Select * From (Select * From 資料表 where 條件式) where 條件式 做篩選時,會花費5分鐘以上的時間?還是很快就能得到答案,因為不會再從 100萬筆資料篩選,只從50筆中的資料篩選呢?
您好﹗ 查詢所費時間應會超過5分鐘﹒ ========================= 大病初愈﹐休養調整中... =========================
------
忻晟
lovelypp
初階會員


發表:122
回覆:111
積分:46
註冊:2003-02-19

發送簡訊給我
#15 引用回覆 回覆 發表時間:2004-10-18 22:28:37 IP:218.2.xxx.xxx 未訂閱
那这样的二次查询有何意义? 有没有效率比较高的方法?
baygon
一般會員


發表:20
回覆:31
積分:10
註冊:2003-10-03

發送簡訊給我
#16 引用回覆 回覆 發表時間:2004-10-19 16:49:27 IP:210.201.xxx.xxx 未訂閱
引言: 那这样的二次查询有何意义? 有没有效率比较高的方法?
下一次條件就查出所要的內容
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#17 引用回覆 回覆 發表時間:2004-10-19 17:04:49 IP:220.135.xxx.xxx 未訂閱
若是使用ADO我是沒試過, 有沒有想過直接在SQL Server資料庫裡做手腳, 譬如建View 或使用Temp Table的方式 Select * into #Temp1 where ... Select * from #Temp1 where ... 我不是高手, 高手是正在銀幕前微笑的人.
------


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