A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
Microsoft DAO 3.x Object Library を探してください。
案2-----------
省略
案2-----------
を消して
'案1-------
から
'案1-------
までの間のコメント(4行)を外してください。
コピペで動くと思いますが
コードの内容は把握しておいて下さい。でないと問題発生時に困りますよ。
No.2
- 回答日時:
バージョン情報はヘルプから確認できます。
下準備
テーブルを一個用意 テーブル名を T1
フィールド名を F1 フィールドののデータ型はテキストに。
テーブル T1を保存してから、右クリックしてプロパティを表示。
隠しオブジェクトにチェックを入れます。
(見たいときは、メニューから →ツール→オプション
表示タブの隠しオブジェクトにチェックを。)
ロックしたいフォーム名を FM1 と仮定します。
そのフォームの開く時のイベントに下記を記述しますが
VBAの画面になったら、ツール→参照設定で、DAO3.x Object Libraryにチェックを入れてください
(DAO3.x の x はバージョンによって異なりますが、5 か 6 です)
↓こうなります
Private Sub Form_Open(Cancel As Integer)
'要参照設定 DAO3.x Object Library
On Error GoTo err
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSql As String
strSql = "select F1 from T1"
Set rs = CurrentDb.OpenRecordset(strSql, dbOpenSnapshot)
'誰かが使用中の場合
If DCount("*", "T1") > 0 Then
'案1----------------
' rs.Close: Set rs = Nothing
' MsgBox rs!F1 & " が使用中ですので終了します", vbApplicationModal
' Cancel = True
' Exit Sub
'案1---------------
'案2---------------
If MsgBox(rs!F1 & " が使用中です。読み取り専用で開きますか?", _
vbYesNo + vbApplicationModal) = vbYes Then
rs.Close: Set rs = Nothing
Me.AllowEdits = False
Me.AllowAdditions = False
Me.AllowDeletions = False
Else
rs.Close: Set rs = Nothing
'開くのをキャンセル
Cancel = True
Exit Sub
End If
'案2---------------
Else
rs.Close: Set rs = Nothing
'誰も使用していないので自身を登録
strSql = "Insert Into T1 (F1) Values('" & Environ("username") & "')"
Debug.Print strSql
CurrentDb.Execute strSql, dbFailOnError
End If
Exit Sub
err:
MsgBox err.Number & vbCrLf & err.Description
Cancel = True
End Sub
閉じる時のイベントに下記を記述
Private Sub Form_Close()
'要参照設定 DAO3.x Object Library
Dim db As DAO.Database
Dim strSql As String
'自身が使っていたら名前を削除
If DCount("*", "T1", "F1='" & Environ("username") & "'") > 0 Then
'削除クエリ実行
strSql = "delete * from T1"
CurrentDb.Execute strSql
End If
End Sub
※隠しオブジェクトにしてあるテーブルを直接開かれた場合は処置なしです。
(誰かがフォームを開きっ放しで消えた場合は、このテーブル内のデータを削除して解除を(*^^)v)
メッセージボックスが表示された際に、Ctrl + Break を押して強制終了する場合の対処は、
メニューから、『起動時の設定』で『ショートカットキーを有効にする」の
チェックを外してください。
案2がロックの場合、不要でしたら削除して案1----の間の ' を外して下さい。
初心者にはキツイかも知れませんが頑張って下さい。
分からない単語はカーソルを持っていって、F1 キーでヘルプを見て下さい。
追伸
不明な点があれば、お礼欄にレス入れてください。
こちらにメールが入りますので応答も早いかと思います。
この回答へのお礼
お礼日時:2007/01/06 12:35
お返事が遅くなりすみません。がんばってみましたが、最初で止まってしまいました。VBAの画面になったら、ツール→参照設定で、DAO3.x Object Libraryにチェックを入れるところですが、該当する項目がありません。それと案1で考えています。項目チェックができれば
、コピペでいけますか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Access(アクセス) Accessで独自メニューバーまたはリボンを作成したい 1 2022/12/02 14:31
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Access(アクセス) Accessに関する質問です。 クエリーQ出勤 からフォームF出勤を作成 フォームは分割フォームで作 1 2023/05/26 08:57
- Visual Basic(VBA) vba メモリ節約 3 2022/09/16 21:45
- iPad ワイモバイルのシンプルMプランのシェアプランのSIMが、ipadに使える設定方法を教えてください。 2 2023/08/16 11:34
- その他(Microsoft Office) OneDrive Personalについて 1 2022/08/02 18:25
- Access(アクセス) access レポート 請求書について 2 2022/07/04 22:52
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS DCOUNTの抽出条件について
-
Accessで縦と横を入れ替えたい
-
ACCESSで購入回数を表示する方...
-
Access2013の式ビルダーでユー...
-
ACCESSで実行時エラー3008
-
sql文で削除クエリを書く
-
VBAでテーブル名とカラム名を動...
-
【access】複数のフィールドの...
-
Access から Excelのシートをイ...
-
データがあれば○○なければのSQL
-
社員名簿から検索する関数
-
Excel2007 VBA Daoクラス
-
ACCESS VBAでテーブル内の特定...
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
【Excel】特定の文字を含むセル...
-
メルカリのメルカードで買い物...
-
CloseとDisposeの違い
-
Excelシート上のマクロを登録し...
-
VBAでループ内で使う変数名を可...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データがあれば○○なければのSQL
-
ACCESS DCOUNTの抽出条件について
-
【access】複数のフィールドの...
-
ACCESS VBAでテーブル内の特定...
-
Accessで縦と横を入れ替えたい
-
Access vbaで重複レコードの削...
-
VBAでテーブル名とカラム名を動...
-
SQLServer→Access インポート
-
別のaccessファイルからデータ...
-
抽出条件でデータ型が一致しま...
-
ACCESSで購入回数を表示する方...
-
DAOでSQLServerに接続し、LeftJ...
-
アクセスで連続データをテーブ...
-
ACCESSで実行時エラー3008
-
sql文で削除クエリを書く
-
Access から Excelのシートをイ...
-
access追加クエリーでform入力...
-
VB.NETでテーブルを作成
-
アクセスで定数を利用したい。
-
ACCESSのクエリ、SQLに変数を使...
おすすめ情報