線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1132
推到 Plurk!
推到 Facebook!

請問DataSet的元件如何下SQL?

尚未結案
lincw_darharnq
一般會員


發表:18
回覆:12
積分:6
註冊:2003-08-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-01-03 16:35:01 IP:61.30.xxx.xxx 未訂閱
各位大大 小弟剛接觸Delphi不久,小弟會始ADOQuery的物件來下SQL,可是在DataSet下,小弟沒輒了... 可否請各位大大,不吝教導小弟....雖然這個問題真的很簡單。感溫啦~ PS:是這樣子下SQL的嗎? procedure TForm1.Button1Click(Sender: TObject); begin ADODataSet1.Close; ADODataSet1.CommandText :=' SQL描述 '; ADODataSet1.Active :=True; end;
James
高階會員


發表:10
回覆:290
積分:220
註冊:2002-07-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-01-03 17:01:27 IP:218.162.xxx.xxx 未訂閱
看起來沒有錯... 但 ADODataset 我們一般都是放 select 命令或者是 配合 commandtype 可以給 table name 或者是 stored procedure ,主 要是用來處理有 resultset 的處理;比方說像是 DML 指令 ( Insert, Update, Delete ) 或者其他的處理,但是沒有 resultset 時, 則會配合 TAdocommand 的物件去使用。
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-01-04 16:18:17 IP:211.76.xxx.xxx 未訂閱
您好: 小弟剛剛事了一下,這樣的敘述沒有問題 有什ㄇ樣的錯誤訊息ㄇ? 提出來討論一下 或是將 ADODataSet1.Active :=True; 改為 ADODataSet1.open; 這樣也可以
lincw_darharnq
一般會員


發表:18
回覆:12
積分:6
註冊:2003-08-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-01-05 08:06:45 IP:61.30.xxx.xxx 未訂閱
兩位大大 如果小弟一開始描述ADODataSet的使用方式沒有錯的話,那就應該是小弟的SQL描述可能有錯,因為一按Button1後就會出現錯誤訊息,小弟還在忙著De-Bug呢! 不過仍感謝兩位大大的意見提供,讓小弟信心上提昇不少。
cashxin2002
版主


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-01-05 09:50:48 IP:63.84.xxx.xxx 未訂閱
您好﹗    ADODataset是一個多元化的資料集元件﹐其擷取資料的方法有好幾種﹐也可以說它結合了ADOTable元件利用資料表名稱擷取資料和ADOQuery元件利用SQL語法擷取資料等等﹐既然其可以用多種方法來擷取資料庫﹐首先必須要指定其擷取資料的方法﹐在您的程式碼中加上一句﹕
procedure TForm1.Button1Click(Sender: TObject);
begin
  ADODataSet1.Close;
  ADODataSet1.CommandType := cmdText;
  ADODataSet1.CommandText :=' SQL描述 ';
  ADODataSet1.Active :=True;
  //ADODataSet1.Open; 我們通常也可使用這種開啟的方法
end;
雖然說﹐ADODataSet元件的預設CommandType屬性值是cmdText﹐但為了以防設計時期對其屬性值的改動﹐所以建議加上以上紅色部分﹒ 另外﹐ADODataSet元件不可使用無回傳值的SQL語法﹐即不可使用Insert, Delete, Update等等對資料庫有異動作用的SQL語法﹐一般只能使用Select的擷取查詢的SQL語法﹒ 參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
seaturn99
版主


發表:69
回覆:427
積分:214
註冊:2003-08-25

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-01-06 11:26:35 IP:203.66.xxx.xxx 未訂閱
引言: 您好﹗ ADODataset是一個多元化的資料集元件﹐其擷取資料的方法有好幾種﹐也可以說它結合了ADOTable元件利用資料表名稱擷取資料和ADOQuery元件利用SQL語法擷取資料等等﹐既然其可以用多種方法來擷取資料庫﹐首先必須要指定其擷取資料的方法﹐在您的程式碼中加上一句﹕
procedure TForm1.Button1Click(Sender: TObject);
begin
  ADODataSet1.Close;
  ADODataSet1.CommandType := cmdText;
  ADODataSet1.CommandText :=' SQL描述 ';
  ADODataSet1.Active :=True;
  //ADODataSet1.Open; 我們通常也可使用這種開啟的方法
