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

用ADOQuery & ADODataSet 來新增一個Record

尚未結案
joe_ung
一般會員


發表:12
回覆:21
積分:6
註冊:2003-10-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-16 11:35:36 IP:202.175.xxx.xxx 未訂閱
ADOQuery 和 ADODataSet 有甚麼不同? 如果我想新增一個record去一個accessDB內,應該怎樣做? 註 : 每一個item都是經過edit1.text得到的
cashxin2002
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-16 13:46:00 IP:63.84.xxx.xxx 未訂閱
您好!    ADODataSet元件其實就是Recordset物件的化身, 它算是一個廣義的資料集元件, 因為它可以透過指定資料表, 執行SQL指令或呼叫預存程序來擷取資料集, 方法是只需將其Connection屬性值連接上游的ADOConnection元件, 然后在其CommandText屬性中選擇需要使用的方法, 只是說ADODataSet不支援使用DELETE, INSERT, UPDATE的異動資料庫的無回傳資料的SQL語法,若要使用這些語法,請使用ADOCommand or ADOQuery. 可參考這個連接說明: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=34089    而ADOQuery只能通過SQL語法擷取資料庫, 但其支援所有的SQL語法.    新增一個Record, 以ADOQuery舉例:
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('Insert Into 資料表名稱 (欄位名一, 欄位名二) ');
  ADOQuery1.SQL.Add('Values (欄位值一, 欄位值二)');
  ADOQuery1.ExecSQL;
end;
也可在語法中加上Select用以從另外的資料表中擷取資料再Insert, 語法如下: Insert Into 目的資料表 Select 欄位名一, 欄位名二 From 來源資料表 參考看看! ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
joe_ung
一般會員


發表:12
回覆:21
積分:6
註冊:2003-10-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-16 15:00:44 IP:202.175.xxx.xxx 未訂閱
但它時常話---參數太少,預期個數7 為何呀?? The source code: procedure TForm2.Button3Click(Sender: TObject); begin ADOQuery1.Close(); ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('insert into Ssetting(NAME,PPNO,NATIONALITY,SEX,AGE,ADDRESS,TELEPHONE_NO)'); ADOQuery1.sql.add('values(' nameT.Text ',' passportT.Text ',' nationT.Text ',' sexT.Text ',' ageT.Text ',' addressT.Text ',' telT.Text ')'); ADOQuery1.ExecSQL; end; 發表人 - joe_ung 於 2003/10/16 15:02:58
cashxin2002
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-10-16 16:53:18 IP:63.84.xxx.xxx 未訂閱
您好﹗    將您的程式碼修改如下﹕
procedure TForm2.Button3Click(Sender: TObject);
  begin
    ADOQuery1.Close;//不知您為何要在Close后加()
    >
參考看看﹗    <><>=====================
努力,相信會獲得美麗!
忻晟
        
------
忻晟
joe_ung
一般會員


發表:12
回覆:21
積分:6
註冊:2003-10-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-10-16 17:29:28 IP:202.175.xxx.xxx 未訂閱
Thank you so much 另一問題 : 是否需要除錯呀? 應該怎樣做呢?
cashxin2002
版主


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-10-16 17:49:53 IP:63.84.xxx.xxx 未訂閱
您好﹗    您所指的除錯是什么意思﹖ 一般來講我們在程式中加上Try...Except的語法來攔截錯誤信息﹐您是指這個嗎﹖語法如下﹕
begin
  Try
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('insert into Ssetting(NAME,PPNO,NATIONALITY,SEX,AGE,ADDRESS,TELEPHONE_NO) ');
    ADOQuery1.sql.add('values (''' nameT.Text ''',''' passportT.Text ''',''' nationT.Text ''',''' sexT.Text ''',''' ageT.Text ''',''' addressT.Text ''',''' telT.Text ''')');
    ADOQuery1.ExecSQL;
  Except
    On MyError : Exception do
      ShowMessage('例外的錯誤是' MyError.Message);
  end;
end;
參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
joe_ung
一般會員


發表:12
回覆:21
積分:6
註冊:2003-10-16

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-10-17 12:04:36 IP:202.175.xxx.xxx 未訂閱
十分感激您呢! 如果我想做一個Server/Client的數據庫,有甚麼事項要知道的呢? 請指導我吧
joe_ung
一般會員


發表:12
回覆:21
積分:6
註冊:2003-10-16

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-10-17 15:25:48 IP:202.175.xxx.xxx 未訂閱
ADODataSet1.CommandText:='select * from Vinfo where NAME='+nameT.text; ↑它總是罵我錯了,為甚麼?    另外,如果我想把在一個dataset內的每個item放進每一個textfield內,應怎樣呢? 請救救我啦
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-10-17 15:29:35 IP:202.39.xxx.xxx 未訂閱
欄位名稱勿用 Name, 它是保留字, 改用其它名稱. 另外 Name 那個欄位是字串型態的話, 改成如下: ADODataSet1.CommandText := 'select * from Vinfo where NAME=''' + nameT.text + '''';    --- 歡迎光臨 KTop 研究院
系統時間:2024-05-19 15:59:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!