2017-07-04 8 views
0

ダイアグラムまたはプロジェクトブラウザーのエレメントのダブルクリック時にEAエレメントのプロパティービューの代わりにカスタマイズフォームを開きます。つまり、EA_OnContextItemDoubleClickedイベントを使用しています(表示ダイアログを使用してカスタマイズされたフォームをダブルクリックするとプロパティビューが開きません)。カスタマイズされたフォームでは、API要素を使用してEA要素を更新しようとしています。名前を付けて更新します。しかし問題は、プロジェクトブラウザに反映されている要素名を更新するときですが、更新されたEA要素のEAプロパティビューを開いて[OK]ボタンをクリックすると、更新は古い値(旧名)に戻ります。 下記のコードをご覧ください。EAエレメントのダブルクリックの更新

public virtual bool EA_OnContextItemDoubleClicked(EA.Repository Repository,string GUID, EA.ObjectType ot) 
     { 
        EA.Element ele= Repository.GetElementByGuid(GUID); 
        ele.Name = "Test"; 
        ele.Update(); 

repository.AdviseElementChange(ele.ElementID); 


      } 
+0

どのEAバージョンですか?これはSparxに報告すべきバグのように聞こえる。 –

+0

私たちはEAバージョン12.1を使用しています。 APIではなく更新クエリを使用している場合、どのようにプロジェクトブラウザの変更を反映できるか。リフレッシュモデルビューやパッケージアップデートを使用している場合、EAはクラッシュしています。 –

+0

あなたのコードを投稿して、問題がどこに埋め込まれているかを確認する必要があります。 「なぜ動作しないのですか」と尋ねるだけで、ここでは話題にはなりません。 –

答えて

1

あなたがやっていることは、保護されていない武器で遊んでいることです。 NEVERExecuteを使用することは避けられません(パフォーマンスが必須である場合は、APIに機能がない場合)。だからあなたのコードにExecuteの理由はありません。 Updateの前に名前を"test"に設定し、Executeステートメントを削除します。

さらに、結果セットがないため、t_object.ea_guid=GUIDは決して何もしません。 GUIDはフィールドではないので、例外がスローされます。あなたが意味すると思います。

Repository.Execute("Update t_object set t_object.Name='test' where t_object.ea_guid='" + GUID + "'"); 

しかし、もう一度:上記を参照してください!

0

このAPIリポジトリを使用します.AdviseElementChange(element.ElementID)上記の問題は解決されました。

関連する問題