あなたがVBAで立ち往生している場合、少し荒いです。 1つの方法は、タイマーを使ってフォームを作成することです(目に見えないように開くことができます)。タイマーは、レコード数の変更に対して1分に1回(または任意の間隔が適切と思われます) (下のコード)
これは個人的に私がお勧めするものではありません。アクセスは腐敗のために有名です。単純なバックエンドとして使用する場合は、ほとんどの時間は安全ですが、それはあなたのデータベースでロシアのルーレットをプレイしています。少なくとも私は別のアクセスファイルからあなたのデータベースにリンクし、リンクされたテーブルを監視します。あなたのモニターがクラッシュした場合、最後に、あなたがウェブサイトのタイムアウトの唯一の原因であることを嫌っているので、あまり頻繁に問い合わせをしないようにしてください:)
Option Explicit
Private m_lngLstRcrdCnt_c As Long
Private Sub Form_Open(Cancel As Integer)
Const lngOneMinute_c As Long = 60000
Me.TimerInterval = lngOneMinute_c
End Sub
Private Sub Form_Timer()
Const strTblName_c As String = "Foo"
Const strKey_c As String = "MyField1"
Dim rs As DAO.Recordset
Dim lngRcrdCnt As Long
If TableExists(strTblName_c) Then
Set rs = CurrentDb.OpenRecordset("SELECT Count(" & strKey_c & ") FROM " & strTblName_c & ";", dbOpenSnapshot)
If Not rs.EOF Then lngRcrdCnt = Nz(rs.Fields(0&).Value, 0&)
rs.Close
If lngRcrdCnt <> m_lngLstRcrdCnt_c Then
m_lngLstRcrdCnt_c = lngRcrdCnt
'Number of records changed, do something.
End If
Else
'Table is deleted, do something.
m_lngLstRcrdCnt_c = -1
End If
End Sub
Private Function TableExists(ByVal name As String) As Boolean
Dim tdf As DAO.TableDef
On Error Resume Next
Set tdf = CurrentDb.TableDefs(name)
If LenB(tdf.name) Then 'Cheap way to catch broken links.
Set SafeGetTable = tdf
End If
End Function
あなたは、データのアクセス方法が使用されて知っていますか? ODBCの場合は、ODBCのロギングから何かを学ぶことができます。 –
受け入れられた回答は、現在のバージョンのアクセスでは正しくありません。下にスクロールすると、Access 2010で利用できるデータマクロイベントの一覧が表示されます。 – manotheshark