• ベストアンサー

アクセス2010 テーブル内コピー

フィールド1,フィールド2,フィールド3,フィールド4 フィールド1はID番号です。 フィールド4が条件に一致するレコードだけを、同じテーブル内に追加コピーするSQLはどう記述したらよろしいでしょうか? 1,長嶋,100,巨人 2,王,80,巨人 3,野村,90,ヤクルト フィールド4の条件 =巨人 として追加したい 1,長嶋,100,巨人 2,王,80,巨人 3,野村,90,ヤクルト 4,長嶋,100,巨人 5,王,80,巨人

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

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.1

> フィールド1はID番号です。 ということは、オートナンバという事を言いたかったのでしょうか オートナンバであれば、以下の SQL でいけると思います INSERT INTO テーブル名(フィールド2,フィールド3,フィールド4) SELECT フィールド2,フィールド3,フィールド4 FROM テーブル名 WHERE フィールド4='巨人'; オートナンバ、いやいや自分で採番・・・テーブルによってはいろいろあると思います いろいろ対応できるかな・・・ というものを作ってみました Public Sub fncRecCopy(sTable As String, sFld As String _           , Optional bAn As Boolean = False _           , Optional sWheres As String = "") というインターフェイスになるのですが、 使い方(指定方法)は、 sTable : テーブル名 sFld : フィールド名の列挙 (,)カンマ区切り      先頭が採番するフィールド bAn : その先頭のフィールドがオートナンバなら True を指定(既定:False) sWheres : 抽出条件以降の記述(既定:条件なし) Call fncRecCopy("テーブル名", "フィールド1,*", True, "フィールド4='巨人'") とすると、前述SQLでの処理と同じになります ※ 処理性能は、SQL一発の場合より遅くなります フィールド1 がオートナンバでなければ Call fncRecCopy("テーブル名", "フィールド1,*", False, "フィールド4='巨人'") とすれば、フィールド1 を採番します フィールド部分の列挙を "フィールド1,*" ↓ではなく "フィールド1,フィールド3,フィールド4" とした場合、指定されたフィールド部分しかコピーしません コピーするレコードの順が必要なら、条件以降に ORDER BY 記述します "フィールド4='巨人'" ↓例えば "フィールド4='巨人' ORDER BY フィールド1" ※ 汎用的にするには ・Where 指定と、 ・ORDER BY 指定は 分けた方が良いんでしょうけど 標準モジュールに記述して利用します Public Sub fncRecCopy(sTable As String, sFld As String _           , Optional bAn As Boolean = False _           , Optional sWheres As String = "")   Dim rs As New ADODB.Recordset   Dim rsC As ADODB.Recordset   Dim sSql As String   Dim i As Long, j As Long   Dim iM As Long   sSql = "SELECT " & sFld & " FROM " & sTable   If (Len(sWheres) > 0) Then     sSql = sSql & " WHERE " & sWheres   End If   sSql = sSql & ";"   If (Not bAn) Then iM = DMax(Split(sFld, ",")(0), sTable)   rs.Open sSql, CurrentProject.Connection, adOpenStatic, adLockOptimistic   Set rsC = rs.Clone   For i = 1 To rs.RecordCount     rsC.AddNew     For j = 1 To rs.Fields.Count - 1       rsC(j) = rs(j)     Next     If (Not bAn) Then       iM = iM + 1       rsC(0) = iM     End If     rsC.Update     rs.MoveNext   Next   rsC.Close   Set rsC = Nothing   rs.Close End Sub ※ エラー処理は入れてません ※ 不都合あれば、変更するとか・捨てるとかしてください エラーがあったら、エラー番号を返す様に Function にするとか・・・

situmonnsya
質問者

お礼

他のテーブルからデータコピーするのと同じで良かったのですね。 汎用モジュール 今回はオートナンバーですが、こちらもグッドタイミングで他に使わせて頂きます。 誠にありがとうございました。

