Tips

フォーム名の一覧を作成するメソッド

日付2011/07/01
ID76296 (英語原文参照)
バージョンv12
プラットフォームMac/WIn

この記事は、最新ではないバージョンに関連した方法について解説しています。

最新のバージョンでは推奨されていないか、または他の方法で簡単に実現できる可能性があります。

MSCでストラクチャファイルの検証を実行すると, XML形式の検証ログファイルが出力されます。このログファイルには, すべてのプロジェクトフォーム名およびテーブルフォーム名が記載されているので, これを解析してフォーム名を抽出すれば, 特定のテーブルに関連付けられたフォームの一覧を作成することができます。

//Get_Forms
C_POINTER($1)
C_TEXT($2)

ARRAY TEXT($elemRef_a;0)
ARRAY TEXT($formName_a;0)
C_TEXT($elemRef;$rootRef;$tableName;$formName;$path;$xPath)
C_INTEGER($loopIndex;$namePos;$numParams)

$numParams:=Count parameters
If ($numParams>1)
 $tableName:=$2
End if 

//In specify the actual name of the database
$path=Get 4D folder(Logs Folder)+"_Verify_Log.xml"
$rootRef:=DOM Parse XML source($path)

If ($numParams>1)
   //element step[7] contains the information for the table forms
 $xPath:="/verifylog/step[7]/step"
Else 
   //element step[6] contains the information for the project forms
 $xPath:="/verifylog/step[6]/step"
End if 

$elemRef:=DOM Find XML element($rootRef;$xPath;$elemRef_a)

For ($loopIndex;1;Size of array($elemRef_a))
 DOM GET XML ATTRIBUTE BY NAME($elemRef_a{$loopIndex};"title";$formName)

 If ($numParams>1)
  $namePos:=Position($tableName;$formName)
  If ($namePos>0)
   $formName:=Substring($formName;Length($tableName)+4)
   APPEND TO ARRAY($formName_a;$formName)
  End if 
 Else 
  APPEND TO ARRAY($formName_a;$formName)
 End if 

End for 

DOM CLOSE XML($rootRef)

COPY ARRAY($formName_a;$1->)