Dynamics AX メモ内検索 / 「TableをX++で作るには?」で検索した結果
-
TableをX++で作るには?
TableをX++で作るには、AOTの操作関数を使います。 クラスを作成し(例:TableManagerClass)、以下のようなメソッドを定義します。 static void CreateTable(str _tableName) { // テーブルを作成する TreeNode treeNode; str tablePath = #TablesPath + "\\"; ; if(TreeNode findNode(tablePath + _tableName)) // テーブルが既に存在した場合 { info(tablePath + _tableName + " は既に存在しています"); } else { // 追加先の...
-
一覧
...? AOT TableをX++で作るには? デバッグ・テスト ベストプラクティスのチェック処理を追加するには? ベストプラクティスを有効にするには? コントロールのオーバーライドメソッドでブレークするには? UnitTest用のプロジェクトを作成するには? その他 定数を使うには? コンフィギュレーションキーを使って項目の表示・非表示を切り替えるには? 複数言語に対応したラベルを作成するには? ラベルの文字列をX++から表示するには? XMLコメントのテンプレートを使うには? 改行を扱うには? 埋め込みリソースの一覧を見るには?
-
ラベルの文字列をX++から表示するには?
ラベルの文字列をX++から表示するには、 SysLabelのメソッドを使います。 static void JobTestLabel(Args _args) { str value; ; value = SysLabel labelId2String2(literalstr( @SYS00001 )); info(value); } ※ 言語はユーザーのオプションで設定されている言語になります。 ※ labelId2String2 の第二引数で言語を指定することもできます。 参考: http //msdn.microsoft.com/en-us/library/ee330232%28v=ax.50%29.aspx
-
Gridを表示更新するには?
Gridを表示更新するには、 DataSource の reread() と research() を実行する。 ※複数の DataSource から表示している場合は、 すべての DataSource について実行する必要がある? MyTable_ds.reread(); MyTable_ds.research(); 参考: http //dynamicsuser.net/forums/p/29822/156880.aspx
-
行を新規作成したときに初期値を入れるには?
行を新規作成したときに初期値を入れるには、 Table の initValue() メソッドをオーバーライドします。 public void initValue() { ; /* ユーザー名を初期値に入れる */ this.FieldName = AxaptaUserManager curUserName(); super(); }
-
Rangeをクリアするには?
Rangeを全てクリアするには、 clearRanges() メソッドを使います。 QueryBuildDataSource qbds; ; qbds = this.query().dataSourceNo(1); qbds.clearRanges(); Rangeを個別にクリアするには、 clearRange メソッドを使います。 QueryBuildDataSource qbds; ; qbds = this.query().dataSourceNo(1); qbds.clearRange(fieeldnum(テーブル名, フィールド名));
-
改行を扱うには?
テーブル等で意図的に改行を扱うには、改行コードの変換が必要。 ※Excelでの改行については、Inportした時にテーブルに反映されるので、 変換は不要。 select時 TableReturnTest myTable; select firstonly * from myTable; /* 改行コードに変換 */ info(strfmtLB(myTable.Field1)); insert時 str testText; TableReturnTest myTable; /* 改行コードを\nに変換 */ testText = strReplace(StringEdit.valueStr(), num2char(10), @ \n ); info(testText); ...
-
QueryでSUMを使うには?
orderMode で OrderMode GROUPBY を指定し、 addSortField でグループ化したいフィールドを指定する。 ※データソースに TestTable が存在していて、 フィールドに Base(string) と Amount(real) を含んでいるとする。 Query query; QueryBuildDataSource qbDataSource; ; query = new Query(TestTable_ds.query()); qbDataSource = query.dataSourceName("TestTable"); /* Base毎に集計 */ qbDataSource.orderMode(OrderMode GROUPBY); qbDataSource...
-
Queryでテーブル結合(Join)を行うには?
Queryでテーブル結合(Join)を行うには、 joinMode の設定をします。 Query query = new Query(); QueryBuildDataSource queryBuildDSSalesTable; QueryBuildDataSource queryBuildDSSalesLine; QueryBuildRange queryBuildRange; QueryRun queryRun; SalesLine salesLine; SalesTable salesTable; ; // Setup the prima...
-
SysDatabaseTransDelete(トランザクション削除)
SysDatabaseTransDeleteについてのメモ ●処理の抜粋 ■トランザクション系のテーブルに対する処理 (TableGroup Transaction、 TableGroup WorksheetHeader、 TableGroup WorksheetLine、のテーブル) switch(sysDictTable.id()) { case tablenum(CustCollectionLetterLine) case tablenum(InventDim) case tablenum(DocuRef) case tablenum(DirECommunicationAddress) case tablenum(DirPartyAddressRe...
-
他のオブジェクト指向言語との違い
言語仕様 staticな変数が使えない(宣言できない) publicな変数が使えない(宣言できない)? ただし、Global Variables というもの(うまく動かない?)はある。 http //msdn.microsoft.com/en-us/library/aa891830.aspx プライベートメソッドを呼ぶ場合は、必ずthis、または、クラス名(staticな場合)がメソッド名の前に必要。 staticなメソッドはオーバーライドできない。 IDE 日本語入力をするとテキストカーソルがずれる。 ボタンの clicked() メソッドなどで、ブレークポイントが効かない。 コントロールのオーバーライドメソッドでブレークするには?
-
QueryをSQL形式で見るには?
QueryをSQL形式で見るには、 QueryBuildDataSource の ToString() メソッドを使う。 ※ qbds という QueryBuildDataSource が存在しているとする。 info(qbds.ToString());
-
フォーム名を文字列として取得するには?
フォームのクラス名を文字列として取得するには、 組み込み関数 formstr を使う。 ※FormSampleというフォームが存在したとします。 str name; ; super(); /* フォーム名を取得 */ name = formstr(FormSample);
-
埋め込みリソースの一覧を見るには?
埋め込みリソースの一覧を見るには、 Microsoft Dynamics AX メニュー > ツール > 開発ツール > 埋め込みリソース を選択する。
-
レポートで複数のDesignを出し分けるには?
レポートで複数の Design を出し分けるには、 ReportRun で使いたい Design を設定すればよい。 ※レポート「AssetAcquisition」のデザインに「ReportDesign2」が存在しているとする。 public void SetDesign() { Args ArgList = new Args(reportStr("AssetAcquisition")); ReportRun rr = new ReportRun(ArgList); /* デザインを指定 */ rr.design( ReportDesign2 ); /* レポートを表示 */ rr.run(); } 参考: http //msdn.microsoft.com/en-us/library/aa611590%28...
-
ログインユーザーIDからグループIDを取得するには?
ログインユーザーIDからグループIDを取得するには 以下のように記述する。 static void JobUserRight(Args _args) { UserGroupList userGroupList; ; WHILE SELECT userGroupList WHERE userGroupList.userId == curuserid() // userGroupList.groupId == "調べたいグループID" { info(userGroupList.groupId); } } 参考: http //www.komkid.net/2010/10/axapta-find-user-group-of-current-userid/
-
フォームから子フォームを表示させるには?
フォームから子フォームを表示するには FormRunを使用する。 ※「FormTest」というフォームが存在するとします。 Args formArgs; FormRun formRun; ; /* フォームを表示 */ formArgs = new args(); formArgs.name("FormTest"); formRun = Classfactory.formRunClass(formArgs); formRun.run(); formRun.detach(); 子フォームに値を渡したい場合は、 Args の parm() を使用する。 親フォーム側 ※「FormTest」というフォームが存在するとします。 Args formArgs; FormRun f...
-
ヘッダー行を削除した際に明細行も削除するには?
ヘッダー行を削除した際に明細行も削除するには、 ヘッダー用のテーブルに「Delete Action」を作成する。 そして、明細用のテーブルにヘッダー用テーブルへのRelationを設定する。
-
Gridの初期表示でデータを非表示にするには?
Gridの初期表示でデータを非表示にするには、 DataSourceのプロパティ「AutoSearch」をNoにする。
-
ベストプラクティスを有効にするには?
ベストプラクティスを有効にするには、 ユーザー毎に設定が必要です。 (1)Microsoft Dynamics AX > ツール > オプション を選択します。 (2)オプションダイアログで、「コンパイラ」ボタンをクリック。 (3)診断レベルを「レベル 4」にして、OKボタンを押します。 (4)オプションダイアログで、「ベストプラクティス」ボタンをクリック。 (5)警告レベルを「すべて」にし、 有効にしたいベストプラクティスにチェックを付けます。 参考: http //msdn.microsoft.com/en-us/library/cc967377%28v=ax.50%29.aspx http //msdn.microsoft.com/en-us/library/aa874347%28v=ax.50%29.aspx
-
ベストプラクティスのチェック処理を追加するには?
ベストプラクティスのチェック処理を追加するには、 「SysBPCheck~」と名の付くClassを修正します。 たとえば、各メソッドにヘッダーコメントが付いているかどうかをチェックするには、 以下のような手順でチェック処理を追加することができます。 (1)SysBPCheckMemberFunction クラスにメソッドを新規作成し、 以下のように書きます。 private void checkCommentHeader() { str source = memberFunction.AOTgetSource(); ; // Check if the comment is included. if (!strStartsWith(source, // )) { // Report the error....
-
複数言語に対応したラベルを作成するには?
複数言語に対応したラベルを作成するには ラベルエディタを使用します。 ① Microsoft Dynamics AX メニューから、 ツール > 開発ツール > ラベル > ラベルエディタ を開きます。 ② ラベルを選択した状態で、 「言語」を希望の言語にあわせます。(例:en-us) ③ グリッドの「ラベル」欄が空欄になるので、 設定したい文字列を入力します。
-
UnitTest用のプロジェクトを作成するには?
UnitTest用のプロジェクトを作成するには、 プロジェクトウィンドウで右クリックし、 新規 > SysTestProject を選択します。 さらに、 TestSuite を右クリックし、 新規 > Class を選択し、クラス定義を書き換えます。 (SysTestCase を継承する) class TestCalculator extends SysTestCase { } SysTestCase クラスは、SysTestAssert クラスを継承しており、 全ての Assert methods が定義されています。 テストメソッドを追加したら、 テストプロジェクトを右クリックし、 アドイン > テストの実行 を選択します。 参考: http //axaptapedia.com/Unit_Testing
-
テーブルを更新した後、フォームなどのDataSourceと同期するには?
テーブルを更新(フィールド追加など)した後、フォームなどのDataSourceと同期するには、 AOTツリーで、フォームを右クリックし、「復元」を選択します。 レポートについても同様の操作で同期が可能です。 参考: http //axdaily.blogspot.jp/2010/02/synchronizing-form-data-source-wit.html
-
Q&A
Q. 設定した Label が反映されない。 →A. Label を使っているオブジェクトをバージョン管理に追加する? Q. View で Outer Join したい。 →A. Outer Join した Query を作成し、 それを View に割り当てる。 Q. クライアント起動時に接続が確立できない旨のダイアログが表示される。 (サーバーへの ping は通る) Connection with the application Object Server could not be established →A. サーバーのAOSサービスが終了してしまっている可能性がある。 サーバー上でAOSサービスが停止していたら、開始する。 Q. レポートの表示はMenuItemで行うのと、ReportRunで行...
-
ログインユーザーIDから従業員IDを取得するには?
ログインユーザーIDから従業員IDを取得するには 以下のように記述する。 str emplIdText; ; emplIdText = SysCompanyUserInfo find(curuserid()).EmplId;
-
StringEditの縦幅を中の文字列によって変化させるには?
StringEdit の縦幅を中の文字列によって変化させるには 改行コードの数を求めて、 その分、StringEdit の行数を増加させる void updateStringEditDisplayHeight(FormStringControl _stringEdit) { // テキストボックスの縦幅を調整する str strTmp; str strTmpReplaced; int lineNum; ; strTmp = _stringEdit.text(); // 改行コードの数を取得する strTmpReplaced = strReplace(strTmp, num2char(10), ""); // 縦の行数を算出 lineNum = strlen(st...
-
一度追加したRangeを変更するには?
一度追加した Range を変更したい場合は、 SysQuery findOrCreateRange メソッドを使用する。 このメソッドを使うことで、Range が存在しない場合は、Range を生成し、 Range が存在する場合は Range を書き換えることができる。
-
XMLコメントのテンプレートを使うには?
XMLコメントのテンプレートを使うには、 コードエディタで右クリックから、 Scripts > documentation > HeaderTemplate を選択する。 そうすると、自動でXMLコメントのテンプレートがペーストされる。 また、書いたXMLコメントを出力するには、 プロジェクトを右クリックし、 アドイン > XMLドキュメントの抽出 を選択する。 ※Sandcastle でドキュメントの吐き出しも出来るかも? http //www.axaptapedia.com/Sandcastle
-
コントロールのオーバーライドメソッドでブレークするには?
ボタンのclicked()メソッドなどは、ブレークポイントを(F9で)置いても ブレークしてくれません。 デバッグ時にブレークするには、ソースコード内に以下の文を書きます。 /* ブレークする */ breakpoint;
-
コンボボックスの表示値を手入力で変えられないようにするには?
コンボボックスの表示値を手入力で変えられないようにするには、 プロパティ「ComboType」を ”List” に設定します。
-
コンフィギュレーションキーを使って項目の表示・非表示を切り替えるには?
項目の表示・非表示を切り替えるには コンフィギュレーションキーを使います。 ① AOT の DataDictionary>ConfigurationKeys に コンフィギュレーションキーを新規作成します。 ②コントロールのプロパティ「ConfigurationKey」に 作成したコンフィギュレーションキーを割り当てます。 ③管理>設定>システム>コンフィギュレーション でダイアログを表示し、 コンフィギュレーションキーのチェックをON/OFFします。 ※OFFにすると、②で設定したコントロールが非表示になります。
-
注意点
AX の標準フォントは、 Windows(OS側)のフォント設定に依存している。 それに伴う問題: http //ppe.blogs.msdn.com/b/axjapan/archive/2010/05/16/10013702.aspx checkBox コントロールについて、 チェック状態の変更には value() メソッドを使うこと。 checked() メソッドを使うと、チェックのON/OFF反応がおかしくなる。 (ただし、おかしいのは1クリック目のみ) TemporaryのTableの場合、Queryは使用できず、SQL(もどき)を使う必要がある。 display メソッドは速度が遅い
-
コンボボックスから値を取得・設定するには?
取得 (1) 選択値(Enum値)は、selection()で取得できる。 int myValue; ; /* 値を取得 */ myValue = comboBox.selection(); (2) 選択中の要素の文字列は、valueStr()で取得できる。 str myValue; ; /* 文字列を取得 */ myValue = comboBox.valueStr(); ※Queryで条件指定するときは、こちらを使用する。 設定 以下のような Enum「TestEnum」が定義されているとする。 名前 値 test1 aaa test2 iii test3 uuu test4 eee (1) Enum値から選択させる。 ; comboBox.selection(TestEnum test3)); (2) 文字列から選択させる。 ...
-
既知の不具合
Queryと同じ名前のTableやViewが存在する場合、Queryを、ViewのData Sources直下にコピーできてしまう。 QueryをViewのData Sources直下にコピーすると、最悪の場合、そのレイヤのaodファイルが使えなくなる場合も有るとの事。 参考:http //blogs.msdn.com/b/axjapan/archive/2011/08/29/view-query.aspx オブジェトの右クリックメニューで、「最新バージョンの取得」をすると、取得したユーザーのソースが最新だと認識され、他の開発者が保存できなくなる。 回避策: 「最新バージョンの取得」を使わない。最新のソースを見たい場合は、クライアント再起動。 オブジェクト保存時に心当たりの無いエラーが出る。 回避策: 再コンパイルをすると直る可能性有り。 year という名前の列...
-
定数を使うには?
定数を使うには、マクロの機能を使います。 ①マクロを新規作成し、以下のように書きます。 ※マクロ名をMacroTestとする #define.IntValueTest(100) #define.StrValueTest("テスト") ②マクロを使いたいメソッドで、 以下のように書きます。 #MacroTest ; // Macroで定義した値を表示 info(int2str(#IntValueTest)); info(#StrValueTest);
-
Dynamics AX 2012 の情報
Microsoft Download Center http //www.microsoft.com/en-us/download/dynamics.aspx?q=dynamics fs=applicableproducts~%255e%2522Business%2520Solutions%2522 Microsoft Dynamics AX 2012における、多くの互換性を損なう仕様変更(Breaking Change) http //www.infoq.com/jp/news/2011/08/AX-2012
-
標準のクラス一覧
標準のクラス一覧 トランザクション SysDatabaseTransDelete(トランザクション削除)
-
メニュー
基本 他のオブジェクト指向言語との違い 会社コード AOT コンフィグ Q&A Dynamics AX 2012 の情報 HowTo 一覧 標準のクラス一覧 注意点 Tmp textメソッドとvalueStrメソッドの違い 調べておくこと 各Oerrideメソッドの起こるタイミング その他 既知の不具合 select文とqueryの違い AutoDesignSpecsとGeneratedDesignの違い リンク ttp //dynamics-ax-dev.blogspot.jp/ Japan Dynamics AX Support Dynamics AX Daily Axaptapedia @wiki @wikiご利用ガイド ここを編集
-
調べておくこと
SSRS とベストプラクティスの相性が悪い? (レポートが出力されない?) 使っているテーブルを自動で一覧表示する仕組み。 リソースの追加方法 http //msdn.microsoft.com/en-us/library/cc621437%28v=ax.50%29.aspx リストの扱い方 http //krishhdax.blogspot.jp/2012/05/ax2012-strsplit-function-with-list.html 主に開発中、サーバーが遅くなってしまう件。 状況:CPU使用率100%、メモリ使用量2.4GB程度、同時接続人数5人程度 対策と結果: 同時接続人数を0人に → CPU使用率が大幅に低減(セッション数が減ったから?) サービスを再起動 → メモリ使用量が1.5GB程度に低減(1GB弱メモリリークしていた...
-
各Oerrideメソッドの起こるタイミング
フォームのデータソースのExecuteQuery() 初回起動時やF5を押したときなどに発生。 Insert、Update、Deleteでは呼ばれない。 フォームのデータソースのinit() 初回起動時に発生。F5を押したときには呼ばれない。
-
select文とqueryの違い
queryでは以下のことができる。 検索条件が空だった場合にwhere句を作らない。 OR検索や、範囲検索に自動で対応してくれる。 たとえば、条件に「文字列1,文字列2」を指定すればOR検索、 「文字列1..文字列2」のように指定すれば範囲検索になる。 (ちなみに、標準のグリッドのセルにもこの機能がついている?)
-
コンフィグ
クライアントの接続設定ができる AxCliCfg は、以下に存在している。 Windows7 64bit C \Program Files\Microsoft Dynamics AX\50\BusinessConnector\Bin それ以外 クライアントのEXEと同じフォルダ?
-
@wiki全体から「TableをX++で作るには?」で調べる
更新順にページ一覧表示
|
作成順にページ一覧表示
|
ページ名順にページ一覧表示
|
wiki内検索