2013-10-01 39 views
0

我有一個TClientDataSet存儲來自醫療儀器的數據。此客戶端數據集鏈接到網格以實時顯示數據。我的問題是,當用戶正在編輯數據,並且儀器發送一個新數據包時,用戶修改但尚未發佈的數據將丟失,因爲我只能在當前記錄上獲得TBookmark,追加新記錄,並且然後goto保存的書籤(這有時不是正確的記錄,顯然是由於新記錄)。如有必要,我可以檢查數據集的State,Post,然後設置State,我正在尋找更新客戶端數據集中的數據而不影響其State的方法。這甚至有可能嗎?是否可以在不更改當前記錄的情況下修改客戶端數據集中的數據?

+0

你的q讀取,就好像儀器的新數據被你的應用程序插入。那是對的嗎? – MartynA

+0

@MartynA準確地 –

回答

4

克隆數據集並修改克隆上的數據。

卡里延森上的文件是在這裏:http://edn.embarcadero.com/article/29416

基本上你需要像

var 
    lEdDataset: TClientdataset; 
begin 
    lEdDataset := TClientDataSet.create(nil); 
    try 
    lEdDataset.CloneCursor(SourceDataSet, True**); 
    StoreMedDeviceRecord(lEdDataset); 
    finally 
    lEdDataset.free; 
    end; 

**你需要閱讀的真/假設置的文件,並決定什麼你實際上需要(我不記得副手)

+0

作爲我自己答案的一個提示,也可以在'DeviceLogger'對象上打開這個克隆,而不是一直創建或釋放。這是否是更好的解決方案取決於您的應用程序。 –

+1

不要忘記,如果傳入數據正在由後臺線程處理,則需要一個同步對象來將寫入操作序列化爲基礎數據。 – afrazier

相關問題