関連するQ&A

  • テーブルの中身を違うテーブルへコピー

    お世話になります。 SQLについて質問があるのですが・・・。 Aというテーブルがあり、何件かデータが入っています。 そのAテーブルにフィールドを2つ新たに追加したいのです。 ALTER TABLEは使わずに、 以下の様な操作をしたいと考えております。 1:Aテーブルを違う名前に変更。  もしくはテーブルを丸々コピー。 2:テーブルBを作成。   (テーブルAのフィールドに2つフィールド追加した内容) 3:テーブルBにテーブルAの内容を丸々コピー。   その際、新規に追加した2つのフィールドには、初期値として、何かの文字or数字を入れる。 4:Aテーブルを削除 と、いう感じです。 作成はINSERT、削除はDROPを使えばいいのかなーって 思っているのですが、 テーブル名の変更や、テーブルの内容のコピーが ちょっと分かりません。 上記について、ご教授の程、よろしくお願いします。 なお、DBにはSQL Serverを使用しています。

  • access レコードを他テーブルにコピーしたい

    教えてください 現在テーブル5つ(A,B,C,D,E)とそれぞれのレコードを表示するフォームが5つ(A1,B1,C1,D1,E1)あります。 テーブルのフィールドはそれぞれ同じです。 やりたいことはフォーム上からレコードセレクタで選択しているレコードを、 コンボボックスから選んだテーブルに新規追加(コピー)することです。 添付画像のようにフィールドが定義されており、name,addres,phoneだけをコピーしたいと思っています。 よろしくお願いします。 A.mdb =================================================== id     name     addres     phone     etc =================================================== 1     suzuki     tokyo     03333     aaa.txt 2     saito     oosaka     0638      3     tanaka     tokyo     03848     bb.jpg

  • Accessのテーブルのレコード追加について

    お世話になります。 テーブルのレコードをコピーして、別のテーブルに 「編集」の中の「追加貼り付け」でテーブルのレコードを 追加しました。 しかし、データ型をオートナンバーにしているフィールド があったのですが、追加したレコードの部分のナンバーが 連番になりません。 どの様にしたら、追加した分も連番になりますでしょうか。 お教え下さいます様、宜しくお願い致します。

  • あるテーブルをそっくり別のテーブルに追加

    あるテーブルのレコードをそっくり別のテーブルに追加するSQLを教えていただけないでしょうか。 #フィールド名等はまったく同じです。 windows2000 access2000 です。

  • 【Access2000】テーブルを検索条件にした削除クエリ

    テーブル1 ID 名前 1  さとう 2  たかはし 3  こんどう 4  やまだ 5  いしかわ テーブル2 ID 2 4 5 上記、データを使用して、「テーブル2に登録されているIDが同じレコードを、テーブル1から削除するためのクエリ」を作成することは出来ますでしょうか? 結果として以下のようになることが希望です。 テーブル1 ID 名前 1  さとう 3  こんどう 削除クエリを作成して、条件で"ID=2"とすれば"2 たかはし"はもちろん削除されます。 しかし、条件を"like [テーブル2]![ID]"としても何も削除されません。 このような処理は可能でしょうか? 可能であればSQLを記述せずに実現させたいのですが可能でしょうか? (SQLは未熟者でして。。。) よろしくお願い致します。

  • ACCESSの既存テーブルに、EXCELデータをレコードとして追加する事は可能ですか?

    ACCESSの既存テーブルに、EXCELのデータをレコードとして追加する方法はありますか? 又は方法を説明しているサイト等ありましたら教えて下さい。 EXCELのデータは、シートの1行目に各項目名、2行目以降に各データが順次入力されている状態です。 尚、EXCELの項目名と、ACCESSのフィールド名は一致していない状態です。 例えば、 EXCELの項目名:「予約ID」、「予約名」、「予約日」 ACCESSのフィールド名:「rsv_id」、「rsv_name」、「rsv_date」 のような感じです。 ACCESSのフィールド「rsv_id」には、EXCELの「予約ID」項目のデータを入れなければいけません。 こういうことは出来るのでしょうか? ※マクロは使わないようにしたいです。 いったんACCESS上で、EXCELのデータを元に新規テーブルを作成してから、 その新規テーブルからデータを抽出して、既存テーブルにレコード追加するような、SQLを書けばできるでしょうか?

  • access・複数のテーブル・重複除外したデータ

    accessで複数のテーブルで重複しないレコードだけを抽出するSQL文を知りたいです。 フィールドは多数あり、「フィールドの内容が全て一致するレコード」以外のレコードを 重複しないレコードとして抽出したいと思っています。 テーブルは3つ以上ありますが、2つのテーブルで実行するSQL文でかまいません。

  • Accessのフォームとテーブルについて教えてください。

    Access2003を使用しています。 既存のフォームAにフィールド3個を増やしました。 フォームAはテーブル(1)と連動していました。 追加したフィールドはテーブル(6)のものです。 ところがフォーム上で追加フィールドに入力が出来なくなりました。3フィールドのうち、ひとつはコンボボックスです。表示はされますが確定ができません。 フォームAのSQLステートメントではテーブル(1)・(6)以外にテーブル(2)・(3)・(4)・(5)が結合されています。 フォームAからするとテーブル(2)・(3)・(4)・(5)のデータはIDの名称を見るための参照用です。 テーブル(6)は、追加フィールドのコンボボックスが参照用で、他の2追加フィールドは、フォームから入力してテーブル(6)に反映させたいものです。 テーブル(6)の画面では入力できます。 フォーム上からは入力できません。 設定が何か欠けているからでしょうか? 他の質問では2つのテーブルをひとつのフォームにする場合は、クエリを別に設けた方がいいとなっています。フォームが出来上がっているので、できればクエリを設けずに行いたいのですが、よくない方法でしょうか? 手順なども踏まえて教えていただけると助かります。 よろしくお願いいたします。

  • ファイルメーカー ドロップダウンリスト 値参照と関連テーブル

    フィールドA+++フィールドB+++フィールドC (名前)    (役職)   (担当) ------------------------------------------ 長嶋       社長     長嶋 原               城島               王        専務     王 清原              長嶋 松井              城島 城島       部長     城島 松坂              長嶋  青木              王 ----------------------------------------- フィールドBは、ドロップダウンリストで、別テーブル(役職テーブル)の値を参照しています。 フィールドCを、役職に当たっている人だけ(長嶋・王・城島)のドロップダウンリストにするには、どうしたらよろしいでしょうか? 役職テーブルと上記テーブルの役職とをリンクさせる。 フィールドCをドロップダウンリストにし、値一覧で、フイールドの値を使用。 フィールド指定で、上記テーブルの(名前)を選択。 次のテーブルから関連テーブルの値のみ含める(役職テーブル) として、出来るかと思いましたが、出来ませんでした。 よろしく、お願いします。

  • なぜ野村さんは巨人じゃなかったんですか

    なぜ最強キャッチャーの野村さんは巨人じゃなかったんですか 野球はあまり詳しくないですが 昔の巨人は王さん長嶋さんをはじめとしてすごい選手がずらりですよね 王さん長嶋さんの他にも金田正一や沢村賞の沢村(今の巨人にも沢村はいるけど) 昔はドラフトなかったから巨人欲しい選手とり放題だったんですよね 他の球団は巨人が取った余りを取っていたって感じでしょうか 欲しいのみんな取っていた巨人はなぜ最強キャッチャーの野村さんを取らなかったんでしょうか 王さん長嶋さん野村さんでクリーンナップしたらすごいことになったし野村さんの記録ももっとすごいことになっていたのにもったいないと思いました もし今もドラフトがなかったらゴジラの他にもイチローやダルちゃんまー君などなどは間違いなく巨人に入ってましたか 教えてください