- ベストアンサー
【Access VBA】subフォームの空のテキストデータが認識できない
名前を入力してその人のデータを抽出したい。パスワードが空欄のときメッセージを表示させコントロールソースを変更したいのですが、できません。どなたかアドバイスお願いします If (Forms![名前検索]![SUB_名前検索]![職員アカウント.職員番号].Value = "") Then ↑これが認識しません。「NULL」でやってもだめです。 以下がソースです。 Private Sub cmd検索_Click() Forms![名前検索]![SUB_名前検索].Requery If DCount("[使用者氏名]", "q_リンク名前抽出") = 0 Then MsgBox "データがありませんよ" Me.txt名前入力.SetFocus End If If (Forms![名前検索]![SUB_名前検索]![職員アカウント.職員番号].Value = "") Then MsgBox "から" Forms![名前検索]![SUB_名前検索]![職員アカウント.職員番号].ControlSource = "入力データフォーマットV8新人.職員番号" End If
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
="" =NULL の命令はあんまり 機能発揮しないことがありますからね ISNULL 関数を使うほうがいいと思います Forms![名前検索]![SUB_名前検索]![職員アカウント.職員番号] をどこか1次的な 項目へ入れて DIM KOMOKU-1 AS VARIANT KOMOKU-1=Forms![名前検索]![SUB_名前検索]![職員アカウント.職員番号] IF ISNULL(KOMOKU-1) THEN MsgBox "から" ENDIF --------------------------------------------------------- あと 気づいた点は サブフォームの中の項目指定は [Forms]![フォーム名]![サブフォーム名].[Field名] でいいんじゃないでしょうか Value はなくてもいい???
その他の回答 (3)
- fumufumu_2006
- ベストアンサー率66% (163/245)
If (Nz(Forms![名前検索]![SUB_名前検索]![職員アカウント.職員番号].Value) = "") Then ではどうでしょうか? NzでNull値をNullでない空の値(変数の型によって0または""またはその他)を返してくれます。
- Dxak
- ベストアンサー率34% (510/1465)
#1さんの回答で、ほぼ終了だと思うけど・・・ 補足で、Nullは、型でもあり、値でもあると言うことで、=は、代入の意味でしか使用できません 等号演算としての=はNullは、使用できないんですよ Nullを検出するならIsNull関数か? Is 演算子を使用することになります どっちが楽かといえば、IsNull関数の方が楽かな? Valueは、Vriant型で、文字の場合、Vriant/String型、空白の場合、Variant/Null型と、型が変更になってたと思うよ
X If (Forms![名前検索]![SUB_名前検索]![職員アカウント.職員番号].Value = "") Then O IF Not Len(Forms![名前検索]![SUB_名前検索]![職員アカウント.職員番号] & "") Then は、判るんですが、メイン・サブフォームの関係では使えないと思います。 だって、サブフォームですから複数行が発生していると思います。 部門: ID_部門 _1_A _2_B 職員名簿: 部門_ID__ID__職員名 ______1___1__OOOO ______1___2________ このサブフォームの部門=1、職員名簿.ID=2 が空とのメッセージを出す場合は・・・。 こんな難しいことは私はしないです。