【AccessとFileMakerの違い】文字列置換のスクリプト比較

FileMakerGOとiPod touchで「なんちゃってハンディーターミナル」が作れないかと勉強を始めて数か月・・・

当初、MS-Accessプログラマーの私には謎だらけだったFileMaker開発が、最近ようやく分かってきたような・・・

そこで、勉強の成果をご披露しちゃいます。
と言っても、慣れた人ならすぐに作れる簡単なもの。

基幹業務システムから商品マスタをCSVファイルで書き出すと3つ文字化けが起きるんです。

「ml=」「kg=」「L=」
これをFileMakerではどうやって文字列置換するんだろうかと1週間試行錯誤:-)

そして完成したスクリプトはAccessのものとは全く違いうもの!(当たり前か)
(※作りながら覚えていく我流プログラマなので、もっと簡潔な書き方があるのかも・・・)

FileMakerの場合

置換前の商品マスタには文字化けがこん感じで混ざってます。
FileMakerとAccess比較:置換前の商品マスタには文字化けがこん感じで混ざってます。

FileMakerのスクリプトステップはこんなに長いんですよ!
FileMakerとAccess比較:FileMakerのスクリプトステップはこんなに長いんですよ!

LOOP用のレコードフィルタを「検索条件を指定」画面で3文字分作る
FileMakerとAccess比較:LOOP用のレコードフィルタを「検索条件を指定」画面で3文字分作る

文字列置換を「検索/置換を実行」画面で3文字分作る
FileMakerとAccess比較:文字列置換を「検索/置換を実行」画面で3文字分作る

スクリプトを実行すると文字化けが無くなりました
FileMakerとAccess比較:スクリプトを実行すると文字化けが無くなりました

FileMakerだとかなり面倒ですよね 😮
ちなみに、Accessならスクリプトは3行だけ、とてもシンプル:-)

Accessの文字化けした商品マスタはこんな感じ
FileMakerとAccess比較:Accessの文字化けした商品マスタはこんな感じ

まず、更新クエリを3個作る
Accessの便利なところは更新クエリの中でVBA関数が使えること。
「→ml」「→L」「→kg」の置換をしてくれるReplace関数を埋め込んだ更新クエリを3文字分作る。クエリー名は「Q更新クエリ外字」「Q更新クエリ外字」「Q更新クエリ外字」
FileMakerとAccess比較:Replace関数を埋め込んだ更新クエリを3個作る

次に、ボタンのClickイベントに下のVBAスクリプトを埋め込み実行。

Private Sub btn外字変換_Click()

DoCmd.OpenQuery "Q更新クエリ外字"
DoCmd.OpenQuery "Q更新クエリ外字"
DoCmd.OpenQuery "Q更新クエリ外字"

End Sub

置換すると文字化けが無くなりました。
FileMakerとAccess比較:文字列置換

ちなみにSQL文をクエリのGUI無しで書ける人ならクエリーを作る必要もなく、VBAに直接UPDATE文を3行書くだけです。

DoCmd.RunSQL "update 商品マスタ set 商品マスタ.規格=replace([規格],’’,’ml’)"
DoCmd.RunSQL "update 商品マスタ set 商品マスタ.規格=replace([規格],’’,’L’)"
DoCmd.RunSQL "update 商品マスタ set 商品マスタ.規格=replace([規格],’’,’kg’)"

「AccessとFileMakerどっちが良いの?」と質問してるネットの掲示板をよく見かけます。
どうでしょう、どっちが作業効率がいいと思います?

個人的な感想ですが、動作環境でMacOSとiOSを考慮しなければMS-AccessはFileMakerより100複雑なことができます。
FileMakerの歌い文句は「FileMakerServerにFileMakerクライアントでデータ共有すればとても便利」
しかし、実際の現場でFileMakerServerを見ることはまず無いです。
得意先ごとで個別のシステムを持ち、それぞれから個別の要求が来て、それに合わせてプログラムをガリガリ書いていかないと取引先の幅を広げることはできません。

FileMakerかAccessのどちらを導入すべきか思案中の方は、まず検討すべきは社内ではなく社外からの要求です。取引先から来る千差万別のシステム連携の要請に対応できるのはどっちなんだろうかと考えるべきです 🙂
逆に、得意先との情報共有なぞ考える必要のない業界、個人経営の美容院、外食産業等はFileMakerの方がいいかも・・・

2 thoughts

  1. 初めまして。
    実現したい事は以下の様なスクリプトでFileMaker でも3行で作れます。


    フィールド内容の全置換 [ ダイアログあり:オフ ; 商品マスタ::規格 ; Substitute ( 商品マスタ::規格 ; “暠” ; “ml” ) ]
    フィールド内容の全置換 [ ダイアログあり:オフ ; 商品マスタ::規格 ; Substitute ( 商品マスタ::規格 ; “暿” ; “L” ) ]
    フィールド内容の全置換 [ ダイアログあり:オフ ; 商品マスタ::規格 ; Substitute ( 商品マスタ::規格 ; “杦” ; “kg” ) ]

    フィールド内容の全置換:
    https://fmhelp.filemaker.com/help/15/fmp/ja/#page/FMP_Help%2Freplace-field-contents.html

    Substitute関数:
    https://fmhelp.filemaker.com/help/15/fmp/ja/#page/FMP_Help%2Fsubstitute.html

    コーディングも必要なくExcelの関数のような知識レベルで使えるのでとても便利なソフトだと思っています。
    …と、昔の記事にすみません。当時お伝えできればよかったですね><。

    1. 情報ありがとうございます。

      >[置換: “現在の内容”] オプションを選択すると、現在の対象レコードにあるすべてのレコード

      なるほど、”現在の内容”=「全レコード」なのね・・・・

      FileMakerヘルプの日本語の言い回しが難解で、どうしても馴染むことが出来ませんでした。
      その為か、半年使ったところでFileMakerアレルギーになり今は触る気になりません。

      FileMakerを使える人は、スゴイと思います!
      僕は無理でした。

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA