• 締切済み

MSアクセス 条件に合うデータのみを抽出してフォームを開けたい

アクセスの初心者です。ご指導よろしくお願いします。 フォームで条件に合うデータのみを抽出してフォームを開けたいと四苦八苦しています。 現在は汎用フォームを使い、パスIDとパスワードを入れて照合するとDoCmd.OpenForm "フォーム名", , , " [社員No] = 1" で[社員No]「1」のデータのみ抽出した別フォームが開くようになっています。 希望としては、照合した人が照合した人が持つ[社員No]のデータのみが開くようにしたいと考えています。 パス管理のテーブルは ID、 社員No、社員名、パスID、パスワードになっています。   DoCmd.OpenForm "フォーム名", , , " [社員ID] = 1" の「=1」のところが[パスID][パスワード]と一致する社員Noに置き換える方法を教えてください。 わかりにくい質問で申し訳ないですが、よろしくお願いします。

みんなの回答

  • tohru999
  • ベストアンサー率49% (76/154)
回答No.3

かなり昔にAccessをやっていただけなので、コードの書き方が昔風かもですが・・・ (以下のような理解で正しいでしょうか?) [名称の定義] パス管理のテーブル ・・・ T1 パスIDの入力(TextBox) ・・・ txtID パスワードの入力(TextBox) ・・・ txtPass [コード] Dim objMyDB As Database Dim objRecordset As Recordset Set objMyDB = DBEngine(0)(0) Set objRecordset = objMyDB.OpenRecordset("SELECT [社員No] FROM [T1] WHERE [パスID] = '" & Me![txtID].Value & "' AND [パスワード] = '" & Me![txtPass].Value & "' ", dbOpenForwardOnly, dbReadOnly, dbReadOnly) If objRecordset.RecordCount = 0 Then MsgBox ("IDとPASSが一致しない") Exit Sub End If DoCmd.OpenForm "フォーム名", , , " [社員ID] = " & CStr(objRecordset.Fields(0).Value) objRecordset.Close Set objRecordset = Nothing Set objMyDB = Nothing

chibaole
質問者

お礼

すみません!ちょうどさきほど行き違いで回答(補足)してしまったところです。別途の画面で解決はできましたが、せっかく回答いただいたものは勉強の為、トライしてみます。ご親切に本当にありがとうございました。

  • tohru999
  • ベストアンサー率49% (76/154)
回答No.2

No.1です。 文字列ならば、シングル クォーテーションを入れた方が良かったかもです。 ↓ DoCmd.OpenForm "フォーム名", , , "[パスID] = '" & 入力されたパスID & "' AND [パスワード] = '" & 入力されたパスワード & "' "

chibaole
質問者

お礼

早速の回答ありがとうございました。 早速やってみましたが、ちょっと目的と違う結果になってしまいました・・・。私の伝え方がまずかったのと思いますのでもう一度お伝えします。 認証後に開けたいフォームは[パスID]と[パスワード]のフィールドがないフォームで、関連できるのは[社員No]だけです。 フォームを開ける前に汎用認証フォームでIDとパスワードを入れ、パス管理テーブルと認証させ、そのテーブル内のID、パスワードに関連する社員Noを抽出させてから開けたいフォームの社員Noにマッチさせたいのです。(うまく伝わりますでしょうか・・・)

chibaole
質問者

補足

何故か2つ質問が流れてしまったようで・・・、別の画面で解決できました。 ありがとうございました。

  • tohru999
  • ベストアンサー率49% (76/154)
回答No.1

DoCmd.OpenForm "フォーム名", , , "[パスID] = " & 入力されたパスID & " AND [パスワード] = " & 入力されたパスワード

関連するQ&A