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

TDBGrid + TSQLQuery update問題

尚未結案
BorlandUser
中階會員


發表:148
回覆:217
積分:73
註冊:2004-02-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-23 11:54:10 IP:203.185.xxx.xxx 未訂閱
續上一個post,如果用TADOQuery去update record,及做batch update都無問題,但如果用的是tsqlquery呢? DBGrid.DataSource.DataSet.Insert; 但無得batch及不懂update,請救如何呢?
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-23 12:38:11 IP:210.65.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-23 14:03:38 IP:203.185.xxx.xxx 未訂閱
請見諒,在dbexpress下的tsqlquery有這兩個屬性嗎?為什麼我找不到呢?
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-23 14:42:22 IP:210.65.xxx.xxx 未訂閱
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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-23 15:18:52 IP:203.185.xxx.xxx 未訂閱
如果用adoquery係咪都可以連到odbc架?
BorlandUser
中階會員


發表:148
回覆:217
積分:73
註冊:2004-02-19

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-23 15:27:33 IP:203.185.xxx.xxx 未訂閱
雖然用dataset / datasetprovider是做到,不過在這裏我還到少許問題,就是我有一個priamry key,係auto generate的,如果我INSERT完一條record,要跳去下一行時,會warning 我必須填入那個primary key,但user還未save的那一刻,如果我pass了一些數字去那primary key,會做成primary key redundance.... 現在好煩...有什麼解決之道..
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-23 16:28:36 IP:210.65.xxx.xxx 未訂閱
Hi BorlandUser,    Method 1 : 使用 Append 指令,該 Primary Key 不給值(該欄位也無法給值),其他欄位值逐一給值 Method 2 : 用 Insert 指令,該 Primary Key 不給值(不針對該欄位 Insert),資料庫會自動產生    我用 Access 試過,兩種方式皆可行,不知你使用何種 DataBase?< > < > ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
BorlandUser
中階會員


發表:148
回覆:217
積分:73
註冊:2004-02-19

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-04-23 16:37:07 IP:203.185.xxx.xxx 未訂閱
我現在用mysql 你的兩個方法,該我試一試 晚點告知大家結果
BorlandUser
中階會員


發表:148
回覆:217
積分:73
註冊:2004-02-19

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-04-23 16:40:45 IP:203.185.xxx.xxx 未訂閱
你的兩個方法可否說清楚一點...不太明白 是否這樣 DBGrid.DataSource.DataSet.Append; / DBGrid.DataSource.DataSet.Insert;? 然後在grid才輸入data嗎?
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-04-23 16:56:43 IP:210.65.xxx.xxx 未訂閱
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

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-04-23 17:08:19 IP:203.185.xxx.xxx 未訂閱
你的意思是指用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內的元件 請各位大大幫忙指教一下.. >_< ....累死我了...
系統時間:2024-05-19 13:59:22
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!