FileMaker開発を初めてすぐに作った検索画面は、検索モードに切替、検索実行する単純なもので使い勝手が悪い。

検索モードで入力したキーワードは検索実行の度に消えてしまうし、キーワードを入力したフィールドしか検索対象にならない。
その上で、高齢化が進むIT音痴集団形部商事社内では複数フィールドに検索キーワードを入力する複合検索を使いこなせる人材は皆無。

最初に作った検索機能
Accessっぽい商品検索機能の作方:最初に作った検索機能

取扱中の商品のみを表示
Accessっぽい商品検索機能の作方:最初に作った検索機能

MS-Accessでよく作るGoogle検索風の[検索キーワード]フィールドと[検索]ボタンを組み合わせた検索画面ってFileMakerではどう作るんだろう?

Accessっぽい商品検索機能の作方:Google風の検索画面を作りたい

「これが出来ると便利なんだけどな・・」と思いながら、いつものようにスクリプトステップ画面からそれっぽいスクリプト名を選び動かしながら使い方を勉強。

2時間試行錯誤してたら・・・出来たー
なんだ、意外と簡単ジャン!

この作り方がFileMaker開発的に正しいのかわかりませんが動くから形部商事では◎:-D
素人の私が作ったスクリプトステップ、プロのFileMaker開発者に見られたら笑われるかも・・・

【作り方】
まず、グローバルフィールドを2つ「KEY検索」「FLAG終売」を作り商品マスタ画面に置く。[FLAG終売]は、値一覧で「すべて、販売中のみ、終売のみ」を指定。

次に、スクリプトステップを作る

検索対象をifで分岐した8行のスクリプトステップ
Accessっぽい商品検索機能の作方:検索対象をifで分岐した8行のスクリプトステップ

「検索実行:検索条件を編集」画面で検索条件を指定。下は「検索対象:販売中のみ」用
Accessっぽい商品検索機能の作方:「検索実行:検索条件を編集」画面

「レコードの検索」を検索対象にしたい項目だけ作る
「レコードの検索」の複数指定はSQL文のORみたいです。
「検索対象:販売中のみ」用
Accessっぽい商品検索機能の作方:「検索実行」

「レコードの検索」を検索対象にしたい項目だけ作る。下は「検索対象:終売のみ」用
Accessっぽい商品検索機能の作方:「検索実行」

「レコードの検索」を検索対象にしたい項目だけ作る。下は「検索対象:すべて」用
Accessっぽい商品検索機能の作方:「検索実行」

「すべて」対象で検索を実行した様子
Accessっぽい商品検索機能の作方

「販売中のみ」対象で検索を実行した様子
Accessっぽい商品検索機能の作方:検索を実行した様子

「終売のみ」対象で検索を実行した様子
Accessっぽい商品検索機能の作方:検索を実行した様子

ちなみにAccessでいつも作っているのはこんなモノ。
FileMaker開発を始めて改めて思うことは、基本4種類のSQL文を書ければほとんどの機能が簡単に作れてしまうAccessの便利さです 😀

Accessっぽい商品検索機能の作方:Accessで作るとこんな感じ

Access VBAの商品検索スクリプト
FileMakerと違い、SQL文のwhereをORで繋ぐだけで複合検索が簡単につくれます。

Private Sub btn検索1_Click()

If Len(Me![検索キーワード]) < 1 or IsNull(Me![検索キーワード]) = True Then
    Exit Sub
End If

Dim myKEY, mySQL As String

myKEY = Me![検索キーワード]
mySQL = "SELECT * FROM システムM商品 WHERE"

If Me![option終売] = True Then
    mySQL = mySQL & " (終売F=0) AND "
End If

mySQL = mySQL & " ((JAN1 like ’*’ & ’" & myKEY & "’ & ’*’)"
mySQL = mySQL & "or (商品CD like ’*’ & ’" & myKEY & "’ & ’*’)"
mySQL = mySQL & "or (商品名 like ’*’ & ’" & myKEY & "’ & ’*’)"
mySQL = mySQL & "or (規格 like ’*’ & ’" & myKEY & "’ & ’*’))"
 
Me.RecordSource = mySQL

End Sub

マイクロソフトさん、Android OSかWindows Phone OS用のMS-Accessを作ってくれないかな・・(お願い)

(304 views)

コメントを残す

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