- ベストアンサー
Accessのクエリとモジュールで…
モジュールは以下のようになっています。 Public Function HanName(Han As String) If [Han] <> "" Then HanName = DLookup("[班名]", "[T_班]", "[班ID]=" & [Han]) Else HanName = "" End If End Function クエリの フィールド1に[班1]というフィールドがあり、 フィールド2に HanName([班1]) といれました。 班1が入力されているものについては、きちんと動作されるのですが、 班1が空欄の場合、#Errorとなってしまいます。 どのように直せばいいのでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 エラーですか・・・ ではフィールド2の式を =IIf(IsNull([班1]),"",HanName([班1])) にしてみる。 または、Functionの引数の形式を[String]から[Variant]にして[IsNull]判定を入れてみる。 ではどうでしょうか? ではでは・・・
その他の回答 (4)
- paz777
- ベストアンサー率47% (77/163)
正常に動作したようで安心しました。 >>または、Functionの引数の形式を[String]から[Variant]にして[IsNull]判定を入れてみる。 > >というのは、形式を変更して後は普通にモジュールをかけばいいのでしょうか? はい。その通りです。 あれ?回答欄を読み返してみたら#3の方の回答と同じでした。 #3の方の方法はお試しになりましたでしょうか? (式の変更ではなく、モジュールの変更の方です)
お礼
回答ありがとうございます。 >あれ?回答欄を読み返してみたら#3の方の回答と同じでした。 >#3の方の方法はお試しになりましたでしょうか? そこの部分、見落としてました…(恥) 今試してみたら無事できました! ありがとうございました。
- Gin_F
- ベストアンサー率63% (286/453)
> Public Function HanName(Han As String) > > If [Han] <> "" Then Public Function HanName(Han As Variant) If Not IsNull(Han) Then で大丈夫だと思います。 ただ、このぐらいなら、式を直接クエリに入れてもいいような。。 Nz(DLookup("[班名]", "[T_班]", "[班ID]=" & [班1]),"")
お礼
回答ありがとうございます。 実はIsnullバージョンというか、これも自分でやってみたんですが、できなかったんです。 それと式にしなかったのは、これの後にも続くからなんです。 ありがとうございました。
補足
状態を詳しく書くと、 合計 班1 班2 … -------------------------------------- #Error #Error #Error ○○ ○○ #Error #Error というようになっています。 この「#Error」の部分を空欄にしたいんですが…。
Public Function HanName(Han As String) If isNull(Han) = False Then HanName = DLookup("[班名]", "[T_班]", "[班ID]=" & Han) Else HanName = "" End If End Function 動作確認していませんので動かなかったらごめんなさい。
お礼
回答ありがとうございます。 試してみましたが、エラーになってしまいました…。 原因が自分でもわかりません(><)
- paz777
- ベストアンサー率47% (77/163)
こんにちは。 「If [Han] <> "" Then」の前にNull判定を行えば良いように思います。 例) ------------------------------------------------- If IsNull([Han]) Then HanName = "" else If [Han] <> "" Then ・・・ End If ------------------------------------------------- お試しください。
お礼
回答ありがとうございます。 試してみましたが、エラーになってしまいました…。 原因が自分でもわかりません(><)
お礼
回答ありがとうございます。 とりあえず式を入力したところ無事できたようです。 ありがとうございます。 >または、Functionの引数の形式を[String]から[Variant]にして[IsNull]判定を入れてみる。 というのは、形式を変更して後は普通にモジュールをかけばいいのでしょうか?