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

新增按鈕

答題得分者是:Coffee
monkeyhung
一般會員


發表:51
回覆:55
積分:21
註冊:2006-12-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-01-09 11:14:36 IP:203.69.xxx.xxx 訂閱
各位大大我想做一個新增按鈕,當按下此鈕時,會把所有的輸入的欄位資料輸入到資料庫裡,不知小弟我這樣寫錯在那呢??
procedure TForm1.Button1Click(Sender: TObject);
begin
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select * from prod');
query1.Insert;
query1.ExecSQL;
query1.Post;
//重新讀取資料
query1.Close;
query1.SQL.clear;
query1.SQL.add('select * from prod');
query1.Open;
end;
Coffee
版主


發表:31
回覆:878
積分:561
註冊:2006-11-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-01-09 11:44:44 IP:220.130.xxx.xxx 訂閱
query.Insert時就表示新增一筆資料,這時候dataset就已經在Edit的狀態了
下ExecSQL變成去執行SQL Statement,
那麼你原先在Insert的那筆資料只要符合條件將會被寫進去(預設狀態下,除非你使用BatchUpdate Cursor)
然後下Post,你的原意是要將在Edit的資料送出儲存的指令,這時候就變成沒有意義

拆開來說,
要嘛就是你使用SQL語法去新刪改,那麼你就只要
Close;//在Close狀態下異動SQL Statement
SQL.Clear;//清空原先的Statement
SQL.Add;//加上你現在要異動資料的語法
Open or ExecSQL;//執行Query來異動資料
這時候如果你需要重新檢視資料,就再重覆一次上述動作,Statement改成檢視的語法
或者是你想使用元件提供給你的功能
那麼就是
query.ExecSQL;假設你第一次使用這個object
query.Insert;//新增一筆資料在指定的位置
query.FieldByName, FieldList, FiedValues將會是你需要用來指定更改query欄位中有的變數值
query.post;//修改完畢,送出資料
這時候不需要去reload資料,正常來說Dataset會被通知要更新這筆資料與資料庫同步

你應該是使用ADO元件(吧?)
個人建議是只執行異動資料的SQL Statement就使用ADOCommand
Table跟Query應該是能免則免,用Dataset就可以滿足你多數的需求了

(完)
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。
為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。
在引述到我的文時自然會儘量替各位想辦法,謝謝大家!
japhen
中階會員


發表:2
回覆:57
積分:71
註冊:2006-08-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-01-09 23:48:07 IP:211.74.xxx.xxx 訂閱
改一下紅字的部份


procedure TForm1.Button1Click(Sender: TObject);
begin
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select * from prod');
query1.fieldbyname('userwebsite').value := 'www.twgocn.com';

query1.updatebatch(arCurrent) ; // 這樣保証資料有回寫到資料庫里 // ADO專用

//重新讀取資料
query1.Close;
query1.SQL.clear;
query1.SQL.add('select * from prod');
query1.Open;
end;
------
歡迎在大陸的台商加入我們的行列
台商小棧 www.twgocn.com
系統時間:2024-05-19 16:36:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!