新增按鈕 |
答題得分者是:Coffee
|
monkeyhung
一般會員 發表:51 回覆:55 積分:21 註冊:2006-12-16 發送簡訊給我 |
各位大大我想做一個新增按鈕,當按下此鈕時,會把所有的輸入的欄位資料輸入到資料庫裡,不知小弟我這樣寫錯在那呢??
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 發送簡訊給我 |
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 發送簡訊給我 |
改一下紅字的部份
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 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |