AccessVBAコードのスキップ方法と手数料種別登録の代理店登録について教えてください

このQ&Aのポイント
  • AccessVBAコードをスキップする方法と、あるファイル(ABC.csv)を取り込む際に手数料種別の登録をせずに代理店登録に飛ぶ方法について教えてください。
  • AccessVBAコードをスキップする方法と、ファイル(ABC.csv)の取り込み時に手数料種別の登録をすべきでなく代理店登録に飛ぶ方法について教えてください。
  • AccessVBAコードをスキップする方法と、あるファイル(ABC.csv)を取り込む場合、手数料種別の登録をせずに代理店登録に飛ぶ方法について教えてください。
回答を見る
  • ベストアンサー

AccessVBA コードをスキップしたい。

あるファイル(ABC.csv)を取り込む時には、 手数料種別の登録を行わず、代理店登録に飛びたい場合は どのようにしたら良いでしょうか? 教えて下さい。(読みづらくて申し訳ありません。) Public Function F_新規マスタデータ登録(StrFName As String) On Error GoTo Err Dim StrSal As String F_新規マスタデータ登録 = False '手数料種別の登録 StrSql = "INSERT INTO TW_手数料種別マスタ ( " StrSql = StrSql & "手数料種別, " StrSql = StrSql & "手数料種別名称) " StrSql = StrSql & "SELECT " StrSql = StrSql & StrFName & ".手数料種別, " StrSql = StrSql & StrFName & ".手数料種別名称 " StrSql = StrSql & "FROM " & StrFName & " " StrSql = StrSql & "LEFT JOIN T_手数料種別マスタ " StrSql = StrSql & "ON " & StrFName & ".手数料種別 = T_手数料種別マスタ.手数料種別 " StrSql = StrSql & "WHERE T_手数料種別マスタ.手数料種別 Is Null " StrSql = StrSql & "GROUP BY " StrSql = StrSql & StrFName & ".手数料種別, " StrSql = StrSql & StrFName & ".手数料種別名称 " CurrentDb.Execute StrSql '新規代理店の登録 StrSql = "INSERT INTO TW_代理店マスタ ( " StrSql = StrSql & "代理店, " StrSql = StrSql & "代理店名称, " StrSql = StrSql & "新規データ, " StrSql = StrSql & "全件出力, " StrSql = StrSql & "選択出力) " StrSql = StrSql & "SELECT " StrSql = StrSql & StrFName & ".代理店, " StrSql = StrSql & StrFName & ".代理店名称, " StrSql = StrSql & "True, " StrSql = StrSql & "False, " StrSql = StrSql & "False " StrSql = StrSql & "FROM " & StrFName & " " StrSql = StrSql & "LEFT JOIN T_代理店マスタ " StrSql = StrSql & "ON " & StrFName & ".代理店 = T_代理店マスタ.代理店 " StrSql = StrSql & "WHERE T_代理店マスタ.代理店 Is Null " StrSql = StrSql & "GROUP BY " StrSql = StrSql & StrFName & ".代理店, " StrSql = StrSql & StrFName & ".代理店名称, " StrSql = StrSql & "True " CurrentDb.Execute StrSql

  • Oracle
  • 回答数3
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
noname#140971
noname#140971
回答No.1

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)

noname#140971
noname#140971
回答No.3

ついでに、なぜ Sub でなく Function なのかな??

noname#140971
noname#140971
回答No.2

  strSQL(0) = Replace(strSQL(0), "XXX", strFName)   strSQL(1) = Replace(strSQL(1), "XXX", strFName) まあ、試せる質問じゃないのでタイプミスはそれはそれで・・・。

関連するQ&A

  • AccessVBA条件追加

    データ作成のコードに条件を追加したいのですが、 どのようにしたら良いのでしょうか? 見づらくてすいません。 '今あるデータの追加用コード StrSql = "INSERT INTO " StrSql = StrSql & "TW_在庫テーブル ( " StrSql = StrSql & "販売店コード, " StrSql = StrSql & "キャリアコード, " StrSql = StrSql & "機種コード, " StrSql = StrSql & "数量) " StrSql = StrSql & "SELECT " StrSql = StrSql & "TTCOM_TZIK_TBL.TZIK_HOKNCD, " StrSql = StrSql & "TTCOM_TZIK_TBL.TZIK_CARRCD, " StrSql = StrSql & "TTCOM_TZIK_TBL.TZIK_SHINCD, " StrSql = StrSql & "COUNT(TTCOM_TZIK_TBL.TZIK_CARRCD) As SUURYO " StrSql = StrSql & "FROM TTCOM_TZIK_TBL " StrSql = StrSql & "INNER JOIN T_販売店マスタ " StrSql = StrSql & "ON TTCOM_TZIK_TBL.TZIK_HOKNCD = T_販売店マスタ.販売店コード " StrSql = StrSql & "WHERE TTCOM_TZIK_TBL.TZIK_CARRCD = '10' " StrSql = StrSql & "AND TTCOM_TZIK_TBL.TZIK_TZDKBN = '2' " StrSql = StrSql & "AND TTCOM_TZIK_TBL.TZIK_ZKTKBN = '0' " StrSql = StrSql & "AND TTCOM_TZIK_TBL.TZIK_SHINKB IN ('5','6') " StrSql = StrSql & "AND TTCOM_TZIK_TBL.TZIK_URIYMD <= " & "#" & CStr(Forms![FAMAIN]![TxtTO日付]) & "#" & " " StrSql = StrSql & "GROUP BY " StrSql = StrSql & "TTCOM_TZIK_TBL.TZIK_HOKNCD, " StrSql = StrSql & "TTCOM_TZIK_TBL.TZIK_CARRCD, " StrSql = StrSql & "TTCOM_TZIK_TBL.TZIK_SHINCD;" CurrentDb.Execute StrSql 追加したい条件 くっつけたい条件 (StrSql = StrSql & "INNER JOIN T_販売店マスタ " StrSql = StrSql & "ON TTCOM_TZIK_TBL.TZIK_HOKNCD = T_販売店マスタ.販売店コード " StrSql = StrSql & "WHERE TTCOM_TZIK_TBL.TZIK_CARRCD = '10' " StrSql = StrSql & "AND TTCOM_TZIK_TBL.TZIK_TZDKBN = '2' " StrSql = StrSql & "AND TTCOM_TZIK_TBL.TZIK_ZKTKBN = '0' " StrSql = StrSql & "AND TTCOM_TZIK_TBL.TZIK_ROMSYU = '1' " StrSql = StrSql & "AND TTCOM_TZIK_TBL.TZIK_SHINKB IN ('5','6') " StrSql = StrSql & "AND TTCOM_TZIK_TBL.TZIK_URIYMD <= " & "#" & CStr(Forms![FAMAIN]![TxtTO日付]) & "#" & " ")

  • ACCESS 処理の件数を取得したい

    どうやっていいのか困っています。 DAOで処理をしています。 下記のような処理があり、それぞれの更新、検索、追加の件数を とりたいのですがどなたか教えていただけないでしょうか? もしくはサンプル、どこかいいサイトはありませんか? よろしくおねがいします。 UPDATEの場合 CurrentDb.Execute "UPDATE T_A SET WHERE Flag = '0'", dbFailOnError SELECTの場合 strSQL = "SELECT * FROM T_N " CurrentDb.Execute strSQL, dbFailOnError INSERTの場合 strSQL = "INSERT INTO FROM T_Y " CurrentDb.Execute strSQL, dbFailOnError

  • Accessデータ抽出から追加

    やりたいことを上手く伝えられず、何度もお手数をお掛けし申し訳ありません。 1と2の文を統合して1つのデータとして欲しいです。 どの様に統合したら宜しいのでしょうか? 教えて下さい。(読みづらく申し訳ありません。) 'ワークデータ作成(指定期間のデータを抽出) 1. StrSql = "INSERT INTO " StrSql = StrSql & "TW_在庫テーブルFoma ( " StrSql = StrSql & "販売店コード, " StrSql = StrSql & "キャリアコード, " StrSql = StrSql & "機種コード, " StrSql = StrSql & "数量) " StrSql = StrSql & "SELECT " StrSql = StrSql & "TTCOM_TZIK_TBL.TZIK_HOKNCD, " StrSql = StrSql & "TTCOM_TZIK_TBL.TZIK_CARRCD, " StrSql = StrSql & "TTCOM_TZIK_TBL.TZIK_SHINCD, " StrSql = StrSql & "COUNT(TTCOM_TZIK_TBL.TZIK_CARRCD) As SUURYO " StrSql = StrSql & "FROM TTCOM_TZIK_TBL " StrSql = StrSql & "INNER JOIN T_販売店マスタGeo " StrSql = StrSql & "ON TTCOM_TZIK_TBL.TZIK_HOKNCD = T_販売店マスタGeo.販売店コード " StrSql = StrSql & "WHERE TTCOM_TZIK_TBL.TZIK_CARRCD = '10' " StrSql = StrSql & "AND TTCOM_TZIK_TBL.TZIK_TZDKBN = '2' " StrSql = StrSql & "AND TTCOM_TZIK_TBL.TZIK_ZKTKBN = '0' " StrSql = StrSql & "AND TTCOM_TZIK_TBL.TZIK_SHINKB IN ('5','6') " StrSql = StrSql & "AND TTCOM_TZIK_TBL.TZIK_URIYMD <= " & "#" & CStr(Forms![FAMAIN]![TxtTO日付]) & "#" & " " StrSql = StrSql & "GROUP BY " StrSql = StrSql & "TTCOM_TZIK_TBL.TZIK_HOKNCD, " StrSql = StrSql & "TTCOM_TZIK_TBL.TZIK_CARRCD, " StrSql = StrSql & "TTCOM_TZIK_TBL.TZIK_SHINCD;" CurrentDb.Execute StrSql 2. StrSql = "INSERT INTO " StrSql = StrSql & "TW_在庫テーブルFoma ( " StrSql = StrSql & "販売店コード, " StrSql = StrSql & "キャリアコード, " StrSql = StrSql & "機種コード, " StrSql = StrSql & "数量) " StrSql = StrSql & "SELECT " StrSql = StrSql & "TTCOM_TZIK_TBL.TZIK_HOKNCD, " StrSql = StrSql & "TTCOM_TZIK_TBL.TZIK_CARRCD, " StrSql = StrSql & "TTCOM_TZIK_TBL.TZIK_SHINCD, " StrSql = StrSql & "COUNT(TTCOM_TZIK_TBL.TZIK_CARRCD) As SUURYO " StrSql = StrSql & "FROM TTCOM_TZIK_TBL " StrSql = StrSql & "INNER JOIN T_販売店マスタGeo " StrSql = StrSql & "ON TTCOM_TZIK_TBL.TZIK_HOKNCD = T_販売店マスタGeo.販売店コード " StrSql = StrSql & "WHERE TTCOM_TZIK_TBL.TZIK_CARRCD = '10' " StrSql = StrSql & "AND TTCOM_TZIK_TBL.TZIK_TZDKBN = '2' " StrSql = StrSql & "AND TTCOM_TZIK_TBL.TZIK_ZKTKBN = '0' " StrSql = StrSql & "AND TTCOM_TZIK_TBL.TZIK_ROMSYU = '1' " StrSql = StrSql & "AND TTCOM_TZIK_TBL.TZIK_SHINKB IN ('5','6') " StrSql = StrSql & "AND TTCOM_TZIK_TBL.TZIK_URIYMD <= " & "#" & CStr(Forms![FAMAIN]![TxtTO日付]) & "#" & " ") StrSql = StrSql & "GROUP BY " StrSql = StrSql & "TTCOM_TZIK_TBL.TZIK_HOKNCD, " StrSql = StrSql & "TTCOM_TZIK_TBL.TZIK_CARRCD, " StrSql = StrSql & "TTCOM_TZIK_TBL.TZIK_SHINCD;" CurrentDb.Execute StrSql

  • SQLについて

    以下のSQLを実行すると。 SQL実行中に以下のエラーが発生しました。 エラーコード:907 [Oracle][ODBC][Ora]ORA-00907: 右カッコがありません。 というエラーが表示されます。 どこがおかしいでしょうか? SELECT Q1.Pコード, Q1.Qコード, T1.E名称 A名称, T2.E名称 B名称, T3.E名称 C名称, T4.E名称 D名称, FROM ( ( ( ( SELECT Pコード, Qコード, Aコード, Bコード, Cコード, Dコード, FROM 報告書 WHERE Pコード = '0001' AND Qコード = '0001' AND ) Q1 INNER JOIN Eマスタ T1 ON Q1.Aコード = T1.Eコード ) INNER JOIN Eマスタ T2 ON Q1.Bコード = T2.Eコード ) INNER JOIN Eマスタ T3 ON Q1.Cコード = T3.Eコード ) INNER JOIN Eマスタ T4 ON Q1.Dコード = T4.Eコード ORDER BY Pコード, Qコード;

  • ACCESS VBAの実行時エラーなんですが

    クエリ式’(・・・)’の構文エラー:演算子がありません。 とエラーがでます。 ’(・・・)’の中身は↓ (T_KYORI.02オン1= '0101' and T_KYORI.03オン2= '160' and T_KYORI.15区間距離= '1274' ) です。 お気ずき、の点がありましたら、アドバイスください。 なお、実際の文は strSql = " SELECT T_KYORI.* FROM T_KYORI " & _ " WHERE ( T_KYORI.02オン1= '0101' and T_KYORI.03オン2= '160' and T_KYORI.15区間距離= '1274' );" Set inrec1 = CurrentDb.OpenRecordset(strSql) です よろしくおねがいします

  • リストボックスにデータを入れる

    いつもお世話になっております。 さっそくですが、ACCESS2003を使用しております。 DBからデータをもってきてそのデータをリストボックスに 表示させたいのですが表示できません。 Private sub Listboxhyouji ~中略~ ’データを持ってくる StrSQL = "" StrSQL = StrSQL & " SELECT dbo.book_mst.bookname,dbo.book_mst.bookID" & vbCr StrSQL = StrSQL & " FROM dbo.Zaiko_file INNER JOIN" & vbCr StrSQL = StrSQL & " dbo.book_mst ON dbo.Zaiko_file.bookid = dbo.book_mst.bookID" & vbCr StrSQL = StrSQL & " WHERE (dbo.Zaiko_file.Zaiko_flg = '1')" & vbCr Set rsWork = adoConn.Execute(StrSQL) If rsWork.EOF = False Then List1.RowSourceType = "Table/Query" List1.RowSource = rsWork.Source List1.Requery End If 皆さんのお力をお貸しください。

  • Access2010実行時エラー-21473525

    特定のレコードでボタンをクリックすると、以下のエラーが表示されて、「Me.チェック = True」が黄色に反転します。 実行時エラー ’-2147352567(8002009)’ データは変更されています。 文法的におかしなことをしていると思うのですが、エラーが出ない方法を教えていただければ助かります。 よろしくお願いいたします。 Dim dbs As Database Dim strSQL As String Set dbs = CurrentDb strSQL = "UPDATE マスター " & _ "SET 在庫数 = NZ(在庫数) + " & Nz(Me.入庫数量, 0) & " " & _ "WHERE コード = '" & Me.コード & "'" dbs.Execute strSQL Me.チェック = True

  • Accessでチェックボックスのチェックをすべてはずす方法

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=522365 で質問しました。 チェックの値をなくす方法として、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=164713 を発見し、以下のようにしてみました。 テーブル名:「T_マスタ」「T_アプリ」 T_マスタ(F_マスタ)からT_アプリ(F_アプリ)を開き、チェックボックス(フィールド名:check)にチェックをした後に、 ボタンを押したらチェックボックスをすべて「No」にしたいのです。 ボタンのコードは Dim strSQL As String strSQL = "update T_アプリ set check = false" DoCmd.RunSQL strSQL DoCmd.Close としました。 ですが、エラーが出てしまいます。 (レコードのロックとかって出ました。) どうすればきちんと値が「NO」になるのでしょうか?

  • 【Access2003】クエリで動作するSQLがVBAで動作せず困っています。

    下記のソースを実行したところ、「パラメータが少なすぎます。2を指定してください。」というエラーが表示されました。 エラーが発生する箇所は「db.Execute strsql」です。 しかし、このstrsqlに書かれているSQL文をクエリで実行した所、問題なく動作しました。 なんとなく、クエリでは書けるものの、VBAでは書きない所があるのかなと思ったのですが、どのように修正すればよいか分かりませんでした。 その為、上記の現象について、ご教示いただける方がいらっしゃいましたら、よろしくお願いします。 【VBA】 Private Sub btn_Click() Dim db As DAO.Database Dim ws As DAO.Workspace Dim str As String Set ws = DBEngine.Workspaces(0) Set db = CurrentDb ' トランザクション開始 ws.BeginTrans strsql = "INSERT INTO T_W ( W_DAY )" strsql = strsql & "SELECT T_M.M_DAY" strsql = strsql & " FROM T_M" strsql = strsql & " WHERE (((Left([T_M].[M_DAY],4) & Mid([T_M].[M_DAY],6,2) & Right([T_M].[M_DAY],2))" strsql = strsql & " Between IIf(Nz([Forms]![F_1]![text_str])='',0,[Forms]![F_1]![text_end])" strsql = strsql & " And IIf(Nz([Forms]![F_1]![text_str])='',99999999,[Forms]![F_1]![text_end])))" strsql = strsql & " ORDER BY T_M.M_DAY" db.Execute strsql ws.CommitTrans End Sub 【フォーム:F_1】 テキストボックス:text_str テキストボックス:text_end コマンドボタン:btn 【データベース:T_M】 フィールド名:M_DAY    値  :2001/01/01    値  :2001/01/02    値  :2001/01/03 (以下略) 【データベース:T_W】 フィールド名:W_DAY    値  :なし よろしくお願いします。

  • Access2007 データ型エラーについて

    お世話になっております。 下記のVBAでコードを数値型からテキスト型に変更したところ、「抽出条件でデータ型が一致しません。」というエラーが出ました。 デバッグをクリックすると、dbs.Execute strSQLの部分が黄色に反転しています。 VBAはあまり詳しくありませんので、エラーが出なくなる方法を教えていただければ助かります。 よろしくお願いいたします。 Private Sub 在庫差引_Click() Dim dbs As Database Dim rst As Recordset Dim strSQL As String Set dbs = CurrentDb Set rst = Me!サブフォーム.Form.RecordsetClone With rst .MoveFirst Do Until .EOF strSQL = "UPDATE マスター " & _ "SET 在庫数 = NZ(在庫数) - " & Nz(!数量, 0) & " " & _ "WHERE コード = " & !コード dbs.Execute strSQL .MoveNext Loop .Close End With End Sub