- ベストアンサー
AccessVBAコードのスキップ方法と手数料種別登録の代理店登録について教えてください
- AccessVBAコードをスキップする方法と、あるファイル(ABC.csv)を取り込む際に手数料種別の登録をせずに代理店登録に飛ぶ方法について教えてください。
- AccessVBAコードをスキップする方法と、ファイル(ABC.csv)の取り込み時に手数料種別の登録をすべきでなく代理店登録に飛ぶ方法について教えてください。
- AccessVBAコードをスキップする方法と、あるファイル(ABC.csv)を取り込む場合、手数料種別の登録をせずに代理店登録に飛ぶ方法について教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
Public Function F_新規マスタデータ登録(strFName As String) On Error GoTo Err_F_新規マスタデータ登録 Dim strSQL(1) As String ' ------------------ ' 手数料種別の登録 ' ------------------ strSQL(0) = "INSERT INTO TW_手数料種別マスタ (手数料種別, 手数料種別名称) " & _ "SELECT XXX.手数料種別, XXX.手数料種別名称 FROM XXX " & _ "LEFT JOIN T_手数料種別マスタ ON XXX.手数料種別 = T_手数料種別マスタ.手数料種別 " & _ "WHERE T_手数料種別マスタ.手数料種別 Is Null " & _ "GROUP BY XXX.手数料種別, XXX.手数料種別名称 " ' ------------------ ' 新規代理店の登録 ' ------------------ strSQL(1) = "INSERT INTO TW_代理店マスタ (代理店, 代理店名称, 新規データ, 全件出力, 選択出力) " & _ "SELECT XXX.代理店, XXX.代理店名称, True, False, False FROM XXX " & _ "LEFT JOIN T_代理店マスタ ON XXX.代理店 = T_代理店マスタ.代理店 " & _ "WHERE T_代理店マスタ.代理店 Is Null " & _ "GROUP BY XXX.代理店, XXX.代理店名称, True " ' ----------------- ' strSQL() の整形 ' ----------------- strSQL(0) = Replace(strSQL(0), "XXX", strFName) strSQL(1) = Replace(strSQL(0), "XXX", strFName) ' ------------- ' SQL文の実行 ' ------------- If Not F_新規マスタデータ登録 Then CurrentDb.Execute strSQL(0) End If CurrentDb.Execute strSQL(1) Exit_F_新規マスタデータ登録: Exit Function Err_F_新規マスタデータ登録: MsgBox "プログラムエラーが発生しました。システム管理者に報告して下さい。(新規マスタデータ登録)", _ vbExclamation, " 関数エラーメッセージ" Resume Exit_F_新規マスタデータ登録 End Function 生成しているSQL文が一目瞭然でなかったのを修正しています。 エラートラップも標準に変更しています。 実行時に IF THEN 文で実行するSQL文を選択しています。 ただ、これでも SQL文のエラー管理が抜けています。 ここんとこをどうするかは、まあ、作法というか好みの問題です。
その他の回答 (2)
ついでに、なぜ Sub でなく Function なのかな??
strSQL(0) = Replace(strSQL(0), "XXX", strFName) strSQL(1) = Replace(strSQL(1), "XXX", strFName) まあ、試せる質問じゃないのでタイプミスはそれはそれで・・・。