2015-04-01 108 views
0

創建一個將XML文件中的企業數據鏈接到PROGRESS 4GL數據庫的過程...使用動態查詢,我將表名,字段名和它的值傳遞給當前使用我正在填充的表的臨時表副本...我希望不需要做的是爲填充的每個字段編寫特定的驗證子句......期望的是當字段是字段時,模式驗證子句將啓動正在寫...我期望我現在可能要做的是從實際表字段獲取驗證子句,構建一個運行時程序來執行驗證。 hndField:Validation-Expression和hndField:Validation-Message ...如果我必須爲每個字段構建一個運行時驗證程序,那麼這種類型會破壞動態查詢的目的。Dynamic Field Validation Progress-4GL

概念是導致我的悲傷:

使用:DEFINE TEMP-TABLE胡說類似foo。

1)在Blah中的字段中未顯示包含Foo驗證子句(已確認的查看hndField:Validate-Expression ...對於臨時表字段總是返回?)即使將Foo驗證和消息分配給臨時表字段,進行更新Blah.somefield未驗證。

2)使用Dynamic Query with; 分配hndField:Buffer-Value =「somevalue」無錯誤。 即使我使用Foo而不是Blah查詢,賦值不會使用SCHEMA字段驗證子句...甚至會添加VALIDATE Foo無錯誤。

3)緩衝區拷貝到胡說美孚還沒有出現做任何驗證

還能如何強制模式驗證,以保持該數據鏈接純粹的動態?

回答

0

您是否簡單地嘗試添加'VALIDATE'選項?

DEFINE TEMP-TABLE Blah LIKE Foo VALIDATE. 

這將與正常驗證一樣好(或差)。

從在線幫助:

VALIDATE

臨時表的字段繼承,從字典中,驗證表達式並驗證消息從數據庫表,表名。

就我個人而言,我更喜歡在代碼和數據庫外進行驗證。至少除了最基本的驗證(可能確保有詳細記錄的主記錄)。

我發現字典的方法有限,難以維護。但我想這只是基於意見而已。

+1

我同意。字典驗證是可怕的。它「做了一個很好的演示」(早在1985年......),但是否則就是一個糟糕的方法。 – 2015-04-01 11:26:04