想問幾個ADO相關的問題 |
尚未結案
|
jiing
一般會員 發表:1 回覆:0 積分:0 註冊:2002-06-16 發送簡訊給我 |
想請教幾個問題
1. 請問ADODataSet SQL 查詢完後的資料,如果要再被SQL查詢,how
例如:
strSQL:='select A from LOG where A>10 ';
ADODataSet1.Close;
ADODataSet1.CommandText := strSQL;
ADODataSet1.Open;
這樣子 ADODataSet1內是查詢後的結果資料集
現在想再次查詢ADODataSet1,該怎麼做? 概念上是 strSQL := 'select A from ADODataSet1 where A>15';
還是要用別的元件
我目前是用strSQL:='select A from (select * from LOG where A>10) where A>15';
來做
想問的是:"可以查詢已經執行過查詢的資料集ADODataSet 嗎?,還是要用到別的元件?"
謝謝!
=============================================================================
另外,如果我想要將資料表內某一欄的資料分類
用了SQL陳述式取出了一些資料,想放在一個新的資料表中的第一欄,和第二欄
我先試用select A into new_table from LOG where A>10; 來開新資料表
不過似乎不行,好像是我的資料庫不給我寫入
請問 這該怎麼做?
謝謝!
============================================================================
另外, 我想要放二個查詢出來的資料欄(但其數目不同) 到一張資料表裡,該怎麼做呢?
例如:
有一個是 select A, TIME from LOG where A>10;
另一個是 select B, TIME from LOG where B<3;
A 有十筆, B只有一筆
但我想把A和B放在同一個資料表中,並比較其TIME來產生第三欄
這又該怎麼做呢?
謝謝!
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
1. 請問ADODataSet SQL 查詢完後的資料,如果要再被SQL查詢,how
例如:
strSQL:='select A from LOG where A>10 ';
ADODataSet1.Close;
ADODataSet1.CommandText := strSQL;
ADODataSet1.Open;
這樣子 ADODataSet1內是查詢後的結果資料集
現在想再次查詢ADODataSet1,該怎麼做?
//同樣的﹐先賦字串值給strSQL變數﹐然后再指定給ADODataSet資料集元件﹐再做Open動作即可﹕ strSQL:='...........'; ADODataSet1.Close; ADODataSet1.CommandText := strSQL; ADODataSet1.Open;概念上是 strSQL := 'select A from ADODataSet1 where A>15'; 還是要用別的元件 我目前是用strSQL:='select A from (select * from LOG where A>10) where A>15'; 來做 想問的是:"可以查詢已經執行過查詢的資料集ADODataSet 嗎?,還是要用到別的元件?" 謝謝! //此語法為子查詢語法﹐可以使用﹐也不需要用到別的元件============================================================================= 另外,如果我想要將資料表內某一欄的資料分類 用了SQL陳述式取出了一些資料,想放在一個新的資料表中的第一欄,和第二欄 我先試用select A into new_table from LOG where A>10; 來開新資料表 不過似乎不行,好像是我的資料庫不給我寫入 請問 這該怎麼做? 謝謝! //ADODataSet元件不支援無資料回傳的SQL語法﹐諸如Insert, Delete, Update等等﹐你試用的SQL語句亦是無資料回傳的SQL語法﹐故無法寫入﹐你可換用ADOQuery元件或ADOCommand元件來處理﹐如下﹕ begin ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('select A into new_table from LOG where A>10'); ADOQuery1.ExecSQL; end; 注意﹕使用無資料回傳的SQL語法時﹐需要使用資料集元件的ExecSQL方法﹐而不是Open方法============================================================================ 另外, 我想要放二個查詢出來的資料欄(但其數目不同) 到一張資料表裡,該怎麼做呢? 例如: 有一個是 select A, TIME from LOG where A>10; 另一個是 select B, TIME from LOG where B<3; A 有十筆, B只有一筆 但我想把A和B放在同一個資料表中,並比較其TIME來產生第三欄 這又該怎麼做呢? 謝謝! 試試看如下的方法﹕ begin ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('Select A, '' As B, Time From LOG Where A>10 '); ADOQuery1.SQL.Add('Union Select '' As A, B, Time From LOG '); ADOQuery1.SQL.Add('Where B<3'); end;================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟 |
kenspc
一般會員 發表:1 回覆:20 積分:4 註冊:2004-12-09 發送簡訊給我 |
引言: 1. 請問ADODataSet SQL 查詢完後的資料,如果要再被SQL查詢,how 例如: strSQL:='select A from LOG where A>10 '; ADODataSet1.Close; ADODataSet1.CommandText := strSQL; ADODataSet1.Open; 這樣子 ADODataSet1內是查詢後的結果資料集 現在想再次查詢ADODataSet1,該怎麼做? 概念上是 strSQL := 'select A from ADODataSet1 where A>15'; 還是要用別的元件 我目前是用strSQL:='select A from (select * from LOG where A>10) where A>15'; 來做 想問的是:"可以查詢已經執行過查詢的資料集ADODataSet 嗎?,還是要用到別的元件?"設: 第一個QUERY名為 QUERY A 'select A from ADODataSet1 where A>10' 設: 第二個QUERY名為 QUERY B 'select A from ADODataSet1 where A>15' 如果你的目的是想在QUERY A 里找出 (A > 15) 的資料, 那我的建議有兩個: A. 使用FILTER, 例如: ADODataSet1.Filter := 'A >15'; ADODataSet1.Filtered; B. 使用子查詢語法(subquery), 不過先決條件是你的database是否支持, 例如: ADODataSet1.Close; ADODataSet1.CommandText := 'select A from (select * from LOG where A>10) where A>15'; ADODataSet1.Open; (此時QUERY B就是subquery, 子查詢??-怪怪的中文名稱) (注mysql, ms sql等大型database一定有支持, 其它的就不一定了) 引言: 另外,如果我想要將資料表內某一欄的資料分類 用了SQL陳述式取出了一些資料,想放在一個新的資料表中的第一欄,和第二欄 我先試用select A into new_table from LOG where A>10; 來開新資料表 不過似乎不行,好像是我的資料庫不給我寫入 請問就誠如cashxin2002所說的, 需要使用資料集元件的ExecSQL方法﹐而不是Open方法 不過, 一樣的先決條件是select ... into 是否有被你的database支持. 引言: 另外, 我想要放二個查詢出來的資料欄(但其數目不同) 到一張資料表裡,該怎麼做呢? 例如: 有一個是 select A, TIME from LOG where A>10; 另一個是 select B, TIME from LOG where B<3; A 有十筆, B只有一筆 但我想把A和B放在同一個資料表中,並比較其TIME來產生第三欄 這又該怎麼做呢?就照著cashxin2002所說的去試試吧, 嘻嘻 |
kenspc
一般會員 發表:1 回覆:20 積分:4 註冊:2004-12-09 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |