スポンサーサイト

--年--月--日 --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スマートアイコン: アイテムの変更と削除

2008年11月20日 00:59

 文書の問題を調査するときに特定のアイテムの値を変えたり削除する、て事をよくします。
極端な話怪しい文書をもらってアイテムを1つずつ削っていけば最終的に問題が起こるアイテムまでは特定できますよね?もちろんフォームがエラーで開けなくなったり別の問題も起きると思いますが。
 そういうときにどういう方法を使うでしょうか?

こういうのはいちいちエージェントを作るのが面倒なので、スマートアイコンを作っておくと便利です。
今日はそんなときに必要になる処理がまとめて出来るスマートアイコンを紹介します。
昔似たようなスマートアイコンが各所で紹介されていたのですが、ここで見つけたのはその頃より色々と機能増強されていて、複数値や色々なアイテム型に対応していたので。以下のサイトにある例を日本語化して紹介しておきます。

一覧からフィールドを選んで、フィールドの型とかを指定して変えたい値を選ぶだけなので使い方は入れてみれば分かるんじゃないかと思います。
 
 僕はあるノーツアプリケーションがサービスインしたときに、特定のフィールド値を持つときに問題が発生する事が当日になって分かったので、暫定処置として問題が発生した文書をスマートアイコンで手当たり次第に修正して復旧していたことがあったのですが、そんな暫定処置にも使えます。

Modifying document item values

※ この辺の画面やUIはバージョンによって違いが大きいので、多少メッセージやメニューが異なる可能性がある点はご容赦下さい。
手順:
1. メニューから [ファイル] - [プリファレンス] - [ツールバーの設定]を選択します。
2. [カスタマイズ] タブを選択します。
3. [新規] - [ボタン] を選択し、ツールバーボタンを作成します。
  アイコンなどは必要に応じて分かりやすいものに変更して下さい
4. 以下の値を使用して下さい。
 ボタンの表題文字: 「フィールドの変更と削除」
 ポップアップヘルプ文字: 「フィールドの変更と削除」
 式; 以下の「スマートアイコン式」にあるものを使用して下さい。
5. ツールバーを保存します。


スマートアイコン式
REM {フィールドの一覧の取得};
List := @DocFields;
REM {Possible data types to
choose from.};
DataTypes := "テキスト型" : "日付型" : "数値型" : "Password" : "名前" : "共通名" : "フィールドの削除" : "テキスト複数値" : "日付型複数値" : "数値型複数値" : "名前 複数値" : "共通名 複数値";


DataType := @Prompt( [OkCancelList] : [NoSort] ;
EditField + " フィールドのアクションまたはデータ型の指定" ;
EditField + " フィールドのアクションまたはフィールドのデータ型を指定して下さい " ;
"テキスト型" ; DataTypes );


EditField := @Prompt( [OkCancelList] ; "変更するフィールドの選択" ; "変更するフィールドを選んでください:" ; "CustomerReply" ; List );


REM {Based on what type of data is being entered
different prompts will happen if any at all.};
RawValue := @If( @Contains( DataType ; "名前 複数値" );
@PickList( [Name] ); @Contains( DataType ; "名前" ) ;@PickList( [Name] : [Single] );
DataType = "フィールドの削除" ; "" ;
@Contains( DataType ; "Multi Value" );
@Prompt( [OkCancelEdit] ;
"新しい値: " + EditField ;
EditField + " フィールドの新しい値を : 区切りで入力してください" ; @Abstract([TextOnly] ; 254 ;
"" ; @Implode(@Text( @GetField(EditField) );":") ) );
@Prompt( [OkCancelEdit] ;
"新しい値: " + EditField ;
"新しい値を入力してください。(複数値は : 区切り)" ; @Abstract([TextOnly] ;
254 ; "" ; @Implode(@Text( @GetField(EditField) );":") ) ) );

REM {If data conversion doesn't work then don't set field.};
@If( DataType = "日付型" ;
@If( @SetField( EditField ;
@TextToTime( RawValue ) ) );
DataType = "数値型" ;
@If( @IsError( @TextToNumber
( RawValue ) ) ; "" ;
@SetField( EditField ;
@TextToNumber( RawValue ) ) ) ;
DataType = "共通名" ;
@SetField( EditField ;
@Name( [CN]; RawValue ) ) ;
DataType = "Password" ;
@SetField( EditField ;
@Password( RawValue ) ) ;
DataType = "フィールドの削除" ;
@SetField( EditField ; @DeleteField ) ;
DataType = "テキスト複数値" ;
@SetField( EditField ;
@Explode( RawValue ; ":" ) ) ;
DataType = "日付型複数値" ;
@SetField( EditField ;
@TextToTime( @Explode( RawValue ; ":" ) ) ) ;
DataType = "数値型複数値" ;@If( @IsError
( @TextToNumber( @Explode
( RawValue ; ":" ) ) ) ; "" ;
@SetField( EditField ; @TextToNumber
(@Explode( RawValue ; ":" ) ) ) ) ;
DataType = "名前 複数値" ;
@SetField( EditField ;
@Explode( RawValue ; ":" ) ) ;
DataType = "共通名 複数値" ;
@SetField( EditField ; @Name( [CN];
@Explode( RawValue ; ":" ) ) );
@SetField( EditField ; RawValue ) ); ""


コメント

    コメントの投稿

    (コメント編集・削除に必要)
    (管理者にだけ表示を許可する)

    トラックバック

    この記事のトラックバックURL
    http://hnagasim.blog8.fc2.com/tb.php/23-c1fb45e2
    この記事へのトラックバック


    最新記事


    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。