Microsoft Access 掲示板

SQL確認してメッセージを表示する

5 コメント
views
4 フォロー

先日教えていただいたメールテンプレについて、WEBスクレイピングまでは届いておりませんが、おかげさまでいい感じのものができてきました。
そこで、新たな悩みが発生しました。

①メールテンプレを選択せず、チェックボックスにチェックを入れてテンプレを作ろうとした際にエラーが起こる。
②担当者を選択せず、チェックボックスにチェックを入れてテンプレを作った際に、テンプレの担当者欄が空白になっている。

まずは、①に対応すべく下記コードを作成しましたが
SQL部分でエラーが出ます…
申し訳ありませんが、ご指導をお願いいたします。

Private Sub btnメールテンプレ_Click()
Dim Rs As Recordset, strSQL As String

strSQL = "SELECT チェック, メールテンプレID FROM T_送付 WHERE チェック= True AND メールテンプレID Is Null)"
Set Rs = CurrentDb.OpenRecordset(strSQL) 'レコード抽出

  If Rs.BOF = False And Rs.EOF = False Then 'レコードが存在したら
    MsgBox "チェックしたデータの中にメールテンプレを選択していないものがあります。"
    Exit Sub '中止
  End If
  Rs.Close 'レコードセットを閉じる
  Set Rs = Nothing 'オブジェクトの破棄

    DoCmd.OpenForm "F_メールテンプレ", acNormal, "", "", , acNormal
End Sub

cerophan
作成: 2020/08/03 (月) 09:09:56
最終更新: 2020/08/03 (月) 09:11:37
通報 ...
1

strSQL = "SELECT チェック, メールテンプレID FROM T_送付 WHERE チェック= True AND メールテンプレID Is Null)"

上記の部分の最後の ) が余分です。削除するか、; に変更してください。

2

ちなみに、チェックするだけなら、下記のように DCont関数でチェックすることもできます。

Din cnt As Long
cnt = DCount("メールテンプレID","T_送付","チェック= True AND メールテンプレID Is Null")) 
If cnt > 0 Then
    MsgBox "チェックしたデータの中にメールテンプレを選択していないものが" & cnt & "件あります。"
    Exit Sub '中止
End If
3
cerophan 2020/08/03 (月) 11:12:25 0029a@1c915 >> 1

DCountでよかったのですね。。
簡単な方法にすぐ結び付けず、教えていただいてたすかります。
ちなみに、
DCount("メールテンプレID",
とすると、メールテンプレIDがNullのせいか、中止が適用されなかったため
DCount("チェック",
にしたところ、うまく作動し、数も数えてくれました。
ありがとうございました!

4

あっ、そうでした。DCountはNullはカウントしないのでした。
すぐ、それに気づいたということは、cerophanさん、確実にスキルアップしてますね。

5
cerophan 2020/08/03 (月) 17:57:48 f1ed8@29cdf >> 3

そうだとうれしいです。お言葉ありがとうございます!