Microsoft Access 掲示板

dbReadOnlyでテーブルを読み取り専用にできる??? / 1

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

DAOのOpenRecordset dbReadOnlyでテーブルを読み取り専用にできるでしょうか?

OptionsとLockEditに入れられるようですが、

dbReadOnly はOptionsだけだと思いますが。(下記参照)

Options引数
RecordsetOptionEnum 列挙 (DAO) | Microsoft Learn

LockEdit引数
LockTypeEnum 列挙 (DAO) | Microsoft Learn

読み取り専用になるのが解説によって「自分だけ」「他人だけ」「全員」で分かれています。

上記のMSの公式のリンク先の解説では、

dbReadOnly Recordset を読み取り専用として開きます。

となってます。開いたRecordsetが読み取り専用になるということだと読み取れます。他のユーザーが更新できないとは書かれてません。

他のユーザーがレコードを変更できないようにするなら、下記ではないでしょうか。

dbDenyWrite 他のユーザーが Recordset のレコードを変更できないようにします。

私は下記のように理解しています。もし、試した結果が異なる場合は指摘してください。

'このレコードセットのみ読み取り専用。他ユーザーは更新可能。
Set rs = CurrentDb.OpenRecordset("テーブル名", dbOpenTable, dbReadOnly)

'このレコードセットは更新可能。他ユーザーは更新不可。
Set rs = CurrentDb.OpenRecordset("テーブル名", dbOpenTable, dbDenyWrite)

'このレコードセットも他ユーザーも更新不可。
Set rs = CurrentDb.OpenRecordset("テーブル名" ,dbOpenTable ,dbReadOnly + dbDenyWrite)
通報 ...
  • 2

    気になって検索してみたら、間違った(?)解説してあるサイトが結構ありますね。
    このような場合はまずはMSの公式を参照して確認するのがいいです。
    ただ、公式もたまに間違っているときがありますので、実際にテストして確認するということも必要になります。