0

データベースに問題があります。ユーザーとパスワードの同じプールを共有する複数のアクセス データベースがあります。それらは、「マスター」データベース (ユーザーとパスワードのテーブルを保持するバックエンド) にリンクされたテーブルによって、ユーザーとパスワードのテーブルを参照します。また、現在のユーザーとログインしているデータベースを格納するテーブルもあります。私が直面している問題は、ログアウト方法が実際にログアウトしていないことです。ざっくりこんな感じです。

    'this code is run on click of exit button

 Public Sub logout(UserName As String, database As String)

 On Error Resume Next

 Dim dbMine As DAO.database
 Set dbMine = CurrentDb

 Dim qr As String

   qr = "DELETE * FROM tblCurrentUsers WHERE username = '" & UserName & "' AND       Database        = '" & database & "' ;"
    'debug.print qr
   dbMine.Execute qr


  Application.Quit

 End Sub

問題は、レコードが削除されていないように見えることです。コードが実行されるデータベースに存在するリンク テーブルを参照する代わりに、データベース オブジェクトをソース テーブルに設定する必要がありますか? もしそうなら、相対パスでそのデータベースを参照するだけですか?

4

2 に答える 2

0

dbFailOnErrorクエリの実行時にエラーの詳細をキャッチするオプションを追加します。どのようなエラーが発生するかを確認してください。問題の解決に役立つ可能性があります。

Public Sub logout(UserName As String, database As String)
On Error GoTo mError:
Dim dbMine As DAO.database
Set dbMine = CurrentDb
Dim qr As String
   qr = "DELETE * FROM tblCurrentUsers WHERE username = '" & UserName & "' AND Database = '" & database & "' ;"
    'debug.print qr
   dbMine.Execute qr, dbFailOnError
  Application.Quit
Exit Sub
mError:
  MsgBox "Error: " & Err.Description
End Sub
于 2012-11-14T18:54:59.157 に答える
0

使ってみて

Set dbMine = DBEngine.Workspaces(0).Databases(0)

それ以外の

Set dbMine = CurrentDb

CurrentDb の使用時に同様の問題が発生しました。http://msdn.microsoft.com/en-us/library/office/bb237861(v=office.12).aspxによると、

CurrentDb メソッドは現在のデータベースの別のインスタンスを作成しますが、DBEngine.Workspaces(0).Databases(0) 構文は現在のデータベースの開いているコピーを参照します。

おそらく、DAO または Access が "現在のデータベースの新しいインスタンス" を処理する方法に微妙な違いがあります。

于 2012-11-14T21:30:47.287 に答える