アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

  DoCmd.OpenForm "フォーム名", , , " [社員ID] = 1" の「=1」のところが[パスID][パスワード]と一致する社員Noに置き換える方法を教えてください。
わかりにくい質問で申し訳ないですが、よろしくお願いします。

A 回答 (3件)

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

ド] = " & 入力されたパスワード
    • good
    • 0

No.1です。


文字列ならば、シングル クォーテーションを入れた方が良かったかもです。


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

この回答への補足

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

補足日時:2008/12/01 21:47
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/12/01 19:04

かなり昔に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
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/12/01 21:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す