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

取出資料庫 資料部份修改後再儲存出現錯誤!!

答題得分者是:kevin2004
lily720616
一般會員


發表:16
回覆:18
積分:6
註冊:2006-08-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-04-25 14:16:30 IP:60.249.xxx.xxx 訂閱
您好:
請問一下,
若今天我可以隨意新增元件的數量
並將每一個元件的長寬等訊息儲存再資料庫當中
在將資訊讀出並SHOW在畫面上
每一個元件都可以被移動位置
在軟體關閉時,會再一次的把元件的長寬資訊做儲存的動作
遇到一個問題,儲存時只會儲存再第一筆資料當中,所以如果有十個元件
每一筆都存再資料表的第一筆
這樣只會存到第十個元件的資料
如果從First用迴圈紀錄完一筆NEXT的方式
會有錯誤訊息說NOT IN EDIT OR INSERT MODE
為什麼會沒有辦法做儲存呢?
boson
中階會員


發表:74
回覆:155
積分:85
註冊:2004-07-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-04-25 14:48:46 IP:221.120.xxx.xxx 訂閱
很顯然你的程式有問題
post 出來讓大家看看
lily720616
一般會員


發表:16
回覆:18
積分:6
註冊:2006-08-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-04-26 13:52:24 IP:60.249.xxx.xxx 訂閱
<textarea class="delphi" rows="10" cols="60" name="code">With frmDM.tblC do begin frmDM.tblC.Open; frmDM.tblC.Edit; frmDM.tblC.First; for i := 1 to PnlMain.ControlCount-1 do begin if PnlMain.Controls[i] is tlabel then begin Lbl := tlabel(PnlMain.Controls[i]); FieldByName('Caption').AsString :=Lbl.Caption; FieldByName('left').AsInteger :=Lbl.left; FieldByName('top').AsInteger :=Lbl.top; FieldByName('width').AsInteger :=Lbl.width; FieldByName('height').AsInteger :=Lbl.height; end; frmDM.tblC.Next; //在這邊出現錯誤 end; Post ; end; </textarea>
編輯記錄
lily720616 重新編輯於 2007-04-26 13:58:05, 註解 無‧
bruce
中階會員


