我正在使用Delphi 2010並使用dbexpress連接到MySQL數據庫。連接工作100%,我正在檢索我的數據。當我嘗試通過dbGrid更新數據時出現問題。我正在瀏覽表格中的所有條目,對它們執行檢查。當調用ApplyUpdates方法時,我得到「未找到記錄或被其他用戶更改」。Delphi 2010通過ClientDataSet失敗的MySQL更新
將DataSetProvider上的updateMode更改爲upWhereKeyOnly,我現在處於接收「無法找到記錄,未指定密鑰」的情況。我已經嘗試加入
BasysClientDataSet.FieldByName('idPolicy').ProviderFlags := [pfInUpdate, pfInWhere, pfInKey];
這樣的代碼,但我得到相同的錯誤。我曾嘗試加入ProviderFlags到的SQLQuery但我沒有得到這樣的領域「idPolicy」
包含dbExpress的源代碼,因此您可以調試到創建實際SQL UPDATE語句及其WHERE子句的位置。它幫助我在dbExpress應用程序中找到類似問題的原因。 – mjn
Hey Mjn,感謝您的回覆,我很確定我知道爲什麼會這樣做,當將數據從MySQL傳輸到Delphi並返回時,會出現某些DateTimeStamps和浮點值的沮喪,我已經閱讀了所有內容通過互聯網瞭解它。那就是我正在尋找將UpdateMode更改爲upWhereKeyOnly並指定它應該用於更新的主鍵列的原因。我採取了它在數據庫上執行的查詢,並刪除導致問題的列並在數據庫上手動運行它,並且它可以正常工作。 – LouwEtienne
好吧,所以主要問題(不使用解決方法)是如何將updatemode設置爲upWhereKeyOnly而不會導致「無法找到記錄,無指定密鑰」錯誤消息?也許如果這更清楚,誰知道它會回答。但另一方面,由於併發用戶可以相互覆蓋其他更改,因此在多用戶環境中只有上下關鍵是危險的。 – mjn