2017-07-05 27 views
0

我一直在處理一個問題,最近卡住了。一個特定的程序(一個編譯後的.p)有代碼編寫,試圖將值保存到數據庫中的特定字段。VALIDATE語句導致一個值不會被存儲在數據庫中

在此表下有一個VAILDATE語句。這導致該值在執行更新操作時恢復。我在VALIDATE之前和之後發送消息,並且可以在VALIDATE之前看到更新的值,並在VALIDATE之後恢復。請有人可以幫我解決這個問題。提前謝謝了。

+1

這將有助於顯示VALIDATE語句 –

+1

另外要注意的是,'validate'將調用創建或寫入觸發器,如果​​您有任何定義的t能夠看看那裏發生了什麼。 – xander

回答

2

從文檔:

VALIDATE statement: 
Verifies that a record complies with mandatory field and unique index definitions. 

所以,如果你的更新VALIDATE後恢復就意味着至少一個的申請值不按限制。查看您的表格架構和字段值。檢查他們是否可以。您的問題不清楚您是否有權訪問代碼。如果您有權訪問該代碼並且如果VALIDATE語句具有無錯誤,請嘗試刪除無錯誤。如果你刪除了NO-ERROR,你可以看到錯誤信息,它可能有一些線索。

+0

謝謝奧斯汀。我有權訪問代碼,並且沒有錯誤。我仍然看不到任何錯誤。嘗試錯誤:狀態錯誤,但仍然沒有erros顯示。這對我來說很奇怪。 –

2

我的確模擬了你的問題。 最有可能的是,分配違反了索引以及更改您正在監視的字段的值。當OE解析VALIDATE並且不通過時,整個事務失敗。然後將記錄恢復(回滾)到最後一個有效值,以及舊值到您正在查看的字段。據我所知,這是預期的。

要解決這種行爲,我相信你應該

一)重寫塊只改變獨特的領域(雖然這並不能真正解決問題後驗證記錄。它只是把你從做業務稍後將被撤銷);或

b)將舊值保存到臨時表記錄,並在VALIDATE失敗時仍然需要時複製它們。

希望這給你一些想法,至少。

0

感謝您的幫助。我很感謝能成爲這樣一個偉大社區的一部分。

我現在發現是什麼導致了這一點。文件「https://documentation.progress.com/output/ua/OpenEdge_latest/index.html#page/dvref/validate-statement.html」最後有答案。我不知道VALIDATE語句的這種行爲。

再次感謝所有。

+0

對於這個誰不在乎追逐鏈接......最後一點是什麼? –

+0

嗨湯姆,我很新成爲一名成員的stackoverflow。我加入的一個理由是,我是你的職位的忠實粉絲。我沒有按照一些程序,然後請讓我知道,我會遵循。 –

+0

編輯你的答案並告訴我們導致你的問題的「最後一點」是什麼。很多人沒有跟着一個鏈接,通過長文檔閱讀並砌出你在想什麼「最後點」是再弄清楚它是否適用於他們的情況的時間和精力。除非有人專門尋找鏈接,否則該鏈接應被視爲支持腳註 - 不是實際的答案。答案應該是獨立的,不要求讀者繼續挖掘。恕我直言。 –

相關問題