次の方法で共有

Access 絞り込み 条件設定について 実行時エラー 3464 抽出条件で型が一致しません。

Anonymous
2021-04-13T08:09:03+00:00

Access 初心者です よろしくお願いします。

既に完成している状態(作成者不在)の一部内容を変更する作業をしています。

データベースよりフォームを作成して一致する内容を条件にして絞り込んで表にしています。

コンボックスのプロパティ シートにてデータ 値集合ソース (値リスト)に 絞り込む一致内容を入力しています。

今回の変更点は データベース項目の資格取得日(日付)に対して データに日付が入力されていれば、終了。

データに日付が入っていなければ、未 と言った状態に一度変換して検索抽出を行いたいのですが、

コンボックスの値集合ソースには 「すべて 終了 未」 を入力して 実行してみると、実行時エラー 3464 抽出条件で型が一致しません。

コマンド ボタン イベントプロシージャ

 If Me.資格選択 <> "すべて" Then

       If flgJoken = True Then

          strJoken = strJoken & " and 資格取得日 = """ & Me.資格選択.Value & """"

       Else

          strJoken = "資格取得日 = """ & Me.資格選択.Value & """"

       End If

       flgJoken = True

    End If

 Me.Filter = strJoken

  If strJoken <> "" Then

  Me.FilterOn = True     ←デバックするとこの部分がエラー表示になっています。

*資格取得日がデータベースの項目です。

*資格選択がコンボボックス名になります。

日付の型と終了や未の文字では型が違うことはわかるのですが、どのように式を入れればよいでしょうか?

ヒントになる情報を頂ければうれしいです。

Microsoft 365 と Office | アクセス | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2021-04-14T05:02:09+00:00

> コンボボックスのプロパティ シートにてデータ

> 値集合ソース (値リスト)に 絞り込む一致内容を入力しています。

> コンボックスの値集合ソースには 「すべて 終了 未」 を入力

> 今回の変更点は データベース項目の資格取得日(日付)に対して

> データに日付が入力されていれば、終了。

> データに日付が入っていなければ、未 と言った状態に

> 一度変換して検索抽出を行いたいのですが、

・ある帳票フォームのフォームヘッダーセクション上に

 [資格選択]という名前の非連結コンボボックスが配置されている。

・[資格選択]の値集合タイプは値リストであり、

 [値集合ソース]プロパティには "すべて;終了;未" という

 リストが設定されている。

・そのフォームのレコードソースであるテーブル/クエリには

 [資格取得日]という名前の日付/時刻型のフィールドが含まれている。

・フォームヘッダーセクション上に配置されている

 コマンドボタン(名前は不明)がクリックされた時、

 その時の[資格選択]の値に応じて、以下のいずれかの

 抽出処理を実行する。

 1) [資格選択]の値が "終了" である場合

  -> [資格取得日]の値が Null ではないレコードを抽出する条件式を追加する。

 2) [資格選択]の値が "未" である場合

  -> [資格取得日]の値が Null であるレコードを抽出する条件式を追加する。

 3) 上記以外の場合([資格選択]の値が "すべて" である場合を含む)

  -> [資格取得日]に対する条件式を追加しない。

こういうことでしょうか。

> If flgJoken = True Then

>     strJoken = strJoken & " and 資格取得日 = """ & Me.資格選択.Value & """"

> Else

>     strJoken = "資格取得日 = """ & Me.資格選択.Value & """"

> End If

>実行してみると、実行時エラー 3464 抽出条件で型が一致しません。

"終了" や "未" のような文字列リテラルを

日付/時刻型のフィールドと比較する

(両辺のデータ型が一致していない)式を用いて

フォームフィルターを実行しようとしているからです。


Select Case Me.資格選択

    Case "終了"

        If strJoken <> "" Then

            strJoken = strJoken & " And "

        End If

        strJoken = strJoken & "[資格取得日] Is Not Null"

        flgJoken = True    '何に使うのかは知らない

    Case "未"

        If strJoken <> "" Then

            strJoken = strJoken & " And "

        End If

        strJoken = strJoken & "[資格取得日] Is Null"

        flgJoken = True    '何に使うのかは知らない

    Case Else

        '何もしない

End Select

Me.Filter = strJoken

Me.FilterOn = (strJoken <> "")


なお、今回のような処理にはあまり関係していませんが、

日付/時刻リテラルを記述する際の囲み文字は # です。

(記述例)


strJoken = "[資格取得日] = #2021/04/14#"


この回答は役に立ちましたか?

1 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません

1 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2021-04-14T07:51:12+00:00

    ありがとうございました。

    大変詳しく、わかりやすかったです。

    星の評価が上手くクリック出来ず、全て星を付ける前に送信されてしまいました。

    初めての質問で緊張しましたが、大変助かりました。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません