TDBGrid + TSQLQuery update問題 |
尚未結案
|
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi BorlandUser, 請參考:
http://delphi.ktop.com.tw/topic.php?topic_id=40459
將 RequestLive 與 CachedUpdates 設為 True Update(出處:Delphi Help --> TBDEDataSet --> ApplyUpdates) :
procedure TForm1.ApplyButtonClick(Sender: TObject); begin with CustomerQuery do begin Database1.StartTransaction; try ApplyUpdates; {try to write the updates to the database}; Database1.Commit; {on success, commit the changes}; except Database1.Rollback; {on failure, undo the changes}; raise; {raise the exception to prevent a call to CommitUpdates!} end; CommitUpdates; {on success, clear the cache} end; end---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi BorlandUser, Sorry !! 看錯了,我以為是 TQuery,請見諒
如果 TSQLQuery 真的沒有該項屬性,拉個 DataSetProvider 與 ClientDataSet(In Data Access Tab),其中,DataSetProvider 的 DataSet 設為該 TSQLQuery,ClientDataSet 的 ProviderName 設為該 DataSetProvider,已仿 Multi-Tier 架構來作 ----------------------------------
小弟才疏學淺,若有謬誤尚請不吝指教
----------------------------------
------
Fishman |
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi BorlandUser, Method 1 : 使用 Append 指令,該 Primary Key 不給值(該欄位也無法給值),其他欄位值逐一給值
Method 2 : 用 Insert 指令,該 Primary Key 不給值(不針對該欄位 Insert),資料庫會自動產生 我用 Access 試過,兩種方式皆可行,不知你使用何種 DataBase?< >
< > ----------------------------------
小弟才疏學淺,若有謬誤尚請不吝指教
----------------------------------
------
Fishman |
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi BorlandUser, Sorry !! MySql 我沒用過,不能給你太多建議,不知其他大大是否有解?
或試你可以先行測試看看,MySql 是否有相同特性,再告訴大家結果 針對上述兩種方法,特此提出說明如下:
1.
Access 在你下了 Append 指令後,事實上,該 Auto Generate 欄位已經被賦予值,而且無法修改,僅能編輯其他欄位,或對其他欄位賦予值 2.
假設 Table 中
Field1 --> Auto Generate & Can't be null
Field2,
Field3,
...
INSERT INTO Table (Filed2, Filed3, ...) VALUES (:P_Filed2, :P_Filed3, ...)意即在 Insert 指令不對 Auto Generate Field 賦予值,Access 會自動給予,在 Oracle 中也是相同,若該欄位有設定 Default 值,若不給值,則會帶入 Default 值,若有給值,即會以你給的值寫入資料庫 無法幫上忙,深感抱歉 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
你的意思是指用SQL Statement 去做嗎?如果是這樣的話,mysql當然沒有問題,但是我的問題是在一個dbgrid裏面供用者輸入資料,用戶可能會輸入幾個或數個檔案後才按鍵save,所以要做到update batch的效果,不過用dbexpress都可以做到這樣,但我提供給使用者輸入的grid是顯示一個table的某些欄位,而有些欄位,如primarykey code(auto generate),郤不會顯示出來,當用戶輸入了第一條record,並且向下準備輸入下一條record的時候,就出現問題,因為primarykey(auto generate)那個並沒有資料,因為我的grid是連結所有field,但只顯示某幾個field供用戶輸入的,要是不連結primary key的話,就不能尋找或更新record. ps.其實現在我要實行的程式是雖要一個grid,它可以供使用者輸入資料,grid內的cell可能可以給使用者按button而彈出另一張form或是有一些combobox或checkbox供使用者選擇,當用戶輸入完成,便會按save進行儲存
如果有其它方法可以實行到這個方法,請指教一下 ** 我用的database是mysql,而連結db的方法一定要是dbexpress內的元件 請各位大大幫忙指教一下.. >_< ....累死我了...
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |