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 にするとか・・・
この回答へのお礼
お礼日時:2014/01/19 21:45
他のテーブルからデータコピーするのと同じで良かったのですね。
汎用モジュール
今回はオートナンバーですが、こちらもグッドタイミングで他に使わせて頂きます。
誠にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- 野球 王貞治が巨人を去った理由は 3 2022/06/25 21:52
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- 野球 藤田元司は巨人の名将? 3 2022/11/07 19:51
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- 野球 ONの後に監督を引き受けた藤田元司は 3 2022/05/23 07:51
- 野球 オールスターゲーム セ・リーグ 1 2022/06/07 23:46
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- 野球 質問です。 1 2022/09/23 18:52
- 野球 第三次原巨人は 1 2022/07/16 19:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データベースファイル(.db)を開...
-
Accessを開きなおすとテキスト...
-
エクセルのフィルタ抽出が固まる
-
警察はスマホに保存した動画や...
-
帳票フォームでのあるコンボボ...
-
CSVファイルでテキストの改行の...
-
最新の日付とその金額をクエリ...
-
構文エラー:演算子がありませ...
-
ACCESSのSQLで、NULLかNULLでな...
-
汎用カード型のデータベースソ...
-
Access SQL のMID関数について
-
AccessのSQLで、FROM句の構文エ...
-
QRコードとバーコードについて
-
Accessのリンクテーブルについて
-
Accessフォームで平均値の出し...
-
sql update で 抽出条件データ...
-
シートが異なるセル同士を、相...
-
エクセル 顧客管理表に担当ごと...
-
FROM句の構文エラー ACCESS SQL
-
FileMaker Pro 10 で令和を表示
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データベースファイル(.db)を開...
-
ACCESSのSQLで、NULLかNULLでな...
-
Accessを開きなおすとテキスト...
-
警察はスマホに保存した動画や...
-
エクセルのフィルタ抽出が固まる
-
Accessのフォームへ、記録者の...
-
構文エラー:演算子がありませ...
-
最新の日付とその金額をクエリ...
-
Accessのリンクテーブルについて
-
CSVファイルでテキストの改行の...
-
更新クエリをリンクデータベー...
-
データベースの選定について 要...
-
ドリームメーカーってどうやっ...
-
シートが異なるセル同士を、相...
-
帳票フォームでのあるコンボボ...
-
20万行あるデータを動かしたい
-
Access フォーム上でコンボボッ...
-
googleフォームでインストール...
-
顧客データベースを作る場合、...
-
テキストボックスにコントロー...
おすすめ情報