關於 ttable post後, 想拿回資料的問題 |
尚未結案
|
MatthewSong
一般會員 發表:17 回覆:17 積分:6 註冊:2007-09-24 發送簡訊給我 |
現在我的的case是
1. 有一個 TABLE - A ,其中一個field - indexNO 是auto number來的 2. 進行insert後, 我想write log 3. write log想把 從前的 TTABLE insert入去的 indexNO 拿出來放入我的log中 現在就是出現一個問題 當我post後, 本身Ttable 沒有更新,拿不到 auto的number 我行 ttable.refresh 也不行 想問下,在這種情況下, 我應該怎樣去做呢? with tbSelect do begin open; insert; FieldByName('Name').AsString := 'John'; Post; WriteLog(FieldByName('indexNO').AsInteger ) <----------- 這里不能更新拿到auto number end; |
max5020
資深會員 發表:30 回覆:277 積分:321 註冊:2003-06-04 發送簡訊給我 |
|
MatthewSong
一般會員 發表:17 回覆:17 積分:6 註冊:2007-09-24 發送簡訊給我 |
|
max5020
資深會員 發表:30 回覆:277 積分:321 註冊:2003-06-04 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
1.你的table 後頭是那一種資料庫
2.這是一個老問題了, 如何取得唯一序號, 在多人使用上, 目前我還沒有看到十全十美, 保證沒有問題的取法 3.任何auto increase 的欄位, 後端一定都有一個database engine 在控管, 所以基本上使用 select max(...)是可以取得的 dbf檔 --> 不支援 db檔 --> bde 支援 mdf檔 --> M$ SQL gdb檔 --> Interbase/FireBird 我猜你是 paradox 的資料庫, 你要取得序號, open 後一定要 close, 再open , 資料才會 reflash, 也才能取得 如果一直維持在 open, buffer 是不會更新的 ===================引 用 MatthewSong 文 章=================== 現在我的的case是 1. 有一個 TABLE - A ,其中一個field - indexNO 是auto number來的 2. 進行insert後, 我想write log 3. write log想把 從前的 TTABLE insert入去的 indexNO 拿出來放入我的log中 現在就是出現一個問題 當我post後, 本身Ttable 沒有更新,拿不到 auto的number 我行 ttable.refresh 也不行 想問下,在這種情況下, 我應該怎樣去做呢? with tbSelect do begin open; insert; FieldByName('Name').AsString := 'John'; Post; WriteLog(FieldByName('indexNO').AsInteger ) <----------- 這里不能更新拿到auto number end; |
earthday
一般會員 發表:3 回覆:11 積分:2 註冊:2004-10-17 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
其實這個題目的確可以好好討論一番, 大家都把重點放在正常的運作, 當然任何正常操作下, 利用其他的資料庫來記錄各種狀況, 當正常結束時都是在我們控制範圍內, 可以做標準程序, 但電腦不可能沒有當機, 各位是否想過, 一旦在當機情況下, 被加入的記錄如何在重新啟動後去判斷是正常或異常寫入的狀況, 這才是程式設計上真正要考量的, 因為當機的狀況
1.程式當掉 2.斷電, 被人關機, 硬碟故障, 按了 CTRL-ALT-DEL, 中毒被重開... 3.電腦爆炸了(我指的是LOCAL炸毀了, 但主機還在, 一般這類資料庫都會在主機) 4.透過遠端連入的PC, 遠端更是難掌握其異常 5.還有很多, 不勝枚舉 ===================引 用 earthday 文 章=================== 通常在一個多人使用的資料庫中, 我會設計為需登入使用,即須輸入使用者帳號及密碼 因此,我在每個table增加兩個欄位,使用者帳號(user)及日期時間(datetime) 這樣一來,我就可以知道何時被何人改過該筆資料 因此,當您使用auto number時 您可以 refresh table 後 用Select Max(indeNo) From Table Where user = "你的帳號" 這樣你就可以取回剛剛存入的值了 希望有解決您的問題 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |