hatena
hatena
2023/12/01 (金) 15:44:14
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)
通報 ...
気になって検索してみたら、間違った(?)解説してあるサイトが結構ありますね。
このような場合はまずはMSの公式を参照して確認するのがいいです。
ただ、公式もたまに間違っているときがありますので、実際にテストして確認するということも必要になります。