end;
雖然說﹐ADODataSet元件的預設CommandType屬性值是cmdText﹐但為了以防設計時期對其屬性值的改動﹐所以建議加上以上紅色部分﹒ 另外﹐ADODataSet元件不可使用無回傳值的SQL語法﹐即不可使用Insert, Delete, Update等等對資料庫有異動作用的SQL語法﹐一般只能使用Select的擷取查詢的SQL語法﹒ 參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟
請問一下 cashxin2002 版主, 使用 TDataSet 元件有什麼特別的優點嗎?? ---- 我只會兩件事,這也不會,那也不會
cashxin2002
版主


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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-01-06 11:58:06 IP:63.84.xxx.xxx 未訂閱
您好﹗    之前回复中有提到過﹐ADODataSet元件是一個廣義型的資料集元件﹐其擷取資料的方式有多種﹐也可以說是ADOTable和ADOQuery元件的集合體﹒    此外﹐ADODataSet元件還有一個比較重要的用途﹐其可對檔案做匯入和匯出的動作﹐ADODataSet元件有兩個相關的方法﹐即LoadFromFile和SaveToFile﹐使用方法及說明如下﹕ SaveToFile ADODataSet1.SaveToFile('D:\Xin.xml',pfXML); //作用﹕將目前ADODataSet1所擷取的資料存成其它形態(XML)之檔案 參數﹕pfXML ==> 擴展語言格式 參數﹕pfADTG ==> 微軟高級資料表格式 LoadFromFile ADODataSet1.LoadFromFile('D:\Xin.xml'); //作用﹕從一個現有檔案匯入資料到ADODataSet1中 兩種方法合并使用﹐可實做出資料公文包之類的功能﹐具體的方法﹐請參考之前ha0009版主的大作﹕ http://sourceprovide.deepen.com.tw/k_top/TestBriefCase.exe 相關的問題講解﹕ http://delphi.ktop.com.tw/topic.php?TOPIC_ID=33443 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=33506 參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
seaturn99
版主


發表:69
回覆:427
積分:214
註冊:2003-08-25

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-01-06 13:55:01 IP:203.66.xxx.xxx 未訂閱
引言: 您好﹗ 之前回复中有提到過﹐ADODataSet元件是一個廣義型的資料集元件﹐其擷取資料的方式有多種﹐也可以說是ADOTable和ADOQuery元件的集合體﹒ 此外﹐ADODataSet元件還有一個比較重要的用途﹐其可對檔案做匯入和匯出的動作﹐ADODataSet元件有兩個相關的方法﹐即LoadFromFile和SaveToFile﹐使用方法及說明如下﹕ SaveToFile ADODataSet1.SaveToFile('D:\Xin.xml',pfXML); //作用﹕將目前ADODataSet1所擷取的資料存成其它形態(XML)之檔案 參數﹕pfXML ==> 擴展語言格式 參數﹕pfADTG ==> 微軟高級資料表格式 LoadFromFile ADODataSet1.LoadFromFile('D:\Xin.xml'); //作用﹕從一個現有檔案匯入資料到ADODataSet1中 兩種方法合并使用﹐可實做出資料公文包之類的功能﹐具體的方法﹐請參考之前ha0009版主的大作﹕ http://sourceprovide.deepen.com.tw/k_top/TestBriefCase.exe 相關的問題講解﹕ http://delphi.ktop.com.tw/topic.php?TOPIC_ID=33443 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=33506 參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟
感謝 cashxin2002 版主詳盡的說明與資料,我已經大致了解功能的輪廓了... 又多學了一課,Thanks... ---- 我只會兩件事,這也不會,那也不會
lincw_darharnq
一般會員


發表:18
回覆:12
積分:6
註冊:2003-08-06

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-01-06 15:07:06 IP:61.30.xxx.xxx 未訂閱
感謝各位大大 小弟的問題已解決了,而且在這幾天也對於DataSet有了更深一層的體驗。 小弟原先的問題是這樣的: procedure TForm1.Button1Click(Sender: TObject); begin ADODataSet1.Close; ADODataSet1.CommandText :=' SQL描述 '; ADODataSet1.Active :=True; end; 想要問SQL在DataSet下如何執行? 後來發現小弟的整體架構沒問題啦....只是SQL太長了,問題出現在SQL分段。 因此修改為 procedure TForm1.Button1Click(Sender: TObject); begin ADODataSet1.Active :=False; ADODataSet1.CommandText :=' SQL描述 '; ADODataSet1.CommandText :=ADODataSet1.CommandText ' SQL描述 '; ...... ADODataSet1.Active :=True; end; 這樣即可執行SQL了 感謝十方大德的熱情贊助~~ 因此小弟強力推薦Master-Detail的處理模式,從原先的ADOQuery-ADOTable改為ADODataSet1-ADODataSet2.....
系統時間:2024-03-29 13:35:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!