質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
DAO(Data Access Object)

DAO(Data Access Object)とは、データベースなどに保存するための操作を実装したオブジェクトのことです。データの永続化機構に抽象化されたインタフェースを提供し、データベースの詳細を隠蔽。ビジネスロジックとデータ操作も分離できます。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

1回答

526閲覧

指定のテキストボックスが空白のレコード抽出について

AKI_TADA

総合スコア6

DAO(Data Access Object)

DAO(Data Access Object)とは、データベースなどに保存するための操作を実装したオブジェクトのことです。データの永続化機構に抽象化されたインタフェースを提供し、データベースの詳細を隠蔽。ビジネスロジックとデータ操作も分離できます。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2023/03/29 08:41

 現在、発注明細一覧の作成を行っております。
そのシステムは、発注して請求書が来た後に単価を入力するというものになっています。
そのため、単価が空白のレコードを検索する機能を現在作成中です。
しかし、検索する条件にISNULLを使用するとそのレコードが検索されない状態となります。
また、IsNull(Me.単価)の部分を"単価=0"に変えても同じことが起こりました。

指示されたテキストボックスが空白のレコードのみを検索するにはどういったコードを組めばいいのでしょうか。
ちなみにテキストボックスはテキスト形式です。

該当のソースコード

Private Sub コマンド28_Click()
Dim db As DAO.Database 'データベースへの参照を代入する変数を宣言する
Dim rs As DAO.Recordset 'レコードセットへの参照を代入する変数を宣言する
Dim str As String '検索条件を代入する変数を宣言する

Set db = CurrentDb() 'カレントデータベースを参照する '「Q_明細一覧」クエリを開きレコードセットを取得する Set rs = db.OpenRecordset("Q_明細一覧", dbOpenDynaset) '単価の項目が未入力の部分を抜き出す rs.Filter = IsNull(Me.単価) '先頭のレコードから指定した条件で検索する Set rs = rs.OpenRecordset 'すべての検索結果を出力する Set Me.Recordset = rs Me.Requery

End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2023/03/29 09:31

このままではコードが読みづらいので、質問を編集し、</>(コードの挿入)ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
guest

回答1

0

ベストアンサー

Filterプロパティには、SQLのWHERE句の条件式となるものを文字列として設定します。
単価フィールドがNullのレコードを抽出したいのなら、単価 Is Null という条件式になります。

vba

1'単価の項目が未入力の部分を抜き出す 2rs.Filter = "単価 Is Null" 3 4'先頭のレコードから指定した条件で検索する 5Set rs = rs.OpenRecordset

ただし、Accessの設計なら、連結フォームにして、フォームのFilterプロパティに設定するのが通常の方法です。そちらの方が制限が少ないのでメリットが多いです。

vba

1Me.Filter = "単価 Is Null" 2Me.FilterOn = True

投稿2023/03/29 09:56

hatena19

総合スコア33620

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問