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

找不到要更新的列

尚未結案
mtyen
一般會員


發表:13
回覆:16
積分:5
註冊:2004-02-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-15 18:54:05 IP:210.59.xxx.xxx 未訂閱
各位大大: 請問我用ADOConnection, ADODataSet, DataSource, DBGrid, 將ADODataSet所 找到Table的值給DataSource,在從DBGrid show出,然後放2個button,一個Add record,一個Delete record,為何每次Delete都會產生Error, "找不到要更新的列",我嘗試在ADODataSet->Delete()前,先ADODataSet->Close(); ADODataSet-> Open(),還是會有Error,請問是何原因,之前此問題有人post過,但我不大了解, 請問有人知道嗎?煩請告知?
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-16 00:55:27 IP:219.68.xxx.xxx 未訂閱
參考以下這篇。 http://delphi.ktop.com.tw/topic.php?topic_id=69116
mtyen
一般會員


發表:13
回覆:16
積分:5
註冊:2004-02-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-19 11:20:06 IP:210.59.xxx.xxx 未訂閱
supman大大: 上篇文章寫道: This happens because ADO needs to find the record you are ed-iting in your database to make a change to it. If it can't find the recor-d this error is generated. ADODataSet1.Properties['Update Criteria'].value :=adCriteria-Key 請問BCB的程式要如何修改,我有一個button,按delete後,程式是這樣 void __fastcall TForm1::Button3Click(TObject *Sender) { ADODataSet1->Delete(); } 以下這行要放在哪裡,要如何改成BCB ADODataSet1.Properties['Update Criteria'].value :=adCriteria-Key
mtyen
一般會員


發表:13
回覆:16
積分:5
註冊:2004-02-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-19 11:26:54 IP:210.59.xxx.xxx 未訂閱
我忘了告訴各位,這是從DBGrid,去選擇一列,來刪除,而不是 只有下sql的語法,若只是下sql語法,而不從DBGrid show出, 好像沒問題.
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-07-22 02:52:14 IP:219.68.xxx.xxx 未訂閱
你說那一行,很抱歉,我也不知道怎麼翻成C的@@" 不知道你資料庫中有建立主索引嗎?
mtyen
一般會員


發表:13
回覆:16
積分:5
註冊:2004-02-03

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-07-26 11:36:42 IP:210.59.xxx.xxx 未訂閱
Supman: 我原先用DBF 的資料庫,都會有問題,改成Paradox,就好了,我想可能是 Paradox資料庫,可防止相同primary key的data, DBF不會,造成更新會 有問題.
raymond5
一般會員


發表:5
回覆:13
積分:3
註冊:2003-10-03

發送簡訊給我
#7 引用回覆 回覆 發表時間:2010-11-24 11:02:57 IP:220.128.xxx.xxx 訂閱
關於"找不到要更新的列,最後讀取的值已變更"這個問題,昨天也碰過,看了版上大大的回答,仍然不甚瞭解,後來花了很多時間,終於查出原因,這個錯誤訊息好像要告訴你你要變更的列已不見了,其實它還在,只是Delphi要更新資料時,會把存在記憶體的資料與資料庫再比對一次,我碰到的問題就是,某一個Decimal欄位一開始值不是0,而是null,讀到記憶體時變成什麼值就不知道了,這個時候再修改它的值存回時,就會出現上述的錯誤,此時把這個Decimal欄位的初始值改為0,重新再執行後,就可以了,以上是我的經驗,也許不能解決上述的問題,但我個人却碰過好幾次,這個經驗也許對某些人有用。
------
Raymond Lee
aftcast
站務副站長


發表:81
回覆:1482
積分:1762
註冊:2002-11-21

發送簡訊給我
#8 引用回覆 回覆 發表時間:2010-11-24 18:31:07 IP:210.64.xxx.xxx 訂閱
不知是否該table有設定pk ?  若沒有pk的情形下,指向該筆資料,就會使用一些特別的比對方式來找到那筆,而恰好一些欄位又是null這種特別值,所以比對不出來…

結論: 我猜應該是 table 沒建立唯一的pk 會有這類的事發生,不知是否如此?


===================引 用 raymond5 文 章===================
關於"找不到要更新的列,最後讀取的值已變更"這個問題,昨天也碰過,看了版上大大的回答,仍然不甚瞭解,後來花了很多時間,終於查出原因,這個錯誤訊息好像要告訴你你要變更的列已不見了,其實它還在,只是Delphi要更新資料時,會把存在記憶體的資料與資料庫再比對一次,我碰到的問題就是,某一個Decimal欄位一開始值不是0,而是null,讀到記憶體時變成什麼值就不知道了,這個時候再修改它的值存回時,就會出現上述的錯誤,此時把這個Decimal欄位的初始值改為0,重新再執行後,就可以了,以上是我的經驗,也許不能解決上述的問題,但我個人却碰過好幾次,這個經驗也許對某些人有用。
------



蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
raymond5
一般會員


發表:5
回覆:13
積分:3
註冊:2003-10-03

發送簡訊給我
#9 引用回覆 回覆 發表時間:2010-11-26 17:42:28 IP:220.128.xxx.xxx 訂閱
感謝Aftcast關心我這個問題,我的情況不是PK的問題,這個Table已經有兩個PK值,一個是自動遞增的id,一個是單號(sheetno)。實際的情況是,這個Table維護的程式已經用一陣子了,前兩天因為USER要再加一個數字的欄位,就直接加上去了,也沒注意到它的機定值是null,結果就出現”找不到要更新的列..."的問題,個人覺得這個錯誤訊息很容易引導人往錯誤的方向思考,所以就提了出來,也許大家會碰的到。
------
Raymond Lee
aftcast
站務副站長


發表:81
回覆:1482
積分:1762
註冊:2002-11-21

發送簡訊給我
#10 引用回覆 回覆 發表時間:2010-11-26 18:44:30 IP:210.64.xxx.xxx 訂閱
別客氣啦,大哥 :)

我也是好奇而已,不過照你的情形來講,感覺上只要是table中存在著null值,就好像會出問題,不知這樣的推論會不會不夠準備。因為你說該table已用一陣子,也都很ok,唯就是加一欄,然後預設值是null,然後試著去改那一欄,就掛了…

這是很好的information。但可以進一步的了解一下是哪種db呢? access? mssql? ?? 用的是哪一種連結方式呢? tadocommand ? tadoquery? …
因為樓上的曾有說改了db 就好了… 不知和db是否有關? 我是覺得和用什麼方式來connect 比較有關,所以,如果可以,補充一下這方面的資料,大家更有收獲了!

當然,消極一點的做法就是… 盡量避開 null ,把defual value 都設為0 之類的…但有些時候又必需要null才方面做一些判斷… 二難!

===================引 用 raymond5 文 章===================
感謝Aftcast關心我這個問題,我的情況不是PK的問題,這個Table已經有兩個PK值,一個是自動遞增的id,一個是單號(sheetno)。實際的情況是,這個Table維護的程式已經用一陣子了,前兩天因為USER要再加一個數字的欄位,就直接加上去了,也沒注意到它的機定值是null,結果就出現”找不到要更新的列..."的問題,個人覺得這個錯誤訊息很容易引導人往錯誤的方向思考,所以就提了出來,也許大家會碰的到。
------



蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
raymond5
一般會員


發表:5
回覆:13
積分:3
註冊:2003-10-03

發送簡訊給我
#11 引用回覆 回覆 發表時間:2010-11-30 11:54:47 IP:220.128.xxx.xxx 訂閱
這個現象是發生在MySQL,是用MySQL ODBC 5.1 Driver,程式是Delphi 7用ADOQuery存取,其他的資料庫沒試過就不清楚了,不知道在BCB會不會也有同樣的現象。
------
Raymond Lee
系統時間:2017-10-20 5:50:37
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!