2011/05/17

access2010 Webデータベース その47 全角空白を半角に

** Office365beta(プランP1) 環境 **
全角スペースを半角スペースに変換したかったのだけど、WebデータベースではReplace関数を使用できない。

Replace関数がない
こればかりは仕様だから仕方がない。

SharePoint Server 2010 にはReplace関数は存在するのだけど、引数と関数の挙動が違うからWebデータベースでは使用できないということだろう。
使えるかな?と思った関数があるのだが、VBAと同じ名前の関数だからこれも使えない。ちなみにWebデータベースでASC関数を使用した場合、SharePoint上ではCODE関数に変換される。SharePointリストの設定で集計値フィールドにASC関数を設定してみたが、Accessで管理できなくなるので使用しない。そして結果も出なかった。
自力でなんとか実装しなければならないのだろうが、繰り返しの処理についてはマクロの実行/RunMacro マクロアクションでは対応できない。
繰り返し処理を実行できるのはデータマクロしかないので、レコードごと/ForEachRecord データブロック内で繰り返しを処理してみる。
オートナンバーのIDを使用してもいいけど欠番が出るかもしれないから、必須/一意で連続した整数を任意のレコード数を予め用意しておく。255もあれば充分だろう。
ForEachRecordデータブロックの引数 In は、SQLステートメントを使用できるから、テーブルから必要なフィールドを選択して、Order By で昇順にする。Mid関数の引数に使うので重要。降順にすれば文字列を逆方向に並び替えることも可能。
データマクロの実行/RunDataMacro マクロアクションで引数を渡して、結果はReturnVarsコレクションから取り出す。

全角スペースを半角スペースにして前後の余分なスペースを削除しているのだけど、InStr関数も使えるはずだから、Replace関数の代替はデータマクロで実装できそうな気がする。アプリケーション使用開始直後とかにちょっと遅くなるのが難点。

0 件のコメント: