饂飩コーディング

iOSアプリやら、Unityやら、Cocos2dやらごにょごにょ書いております

Access VBA VBE画面でスニペットっぽくコーディングしてみる。

サイトが引っ越しました。→https://scombu.com

約1秒後に自動的にリダイレクトします。切り替わらない場合はリンクをクリックしてください。

標準モジュールにSnipetModuleって名前でモジュール追加して
下のプロシージャを記述しておく。
VBEのイミディエイト画面で「sni」と入力してCtrl+Spaceで
選択できるので、まぁスニペットっぽく使えるかな?

f:id:appdeappuappu:20201115190225p:plain


先人の知恵をお借りしました。へへへ
まぁ、複数人開発での標準化の参考資料にはなりそうですな。
basファイルで受け渡ししてもよいですね。
f:id:appdeappuappu:20201115190533p:plain

Attribute VB_Name = "SnipetModule"
Option Compare Database
Option Explicit

Public Function sni_コメントヘッダ()
    Debug.Print "'--------------------------------------------------------------"
    Debug.Print "'コメント記述欄                                                "
    Debug.Print "'機能をここに記述                                              "
    Debug.Print "'--------------------------------------------------------------"
    
End Function

Public Function sni_Case()
    Debug.Print "Dim i As Integer                                     "
    Debug.Print " i = 2                                               "
    Debug.Print " Select Case i                                       "
    Debug.Print "     Case 1                                          "
    Debug.Print "         MsgBox ""; iの値は1です。; ""                "
    Debug.Print "     Case 2                                          "
    Debug.Print "         MsgBox ""; iの値は2です。; ""                "
    Debug.Print "     Case 3                                          "
    Debug.Print "         MsgBox ""; iの値は3です。; ""                "
    Debug.Print "     Case Else                                       "
    Debug.Print "         MsgBox ""; iの値は1, 2, 3; 以外の値です。; """
    Debug.Print " End Select                                          "
    
End Function

Public Function sni_For()
    Debug.Print " Dim i As Integer                  "
    Debug.Print " For i = 1 To 10 Step 2            "
    Debug.Print " MsgBox i                          "
    Debug.Print " Next i                            "
    
End Function

Public Function sni_DoWhile()
    Debug.Print "Dim i As Integer           "
    Debug.Print "i=1                        "
    Debug.Print "Do While i < 100           "
    Debug.Print "i = i + 1                  "
    Debug.Print "Loop                       "
    Debug.Print "Msgbox                     "

End Function

Public Function sni_DoUntil()
    Debug.Print "    Dim i As Integer              "
    Debug.Print "    i=1                           "
    Debug.Print "'100を超えるまでループ 101で抜ける"
    Debug.Print "   Do Until i > 100              "
    Debug.Print "    i = i + 1                      "
    Debug.Print "    Loop                          "
    Debug.Print "    Msgbox i                      "


End Function

Public Function sni_SQL_UPDATE()
    Debug.Print "Dim ct As New ADODB.Connection                                    "
    Debug.Print "Dim stSQL As String                                               "
    Debug.Print "                                                                  "
    Debug.Print "Set ct = CurrentProject.Connection                                "
    Debug.Print "stSQL = ""UPDATE テーブル1 set 中分類=""1"" WHERE 小分類=""3"""; ""
    Debug.Print "ct.Execute stSQL                                                  "
    Debug.Print "                                                                  "
    Debug.Print "Set ct = Nothing                                                  "

End Function

Public Function sni_SQL_DELETE()

    Debug.Print "Dim cn As ADODB.Connection             "
    Debug.Print "Dim MYSQL As String                    "
    Debug.Print "'接続                                  "
    Debug.Print "Set cn = CurrentProject.Connection     "
    Debug.Print "'削除                                  "
    Debug.Print "MYSQL = ""Delete * FROM テーブル1;""   "
    Debug.Print "cn.Execute MYSQL                       "
    Debug.Print "'終了                                  "
    Debug.Print "cn.Close: Set cn = Nothing             "
    
End Function

Public Function sni_SQL_SELECT典型的()
    Debug.Print "Dim Cn As ADODB.Connection 'ADOコネクションオブジェクト              "
    Debug.Print "Dim Rs As ADODB.Recordset 'ADOレコードセットオブジェクト             "
    Debug.Print "Dim MySQL As String 'SQL文                                           "
    Debug.Print "                                                                     "
    Debug.Print "Set Cn = CurrentProject.Connection '現在のデータベースへ接続         "
    Debug.Print "Set Rs = New ADODB.Recordset  'ADOレコードセットのインスタンス作成   "
    Debug.Print "MySQL = ""SELECT * FROM テーブル名 WHERE 条件;"" 'SQL文作成            "
    Debug.Print "Rs.Open MySQL, Cn 'レコード抽出                                      "
    Debug.Print "                                                                     "
    Debug.Print "If Rs.BOF = True And Rs.EOF = True Then '存在チェック                "
    Debug.Print "   MsgBox (""レコードが存在しません"")'メッセージ                     "
    Debug.Print "Else                                                                 "
    Debug.Print "   Do Until Rs.EOF '抽出したレコードが終了するまで処理を繰り返す     "
    Debug.Print "       Debug.Print Rs!フィールド名 'フィールドを取り出す             "
    Debug.Print "       Rs.MoveNext '次のレコードに移動する                           "
    Debug.Print "   Loop                                                              "
    Debug.Print "End If                                                               "
    Debug.Print "                                                                     "
    Debug.Print "'閉じる                                                              "
    Debug.Print "Rs.Close                                                             "
    Debug.Print "Cn.Close                                                             "
    Debug.Print "'オブジェクトの破棄                                                  "
    Debug.Print "Set Rs = Nothing                                                     "
    Debug.Print "Set Cn = Nothing                                                     "

End Function

Public Function sni_SQL_レコード処理エラー無し()
    Debug.Print "Dim ct As New ADODB.Connection                            "
    Debug.Print "Dim rs As New ADODB.Recordset                             "
    Debug.Print "Dim stSQL As String                                       "
    Debug.Print "                                                          "
    Debug.Print "'select文の作成                                           "
    Debug.Print "stSQL = ""SELECT * FROM テーブル1 WHERE 小分類=""""9"""";"""
    Debug.Print "stSQL = stSQL & """" "
    Debug.Print "                                                          "
    Debug.Print "Set ct = CurrentProject.Connection                        "
    Debug.Print "rs.CursorLocation = adUseClient                           "
    Debug.Print "rs.Open stSQL, ct, adOpenDynamic, adLockOptimistic        "
    Debug.Print "                                                          "
    Debug.Print "If rs.EOF Or rs.BOF Then                                  "
    Debug.Print "    '条件に合うレコードがない場合                         "
    Debug.Print "Else                                                      "
    Debug.Print "    '条件に合うレコードがある場合                         "
    Debug.Print "     '先頭レコードに移動                                  "
    Debug.Print "       rs.MoveFirst                                       "
    Debug.Print "       While Not rs.EOF                                   "
    Debug.Print "            MsgBox (rs.Fields(""本文""))                    "
    Debug.Print "           '次のレコードに移動                            "
    Debug.Print "          rs.MoveNext                                     "
    Debug.Print "       Wend                                               "
    Debug.Print "End If                                                    "
    Debug.Print "                                                          "
    Debug.Print "'レコードセットを変更する場合はコレ                       "
    Debug.Print "'Set Me.Recordset = rs                                    "
    Debug.Print "                                                          "
    Debug.Print "Set rs = Nothing                                          "
    Debug.Print "Set ct = Nothing                                          "
    Debug.Print "                                                          "
    Debug.Print "Me.Requery                                                "

End Function

Public Function sni_SQL_レコード処理エラー処理付き()
    Debug.Print "Dim myCn     As ADODB.Connection    'ADOコネクションオブジェクト                        "
    Debug.Print "Dim myRs     As ADODB.Recordset     'ADOレコードセットオブジェクト                      "
    Debug.Print "Dim strSQL   As String              'SQL文用文字列                                      "
    Debug.Print "                                                                                        "
    Debug.Print "'エラートラップ                                                                         "
    Debug.Print "On Error GoTo Err_Exit                                                                  "
    Debug.Print "                                                                                        "
    Debug.Print "'現在のデータベースへ接続                                                               "
    Debug.Print "Set myCn = CurrentProject.Connection                                                    "
    Debug.Print "                                                                                        "
    Debug.Print "'ADOレコードセットのインスタンス作成                                                    "
    Debug.Print "Set myRs = New ADODB.Recordset                                                          "
    Debug.Print "                                                                                        "
    Debug.Print "'SQL文作成(誕生月指定)                                                                "
    Debug.Print "strSQL = ""SELECT * FROM 顧客テーブル WHERE 誕生月 = 3""                                  "
    Debug.Print "                                                                                        "
    Debug.Print "'レコードセット取得・・・(※1)                                                          "
    Debug.Print "myRs.Open strSQL, myCn, , adLockOptimistic                                              "
    Debug.Print "                                                                                        "
    Debug.Print "With myRs                                                                               "
    Debug.Print "    '対象データがなければ終了                                                           "
    Debug.Print "    If .EOF Or .BOF Then                                                                "
    Debug.Print "        MsgBox ""該当データがありません。処理を終了します。"", vbOKOnly + vbInformation   "
    Debug.Print "        GoTo End_Proc                                                                   "
    Debug.Print "    Else                                                                                "
    Debug.Print "        '先頭レコードに移動                                                             "
    Debug.Print "        .MoveFirst                                                                      "
    Debug.Print "        While Not .EOF                                                                  "
    Debug.Print "            'プレゼント発送日にシステム日付を代入                                       "
    Debug.Print "            .Fields(""プレゼント発送日"") = Date                                          "
    Debug.Print "            '更新実行                                                                   "
    Debug.Print "            .Update                                                                     "
    Debug.Print "            '次のレコードに移動                                                         "
    Debug.Print "            .MoveNext                                                                   "
    Debug.Print "        Wend                                                                            "
    Debug.Print "    End If                                                                              "
    Debug.Print "End With                                                                                "
    Debug.Print "MsgBox ""処理を終了しました。"", vbOKOnly + vbInformation                               "
    Debug.Print "'********                                                                               "
    Debug.Print "End_Proc:                                                                               "
    Debug.Print "    'オブジェクトの開放                                                                 "
    Debug.Print "    Set myRs = Nothing: Close                                                           "
    Debug.Print "    Set myCn = Nothing: Close                                                           "
    Debug.Print "                                                                                        "
    Debug.Print "    Exit Function                                                                       "
    Debug.Print "                                                                                        "
    Debug.Print "Err_Exit:                                                                               "
    Debug.Print "    'エラーNOとエラーの詳細を表示                                                       "
    Debug.Print "    MsgBox Err.Number & "":"" & Err.Description, vbOKOnly + vbCritical, ""ADO接続()""   "
    Debug.Print "    'オブジェクトの開放                                                                 "
    Debug.Print "    Set myRs = Nothing: Close                                                           "
    Debug.Print "    Set myCn = Nothing: Close                                                           "

End Function