2016-07-19 25 views
0

我有一些問題想值分配給基於業務組件(外鍵交易)我的交易屬性。Genexus X EV 3分配數據元素交易

  • 如果我要在事件然後分配,我得到一個spc0150錯誤(Cannot update database. Changes to database are only allowed in procedures
  • 如果我把這個規則,我得到一個spc0158警告(Rule 'OperacionChTasaInteres = &Analisis.Analisistasa IF &Cambioempresa .AND. .NOT. &Errorempresa ; ' not included.)和不執行規則。

我有很多的屬性來分配,所以我想最後和骯髒的方式是在規則,程序調用讀取(再次)交易和outputparameters返回值,但如果我必須這樣做很多時候,我不得不創建很多程序,只是爲了初始化和計算。 試過這個之後,我有了這個過程,但是因爲條件變量是分配給一個事件的,所以規則永遠不會被執行。

骯髒的選項,我認爲是本外鍵交易所有需要的屬性添加到交易,我需要他的領域,但我會用很長的和骯髒的交易完成。

非常感謝,Ariel

+0

你能解釋一下數據模型,交易的結構,什麼是規則不起作用? –

回答

0

您在哪裏使用業務組件? 有3種方法中GeneXus插入,更新或刪除數據:

  1. 對象事務:在這裏你不僅可以輸入數據,你可以改變 它在「實施細則」(即:ATT1 = ATT2 * ATT3如果條件;),你不能在「事件」中做 這個。
  2. 程序,採用「對於每一個」更新或刪除, 和「新」來插入。
  3. 業務組件(不推薦,它會大量阻止 表):在您設置「業務組件」= True的事務中,然後在過程 或webpanel中定義基於此事務的變量。你不應該在一個 交易對象中使用業務組件。
+0

嗨塞巴斯蒂安。謝謝你的幫助。我在一個事務中,所以我需要更改Rule中的數據,但數據來自一個Foreign Key表,所以我嘗試使用Rule,但是當我提出這個問題時,規則不會被執行,那麼我tryied在規則作爲輸出參數的過程,但不執行的過程過於 –

+0

我認爲AnalisisTasa是infered屬性,你必須在交易屬性AnalisiId(FK) '* OperacionId OperacionChTasaInteres AnalisisId(FK ) AnalisisTasa' 規則應該是:'OperacionChTasaInteres = AnalisisTasa如果與CambioEmpresa,而不是與ErrorEmpresa和之後(AnalisisId);' 還記得 「不包含」 可能是因爲變量 「&CambioEmpresa」 和 「&ErrorEmpresa」 不存在設置在任何地方也不是收到作爲參數。 –

+0

你建議是最後一個選項,因爲我有很多字段,所以我不想用我需要的所有屬性來計算我的交易,所以我嘗試使用商業組件爲外國人鍵。還有另外一個選擇來做到這一點? –

0

如果在IsValid事件中設置了變量,請嘗試將變量放在窗體中。您可以將它們放在一個表格中並將其隱藏在開始事件中。如果不起作用,請添加規則Accept(& Variable1);接受(& VariableX); 記住你會隱藏它們,所以,如果它們是可編輯的,就沒問題。

+0

再次感謝。我測試了你說的話,但是在IsValid事件中分配條件變量的值之後,它會刷新屏幕中變量的值,但不會觸發規則(因爲規則是在事件之前執行的)。我現在使用的workarroud是在沒有所有條件的情況下觸發規則,但我不知道我是否可以爲所有情況做到這一點 –

+0

您使用過:OperacionChTasaInteres =&Analisistasa如果&Cambioempresa而不是&Errorempresa和After( [Atribute yuo定義了IsValidEvent)?你在IsValid中做什麼?你不能在規則中做到嗎? –

+0

謝謝。是的,我已經檢查過,但沒有。我已經檢查過添加了一個JavaScript,用於調用該字段的onchange和onblur,但沒有 –