Accessモジュールで定義した関数をクエリで使用(呼び出す)方法を紹介します。
クエリのSQLの中で少し複雑なことをしたいと思った時に
IF文だとなかなか難しい編集もあります。
そんな時に、Accessモジュールで関数を作成しておいてそれをSQLで使えるのです。
結構便利ですが滅多に使わないし、使わないで済むならそれで良いとも思います。
レポート出力の場合は、取得結果をそのまま使いたい事のほうが多いのでその時に使いました。
モジュール
Rem ---------------------------------------------------------------------------------- Rem 関数名 : getSecNumeric Rem 処理内容 : Q_レポート明細UNIONで使用しています。 Rem 寸法文字列を数値に変換し抽出しソート指定が可能にします。 Rem 引 数 : source_str、no(何番目の寸法か指定 1~4) Rem 戻り値 : 抜き取った数値 Rem ---------------------------------------------------------------------------------- Public Function getSecNumeric(source_str As String, no As Integer) As Double Dim index As Integer Dim leng As Integer Dim pos As Integer Dim suuchi As Variant Dim retNum As Double retNum = 999999 suuchi = "" index = 1 leng = Len(source_str) ' 9999x9999x9999x9999 For pos = 1 To leng If index = no Then If Mid(source_str, pos, 1) >= 0 And Mid(source_str, pos, 1) <= 9 Then suuchi = suuchi & Mid(source_str, pos, 1) ElseIf Mid(source_str, pos, 1) = "." Then suuchi = suuchi & Mid(source_str, pos, 1) ElseIf Mid(source_str, pos, 1) = "x" Then index = index + 1 End If Else If Mid(source_str, pos, 1) = "x" Then index = index + 1 End If End If Next If IsNumeric(suuchi) Then retNum = CDbl(suuchi) End If getSecNumeric = retNum End Function
クエリでの使用例
select 1 as mode , base.crp_base_id , base.from_date , m_item.item_spec1 , m_item.item_spec2 , m_item.item_spec3 , m_item.item_spec4 , m_item.item_spec , getSecNumeric(m_item.item_spec, 1) AS item_spec_num1 , getSecNumeric(m_item.item_spec, 2) AS item_spec_num2 , getSecNumeric(m_item.item_spec, 3) AS item_spec_num3 , getSecNumeric(m_item.item_spec, 4) AS item_spec_num4 from
コメント