Microsoft Access 掲示板

メインテーブルのIDのMAX値が思うように取得できない / 3

8 コメント
views
4 フォロー
3

一対多のテーブルの新規追加するする場合は、じぶんなら下記のようにします。

メインテーブルへの追加(1レコード)はDAOを使って追加。その時にそのレコードのメインID(オートナンバー型)を変数に格納しておく。

サブテーブルへの追加はSQLをDAOでExcuteメソッドで実行して追加。その時に、メインIDは上記の変数のものを利用。

なぜ、DAOを使うかというと、
DoCmd.RunSQLは非同期で実行されるので、SQLの実行が終了する前に次の処理が実行される可能性があるので、それを避けるためです。

また、メインIDをDMaxで取得する場合、マルチユーザーで同時追加する場合に、自分のメインIDでない可能性も捨てきれないので。

メインに追加するのは1レコードだけなのでこのような可能性は低いですが、コード的には大差ないのでより安全性の高いものにしてます。

通報 ...