• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Accessログイン権限)

Accessログイン権限の制御方法とは?

このQ&Aのポイント
  • 質問者はAccess2003を使用しており、ログイン画面を作成しているが、管理者と一般ユーザーで分けてログイン後の画面を切り替えたい。
  • 現在の仕様ではログイン画面(frm_ログイン)とメイン画面(frm_main、frm_main2)があり、アカウントフィールドで管理者と一般ユーザーを区別している。
  • 質問者が作成したVBAコードでは、アカウントに関係なくfrm_mainが開かれてしまうため、アドバイスを求めている。

質問者が選んだベストアンサー

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.2

変数「アカウント」に誰も値を代入していないから? 書き方(ADOで)の例となります。 Private Sub rogin_Click()   Dim rs As New ADODB.Recordset   Dim stDocName As String   Dim bOk As Boolean   If (IsNull(Me.[UserName])) Then     MsgBox "ユーザー名が未入力です"     Me.[UserName].SetFocus     Exit Sub   End If   If (IsNull(Me.[Password])) Then     MsgBox "パスワードが未入力です"     Me.[Password].SetFocus     Exit Sub   End If   bOk = False   rs.Source = "SELECT * FROM tbl_ユーザー WHERE [ユーザー名]='" & Me.[UserName] & "';"   rs.Open , CurrentProject.Connection, adOpenKeyset, adLockReadOnly   If (rs.RecordCount = 1) Then ' ★     If (StrComp(rs("パスワード"), Me.[Password], vbBinaryCompare) = 0) Then       If (rs("アカウント") = "1") Then         stDocName = "frm_main"       Else         stDocName = "frm_main2"       End If       bOk = True     End If   End If   rs.Close   If (bOk = True) Then     'ユーザー名・パスワードが一致した     DoCmd.OpenForm stDocName     DoCmd.Close acForm, Me.Name   Else     MsgBox "ユーザー名/パスワード が違います"     Me.[UserName].SetFocus   End If End Sub ※ エラー処理は盛り込んでください ※ ★部分は、同姓同名がなく、ユーザー名で1件のレコードが抽出されたらの意味 ※ ユーザー名・パスワードの入力があった場合、どちらを間違ったか特定させないようにメッセージは1つに

hirai7
質問者

お礼

参考にさせてもらったところようやくできました。 回答だけでなくアドバイスまでいただき感激です。 これから回答していただいたソースコードの理解もしっかりとやっていきたいと思います。 ご回答ありがとうございました。

その他の回答 (1)

回答No.1

>If アカウント = "1" Then 突然、変数「アカウント」が出現してるようですが、本当は値を取得してるんですか? その値はどうなってます?

hirai7
質問者

お礼

まだAccessは触り始めたばかりでよくわからないので こんな感じかな?と思いつつ適当に記述していたんですがもっと勉強しないといけませんね。 #2さんの回答を参考にやってみたところようやくできました。 ご回答ありがとうございました。

関連するQ&A