發表:19
回覆:121
積分:83
註冊:2002-04-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-04-26 15:29:01 IP:203.70.xxx.xxx 訂閱
  • frmDM.tblC.Edit;
  • frmDM.tblC.First;

    問題出在這哩:edit 之後,又first移動紀錄,這時候的table不會在編輯狀態,而是在瀏覽狀態
  • lily720616
    一般會員


    發表:16
    回覆:18
    積分:6
    註冊:2006-08-23

    發送簡訊給我
    #5 引用回覆 回覆 發表時間:2007-04-26 16:37:48 IP:60.249.xxx.xxx 訂閱
    您好:
    試出來了~謝謝^^
    那可以在請問一下
    除了這樣一筆一筆的儲存
    有一次全部一起存起來的方式嗎?
    kevin2004
    資深會員


    發表:18
    回覆:463
    積分:416
    註冊:2005-05-29

    發送簡訊給我
    #6 引用回覆 回覆 發表時間:2007-04-26 19:38:42 IP:61.231.xxx.xxx 訂閱
    全部儲存==>用BatchUpdate作

    有個問題,你這個Form上的TLabell的數目是固定的嗎?你沒提到它們的PK欄值的異動。
    為何不先殺光,再Append,似乎比較合理。

    寫到DB,不如寫到INI。
    ------
    Kevin
    lily720616
    一般會員


    發表:16
    回覆:18
    積分:6
    註冊:2006-08-23

    發送簡訊給我
    #7 引用回覆 回覆 發表時間:2007-04-27 08:57:39 IP:60.249.xxx.xxx 訂閱

    ===================引 用 kevin2004 文 章===================
    全部儲存==>用BatchUpdate作

    有個問題,你這個Form上的TLabell的數目是固定的嗎?你沒提到它們的PK欄值的異動。
    為何不先殺光,再Append,似乎比較合理。

    寫到DB,不如寫到INI。

    Label數目不是固定的~可以一直新增
    新增後的也可以移動變更位置~所以值有可能一直變
    請問如果每次都殺光在APPEND~資料量大的時候是否會速度會有影響??
    另外這樣的方式寫到INI會比較適當嗎???
    如果這樣每次都要全部重新儲存一次,對軟體是否會有影響呢??

    目前是規劃按下BUTTON後,會新增所要的LABEL數量以及將新增的LABEL資料存到資料庫
    在FORM CLOSE的地方
    因為LABEL的值可能會改變所以再把所有資料做一次儲存
    不知道這樣的方式運作久了是否會有問題產生??

    麻煩大家解惑了~謝謝
    kevin2004
    資深會員


    發表:18
    回覆:463
    積分:416
    註冊:2005-05-29

    發送簡訊給我
    #8 引用回覆 回覆 發表時間:2007-04-27 09:20:38 IP:61.219.xxx.xxx 訂閱
    ==================================引用文章===========================================
    Label數目不是固定的~可以一直新增
    新增後的也可以移動變更位置~所以值有可能一直變
    ==>這種方式當然要用先殺再Append的方式,不然你如何對回到原先那個元件。
    請問如果每次都殺光在APPEND~資料量大的時候是否會速度會有影響??
    ==>放心,不會
    另外這樣的方式寫到INI會比較適當嗎???
    ==>看你是定位成多人網路共用或只是記住某臺電腦某人的操作而定。
    ==>INI雖是Win31的老東西,但寶刀未老,誰說一定要用Reg或XML這些偉大的東西。
    ==>INI的64K上限絕對夠你這些用的。
    如果這樣每次都要全部重新儲存一次,對軟體是否會有影響呢??
    ==>沒變,就別存了。

    目前是規劃按下BUTTON後,會新增所要的LABEL數量以及將新增的LABEL資料存到資料庫
    在FORM CLOSE的地方
    因為LABEL的值可能會改變所以再把所有資料做一次儲存
    ==>用 db好了
    不知道這樣的方式運作久了是否會有問題產生??
    ==>別開玩笑
    =====================================================================================

    ------
    Kevin
    lily720616
    一般會員


    發表:16
    回覆:18
    積分:6
    註冊:2006-08-23

    發送簡訊給我
    #9 引用回覆 回覆 發表時間:2007-04-27 10:17:24 IP:60.249.xxx.xxx 訂閱
    謝謝您花時間回覆,
    兩種方式我都試試看
    另外~我試著想要把INI裡面的資料全部刪除
    刪除的部份我只有看到DELETEKEY
    沒有辦法做到把所有的資料完全刪除
    只否有可以把INI檔案裡的資料完全刪除的指令呢~謝謝^^"

    //DELPHI5
    kevin2004
    資深會員


    發表:18
    回覆:463
    積分:416
    註冊:2005-05-29

    發送簡訊給我
    #10 引用回覆 回覆 發表時間:2007-04-27 10:44:11 IP:61.219.xxx.xxx 訂閱
    沒有辦法做到把所有的資料完全刪除
    只否有可以把INI檔案裡的資料完全刪除的指令呢
    ==>INI有個特性是不告不理,如果你不提要處理那個Item的話,它是不會幫你作的。這有時是有點困擾,但大部份是不會有問題,及應該是正確的處理方式。
    ==>所以常常在INI中會出現好多過時不用的控制值留在那。反正程式是你寫的,大概也不會造成一些很嚴重的問題。有時如果採取掃瞄處理的話,那最好在某些點將Section全部清除及重建。何時清除重建,只有你自己知道。
    ==>手邊沒Delphi,等下回公司後再查查如何殺Section,下午前回復。
    ------
    Kevin
    kevin2004
    資深會員


    發表:18
    回覆:463
    積分:416
    註冊:2005-05-29

    發送簡訊給我
    #11 引用回覆 回覆 發表時間:2007-04-27 21:24:01 IP:61.231.xxx.xxx 訂閱
    沒有辦法做到把所有的資料完全刪除................
    另外~我試著想要把INI裡面的資料全部刪除
    ==>你指的是刪INI_File的所有內容嗎?那乾脆將整個INI_File刪除就好了。
    ==>我想你要的應該是刪某個Section,以免在這個Section中留下垃圾,那就用EraseSection,再將整個Section完整寫回好了。
    ==>Delphi-TIniFile只有提供單一ItemValue的寫入,如果你INI用的很多,你可能要自己寫個Func來作這個Section寫入的動作。
    刪除的部份我只有看到DELETEKEY
    ==>如果你指的是刪Section,那用TIniFile.EraseSection好了,可以清的光光的
    ==>procedure EraseSection(const Section: String); override;
    ==>Erases an entire section of an INI file.
    ==>可能還要搭配個TIniFile.ReadSection與ReadSectionS來運作

    ------
    Kevin
    編輯記錄
    kevin2004 重新編輯於 2007-04-27 21:25:05, 註解 無‧
    lily720616
    一般會員


    發表:16
    回覆:18
    積分:6
    註冊:2006-08-23

    發送簡訊給我
    #12 引用回覆 回覆 發表時間:2007-05-04 08:40:27 IP:60.249.xxx.xxx 訂閱
    謝謝您的回覆,這個部分我在試試,有問題再發問^^
    系統時間:2024-05-18 18:27:46
    聯絡我們 | Delphi K.Top討論版
    本站聲明
    1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
    2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
    3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!