Microsoft Access Club Access超初心者対象Forum Access初・中級者対象Forum Access VBA Tips Forum DAO、ADO、SQL Forum

     

リストへもどる

投稿記事の一括表示

タイトル表形式フォームでのフィルターについて
記事No83297
投稿日: 2018/04/04(Wed) 12:55
投稿者stal
OS: WINDOWS10
Access Version: ACCESS 2010

毎度お世話になっております。
たびたび申し訳ありませんが質問させてください。

表形式フォームで以下の実装を行っております。

@ 表形式フォームのフォームヘッダーにテキストボックスを配置
A @に同じくフォームヘッダーに「SEARCH」というボタンを配置
B 「SEARCH」ボタンをクリックするとテキストボックスに入力された値をもとに表に表示されているレコードがフィルターで絞り込みが行われる。

実装したコードは以下の通り

Private Sub SEARCH_Click()

Dim sFilter As String

sFilter = ""


If IsNull(Me.SH_BOX.Value) = False Then

sFilter = sFilter & " SHIPPER LIKE '*" & Me.SH_BOX.Value & "*' and"

End If


If sFilter = "" Then

MsgBox "検索条件を入力してください"
Me.SH_BOX.SetFocus
Exit Sub

End If

sFilter = Left(sFilter, Len(sFilter) - 3)



Me.Filter = sFilter
Me.FilterOn = True

End Sub

問題が上記で実装するとレコードに登録されている純粋なテキストはフィルターがかかるのですが
カレンダー型のDATEやルックアップで別テーブルから参照しているテキストはフィルターがかからない状況です。

どうしてフィルタリングされないのかさっぱりわからずお知恵を拝借できれば幸いです。

何卒宜しくお願い致します。

タイトルRe: 表形式フォームでのフィルターについて
記事No83298
投稿日: 2018/04/04(Wed) 17:22
投稿者ナバ
こんばんは。

> どうしてフィルタリングされないのかさっぱりわからずお知恵を拝借できれば幸いです。

DATE型のフィールドに対しての書き方は文字列型のフィールドと異なりますし、
ルックアップしているフィイールドであれば実際に値として保存されているのは
見えている文字ではなく、キーとなっているもの(数位型かもしれません)だからです。

DATE型
sFilter = sFilter & " date1 = #" & Me.date1.Value & "# and"

数値型
sFilter = sFilter & " num1 = " & Me.num1.Value & " and"

タイトルRe^2: 表形式フォームでのフィルターについて
記事No83299
投稿日: 2018/04/04(Wed) 19:17
投稿者stal
ナバ様、

こんばんは。
ご教示いただきまして有難うございます。

@
If IsNull(Me.FW_BOX.Value) = False Then

sFilter = sFilter & " FORWARDER = " & Me.FW_BOX.Value & " and"

End If

A
If IsNull(Me.CUT_BOX.Value) = False Then

sFilter = sFilter & " CY_OR_CFS_CUT = #" & Me.CUT_BOX.Value & "# and"

End If

@はFORWARDERというフィールドのVALUE (ルックアップ値)をFW_BOXにユーザーが入力した内容に応じて
フィルターをかける挙動ですが、動かした結果パラメータを要求され、うまく動きませんでした。

AはCFS_OR_CY_CUTというフィールドのVALUE (DATE)をCUT_BOXにユーザーが入力したDATEに応じて
フィルターをかける挙動ですが、動かした結果パラメータを要求され、うまく動きませんでした。

両方ともパラメータを要求されうまく動かない状態でございます。

恐れ入りますが、誤っている点等あればご指摘いただけますと幸甚です。
何卒宜しくお願い致します。






> こんばんは。
>
> > どうしてフィルタリングされないのかさっぱりわからずお知恵を拝借できれば幸いです。
>
> DATE型のフィールドに対しての書き方は文字列型のフィールドと異なりますし、
> ルックアップしているフィイールドであれば実際に値として保存されているのは
> 見えている文字ではなく、キーとなっているもの(数位型かもしれません)だからです。
>
> DATE型
> sFilter = sFilter & " date1 = #" & Me.date1.Value & "# and"
>
> 数値型
> sFilter = sFilter & " num1 = " & Me.num1.Value & " and"

タイトルRe^3: 表形式フォームでのフィルターについて
記事No83300
投稿日: 2018/04/05(Thu) 11:05
投稿者ナバ
パラメータを要求されるということは、
FORWARDER  や CY_OR_CFS_CUT がレコードソースに見つからない可能性が高いです。
レコードソースを確認してください。

レコードソースに問題がないようでしたら、
Debug.Print sFilter
として、実際どのような文字列が出来上がっているのか、確認してください。

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No パスワード

ページの先頭へ 前ページへ戻る