ACCESSテーブルのレコードを全て一括移動する方法

このQ&Aのポイント
  • ACCESSテーブルのレコードを一括で移動する方法を教えてください。ACCESS VBAを使用して処理を行っていますが、現在困っています。
  • フォームに表示させて一件ずつ手入力で処理していたACCESSテーブルのデータを一括で処理できるように修正中です。インポートされたデータを結果テーブルに一括でインポートしたいのですが、エラーが発生しています。
  • 取込テーブルから結果テーブルにレコードを一括でインポートする方法がわかりません。現在はレコードセットとして1件ずつインポートしていますが、他に方法はありますか?
回答を見る
  • ベストアンサー

ACCESS テーブルのレコードを全て移動

ACCESS VBA を使って処理を行っております。 原因が分からず困っております。 結果テーブル  フィールド名 monoID,monona,inkosuu,outkosuu,nowkosuu 取込テーブル  フィールド名 物ID,物名,現在個数 今までフォームに表示させて一件づつ手入力にて処理しておりましたが、複数人で作業できるように修正している所です。 ○各々がExcelに収集したデータをCSVにて「取込テーブル」にインポート   ↓ ○「取込テーブル」のレコードを集約しデータ整合(ここまでは出来ています)   ↓  ○「取込テーブル」の全レコードを「結果テーブル」にインポート DIM SQL001 AS String SQL001 = "INSERT INTO 結果テーブル (monoID,monona,nowkosuu) SELECT (取込テーブル.物ID,取込テーブル.物名,取込テーブル.現在個数) FROM 取込テーブル CurrentDb.Execute SQL001 これで動作させるとエラーになります。 ただ、実験で SQL001 = "INSERT INTO 結果テーブル (monoID) SELECT (取込テーブル.物ID) FROM 取込テーブル の様に一つのフィールドだけにすると全てのレコードをインポートすることが出来ます。 何か凡ミスの様な気もするのですが、取込テーブルをレコードセットとし1件ずつインポートする方法しか無いのでしょうか?

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

  • ベストアンサー
  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.1

>>これで動作させるとエラーになります。 エラーの内容を確認して、エラー原因を取り除いてやれば、うまくいくんじゃあないですか?

iwaotoko-f
質問者

お礼

ありがとうございます。 自己解決できました。。。。

iwaotoko-f
質問者

補足

SQL001 = "INSERT INTO 結果テーブル (monoID,monona,nowkosuu) SELECT (取込テーブル.物ID,取込テーブル.物名,取込テーブル.現在個数) FROM 取込テーブル SELECT部の「(」と「)」を削除するだけで良かったです。

関連するQ&A

  • Access2000におけるテーブル追加について

    テーブル1にテーブル2の内容をすべて追加しようと思います。 二つのテーブルのフィールド項目は同じにしました。(テストなのでとりあえず番号と名前) マクロを使ってやろうと思い、アクションを「SQLの実行」とし、SQLステートメント には「INSERT INTO <テーブル1> SELECT<社員番号>,<名前>FROM<テーブル2>」 としました。 しかし、マクロを実行してみると「INSERT INTO 構文エラー」となってしまいます。 なぜなんでしょうか?

  • ACCESS VBA レコードセットの参照方法について

    ACCESS2000でシステムを作っています。 ADOを使って、SELECT句に"*" を使用した内部結合でデータを 抽出したときの結果の参照方法がわかりません。 SQL="SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id" rsはレコードセット,ACはアクティブコネクションとして rs.Open SQL, AC, adOpenKeyset, adLockOptimistic にて結果を取得し、変数aにtable1のフィールド名の値を代入 しようとしています。 a = rs!table1.フィールド名 では「コンパイルエラー メソッドまたはデータメンバが 見つかりません」となり、値の参照ができません。 "*" でなく、フィールド名を明示して それぞれのフィールドに "as 別名"をつければ 参照できますが、フィールドが多いので "*"を使用したいのです。 大変初歩的な質問かと思いますが、どうかよろしくお願いします。m(_ _)m

  • access一部のフィールドを他のテーブルへVBA

    先日 https://okwave.jp/qa/q10245651.html において > table2の新しいデータとして > table1のデータをコピーしたい、 単に追加で ということであれば、という 御回答: Sub Test() Dim StrSQL As String StrSQL = "INSERT INTO table2 SELECT table1.* FROM table1;" DoCmd.SetWarnings False DoCmd.RunSQL StrSQL DoCmd.SetWarnings True End Sub ---------------------- 上記の 回答をいただき うまく稼働しました 部分的にフィールドを別テーブルに 移動するとき ここでは table1のフィールド名 IDに table2のフィールド名 bに 入っている数値 にい 1を加えた数値を 移動したいのですが Public Function Test() Dim tb1 As Table Dim tb2 As Table tb1 = table1 tb2 = table2 Dim strSQL As String strSQL = "INSERT INTO table2![ID]SELECT"("[b]"FROM tablel)+1" (table1のフィールド[b]の数値に1を加えた数値を table2のフィールド[ID]に移行する、というつもりです) DoCmd.SetWarnings False DoCmd.RunSQL strSQL DoCmd.SetWarnings True End Function 稼働しません すみません 宜しくお願い致します (ついでながら ここで でてくるb というのは テーブル table3 の IDの総和 すなわち SELECT Count(table3.ID) AS b FROM table3; 要は table3の最後のレコードの次のレコードの 番号の数値を table2のIDに移動したい というわけであります) (いずれのIDや bについても 数値型 長整数型 重複あり です)

  • Access にて DISTINCROW を使用した INSERT SELECT

    お世話様です。 Access2003 VBAにて、DoCmd.RunSQLを使用してSQL文を流す際、 普通のINSERT-SELECT文はOKですが、 そのSELECT文にDISTINCROW句を使用していると、 数百件程度のSELECT結果しかINSERTできません。 本当は数千件のSELECT結果をINSERTしたいのですが、 これを実行した場合、エラーにもならず、1レコードもINSERTされません。 ためしに、DINSTINCTROWではなく、SQL文を変更してDISTINCTにしてみたところ、 2000件以上でもINSERTできました。 DISTINCROW句を使用して数千件でもINSERTできる方法はあるでしょうか? ちなみにSELECT単体ですと、DISTINCTROWを使用していながら、 数千件でも結果を表示できます。 SQL例: str_SQL = " INSERT INTO 結果テーブル(フィールド1, フィールド2, フィールド3)  SELECT DISTINCTROW A.項目1, A.項目2, B.項目1  FROM テーブル1 A, テーブル2 B  (WHERE句はあってもなくても現象変わらず)  ORDER BY A.項目4 ASC, A.項目5 ASC " DoCmd.RunSQL (str_SQL) よろしくお願いいたします。

  • 副問合せをいれたINSERT文で、問合せ結果が無い場合

    副問合せをいれたINSERT文で、問合せ結果が無い場合 環境はSQL Server2005です。 テーブルA,テーブルBが存在し、テーブルAにレコード追加する際に一部をテーブルBから抽出して、 INSERTしようとしています。 [SQL文]  INSERT INTO テーブルA(フィールド1, フィールド2, フィールド3,フィールド4・・・)   SELECT 'AAA', 'BBB' ,B.フィールド3, B.フィールド4 ・・・   FROM テーブルB B WHERE ~ この場合、テーブルBにWHEREで指定した条件のレコードが存在しない場合はINSERTされなくなってしまいます。 存在しない場合は、該当のフィールドにはNULLをいれたいのですが、テーブルBからの結果が存在しない場合でも テーブルAにINSERTする方法はありますか?

  • AccessのSQLについて教えてください。

    Excel+VBA から、ADOを使って、Accessを操作しようとしています。 なんとか、sqlを実行できるようになったのですが、 一点、分からないところが出てきましたので、教えてください。 insert文で、レコードを追加したとき、追加されたレコードのIDを取得したいのですが、 どのようにすれば良いかわかりません。 コードは次のようにしています。 cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & データベース名 & ";" sql = "INSERT INTO テーブル名(フィールド) VALUES(値)" cnn.Execute sql 以上、すみませんが、よろしくお願いいたします。

  • レコードセットの値を一気にDBに

    access2007で開発しています。 レコードセットのデータをDBのテーブルに一気にいれる方法はないのでしょうか? 調べたところレコードセットをMOVENEXTで一件ずつ読込み、インサート文をなげている例はあったのですが、一気にいれる方法は見当たりませんでした。 さらにいうと元々はSQLで insert into テーブル1(・・・) select ・・・from テーブル2 としたかったのですが、executeすると´3065´選択クエリを実行できません´のエラーとなってしまいました。 すいませんが、ご教唆ねがいます。

  • accessとオラクルの連携について

    お世話になります。アクセスでテーブルのデータをSQL文で取得し、 そのデータをオラクルのテーブルにinsertしたいと思ってます。 ただ、フィールドの数が40個もあるので insert into ・・・・Fields(0),Fields(1)・・・・ と記述するのはかなり面倒なので何かいい方法はないでしょうか よろしくお願いします。 なお、access側とオラクル側のテーブルは同じ型です。 ’ローカルテーブルのデータを取得 rec.Open "select * from tesuto", cnn ’取得したデータをinsertする Do Until rec.EOF sql= insert into value(Fields(0),Fields(1),・・・ rec1.Open "select * from tesuto1", cnn1 Loop

  • MySQL:一つを除いてすべてのフィールドを選択

    こんにちは、 データベースにはTABLE1とTABLE2の二つのテーブルがあって、TABLE1からTABLE2に、一つのフィールドを除いてほかのすべてのフィルードを移すには、どうすればいいのでしょうか INSERT INTO TABLE2 SELECT * FROM TABLE1 WHERE field_name != ID みたいなものがないのでしょうか IDフィールド以外にほかのすべてのフィールドを移したい。 TABLE 2の構造は IDフィールド COL2 COL3 COL4 ... COL50 つまりCOL2からCOL50までのデータを移したいのですが、できればフィールドを一つ一つ書くのを避けたいのです。 詳しい方がいらっしゃいましたら。ご回答をよろしくお願いします。

    • ベストアンサー
    • MySQL
  • ACCESSでテーブルのMAX値(文字列を除く)をやりたい

    ACCESS2000で1テーブル内の項目のMAX値を取りたいのですが、数値ではないのは除外したいです。 どのようにSQLを組んだらいいのでしょうか。 ex) テーブル名:a フィールド名:ID(string型) +--+ |01| +--+ | 2| +--+ |03| +--+ |04| +--+ |05| +--+ |06| +--+ |R1| +--+ 上記の項目でMAX値06を取りたいのですが SQL>select MAX(ID) as MaxID from a とすると「R1」がMAX値になる。 「06」をMAX値として取りたい。