Microsoft Access 掲示板

フォーム内容を複写する / 2

11 コメント
views
4 フォロー
2
hatena 2020/11/07 (土) 10:45:35 修正

追加クエリでカレントレコードのメイン、サブ共にオートナンバーのID部分以外を追加する。
といった感じで可能でしょうか。

それで可能ですよ。

まずは、メインの方を追加してから、サブを追加という順番になります。
メインを追加した後で、オートナンバーのIDの最大値(=追加したレコードのID)を取得して、
サブの外部キーの値にします。

下記のような感じのコードになります。

    Dim sSQL As String
    
    sSQL = "INSERT INTO メイン (フィールド1, フィールド2, ・・ ) " & _
           "SELECT フィールド1, フィールド2, ・・  FROM メイン " & _
           "WHERE 主キーフィールド=" & Me.主キーフィールド
    CurrentDb.Execute sSQL, dbFailOnError
    
    
    Dim maxID As Long
    maxID = DMax("主キーフィールド", "メイン")
    
    sSQL = "INSERT INTO サブ (" & maxID & ", フィールド1, フィールド2, ・・ ) " & _
           "SELECT リンクフィールド, フィールド1, フィールド2, ・・  FROM サブ " & _
           "WHERE リンクフィールド=" & Me.主キーフィールド
    CurrentDb.Execute sSQL, dbFailOnError
通報 ...