• ベストアンサー

Access2000での質問

ログイン画面で、ID、パスワードを入力後btnログインクリックするとメインフォームを開き、メインフォームにあるtxtログイン者名というテキストボックスにログイン者名をだしたいのですがどうすればいいのですか? テーブル名:ユーザーマスタ フィールド名:ログインID、ユーザー名、パスワード フォーム名:ログイン、メインメニュー ものすごい初心者です!よろしくおねがいします!!

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.19

aptivaさんも言われているように、No.15のコードで出来ているはずです。 ただし、最初のところを、 If IsNull(Me.txtユーザーID) Then ret = myMsgBox(2) ElseIf IsNull(Me.txtパスワード) Then ret = myMsgBox(3) End If と直します。(Else句を削除する。) これで、 txtユーザーIDが未入力なら2、 txtパスワードが未入力なら3、 IDとパスワードが[ユーザーマスタ]になければ4 のメッセージを表示するはずです。 メッセージが違うなら、 If DCount(・・・・・ の下の ret = myMsgBox(4) を希望するメッセージに変更して下さい。 3種類のみログインさせたいなら、[ユーザーマスタ]にその3種類のみ登録しておけばいいのです。

その他の回答 (19)

  • aptiva
  • ベストアンサー率36% (193/529)
回答No.20

補足説明します。 If IsNull(Me.txtユーザーID) Then ret = myMsgBox(2) Exit Sub ElseIf IsNull(Me.txtパスワード) Then ret = myMsgBox(3) Exit Sub End If この部分はユーザーID&パスワードが入力されているかどうかのチェックです。 LoginID = Me!txtユーザーID.Value LoginPassword = Me!txtパスワード.Value この部分はメインフォームでユーザー名を表示するために、ユーザーID&パスワードをグローバル変数に保存しています。 If DCount("ユーザー名", "ユーザーマスタ", "ログインID = '" & LoginID & "' AND パスワード = '" & LoginPassword & "'") = 0 Then ret = myMsgBox(4) MsgBox("ログインID、パスワードが違います!") DoCmd.Quit acQuitPrompt Exit Sub Else DoCmd.OpenForm "メインメニュー" DoCmd.Close acForm, "ログイン", acSaveNo End If この部分で「ユーザーマスタ」に、該当するユーザーID&パスワードが登録されているかどうか確認し(DCount) 登録されていなかったら、メッセージを表示し終了。 登録されていたら、メインメニューを開き、ログインフォームを閉じています。

moshamosha
質問者

お礼

お礼の点数が10点しか選べなかったのでもうひとつの方で上乗せしておきます! ありがとうございました!

  • aptiva
  • ベストアンサー率36% (193/529)
回答No.18

少し訂正&余分を少し省きます。 Private Sub btnログイン_click() Dim ret As Integer If IsNull(Me.txtユーザーID) Then ret = myMsgBox(2) Exit Sub ElseIf IsNull(Me.txtパスワード) Then ret = myMsgBox(3) Exit Sub End If LoginID = Me!txtユーザーID.Value LoginPassword = Me!txtパスワード.Value If DCount("ユーザー名", "ユーザーマスタ", "ログインID = '" & LoginID & "' AND パスワード = '" & LoginPassword & "'") = 0 Then ret = myMsgBox(4) MsgBox("ログインID、パスワードが違います!") DoCmd.Quit acQuitPrompt Exit Sub Else DoCmd.OpenForm "メインメニュー" DoCmd.Close acForm, "ログイン", acSaveNo End If Exit_btnログイン_Click: Exit Sub Err_btnログイン_Click: MsgBox Err.Description Resume Exit_btnログイン_Click End Sub

moshamosha
質問者

お礼

本当にお手数かけました!やっとすべての謎が解けました!ありがとうございます!本当に助かりました!! 初めからすべてのコードを書けばよかったのですね… 大変ご迷惑をおかけしました… 色々勉強になりました! すごい悩ましてしまいまして申し訳ありません! 本当に感謝の気持ちでいっぱいです! ありがとうございました!!

  • aptiva
  • ベストアンサー率36% (193/529)
回答No.17

#15のプログラムで登録されていないログインIDではメインフォームは開かないはずです。 Private Sub btnログイン_click() Dim ret As Integer Dim stDocName As String Dim stLinkCriteria As String stDocName = "メインメニュー" If IsNull(Me.txtユーザーID) Then ret = myMsgBox(2) ElseIf IsNull(Me.txtパスワード) Then ret = myMsgBox(3) Else ret = myMsgBox(4) End If LoginID = Me!txtユーザーID.Value LoginPassword = Me!txtパスワード.Value If DCount("ユーザー名", "ユーザーマスタ", "ログインID = '" & LoginID & "' AND パスワード = '" & LoginPassword & "'") = 0 Then ret = myMsgBox(4) MsgBox("ログインID、パスワードが違います!") DoCmd.Quit acQuitPrompt Exit Sub Else DoCmd.OpenForm "メインメニュー" DoCmd.Close acForm, "ログイン", acSaveNo End If Exit_btnログイン_Click: Exit Sub Err_btnログイン_Click: MsgBox Err.Description Resume Exit_btnログイン_Click End Sub 以上のプログラムで該当しないユーザーIDか、パスワードが間違っていた場合はAccessが終了するはずです。 試してみてください。

moshamosha
質問者

お礼

違うでお礼の点数を差し上げようとしましたができませんでした… なので今度また質問したときに上乗せさせていたただきます! 今日一日つき合わせてしまってごめんさない! そしてありがとうございました!

  • aptiva
  • ベストアンサー率36% (193/529)
回答No.16

If Me.txtユーザーID = "000001" And Me.txtパスワード = "000001" Then DoCmd.OpenForm stDocName, , , stLinkCriteria DoCmd.Close acForm, "ログイン" ElseIf Me.txtユーザーID = "000002" And Me.txtパスワード = "000002" Then DoCmd.OpenForm stDocName, , , stLinkCriteria DoCmd.Close acForm, "ログイン" ElseIf Me.txtユーザーID = "111111" And Me.txtパスワード = "111111" Then DoCmd.OpenForm stDocName, , , stLinkCriteria DoCmd.Close acForm, "ログイン" これだと、上記のユーザーID、パスワードに一致してしまうと、 LoginID = Me!txtユーザーID.Value LoginPassword = Me!txtパスワード.Value MsgBox DCount("ログインID", "ユーザーマスタ", "ログインID = '" & LoginID & "' AND パスワード = '" & LoginPassword & "'") If DCount("ユーザー名", "ユーザーマスタ", "ログインID = '" & LoginID & "' AND パスワード = '" & LoginPassword & "'") = 0 Then ret = myMsgBox(4) Exit Sub Else DoCmd.OpenForm "メインメニュー" DoCmd.Close acForm, "ログイン", acSaveNo End If この部分が実行されずにメインフォームが実行されてしまうプログラムとなってしまっています。 最初の部分はテストで入れられたものですか? 最初の部分を削除して、実行してください。 指定した式で・・、でのエラーはどこでおきていますか??

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.15

No.13のコードを見て初めてわかりました。 3種類のID&パスワード(00001など)の時に、メインフォームを開いてログインフォームを閉じるコードを書いているからです。 そのあとで、 LoginID = Me!txtユーザーID.Value とすると、すでに閉じている[ログイン]フォームの[txtユーザーID]を参照しようとすることになり、「指定した式で・・・」というエラーが出ます。 さらに変数LoginIDとLoginPasswordに代入する前に、メインフォームを開いて、そのLoadイベントが実行されるため、DLookup関数の戻り値がNullになるのです。(DLookup関数の引数として渡される時点での、LoginIDとLoginPasswordは""ですから、当然です。) せっかく、ユーザーマスタからユーザーIDとパスワードを参照しようとしているのに、何故、 If Me.txtユーザーID = "000001" And Me.txtパスワード = "000001" Then DoCmd.OpenForm stDocName, , , stLinkCriteria DoCmd.Close acForm, "ログイン" ElseIf Me.txtユーザーID = "000002" And Me.txtパスワード = "000002" Then DoCmd.OpenForm stDocName, , , stLinkCriteria DoCmd.Close acForm, "ログイン" ElseIf Me.txtユーザーID = "111111" And Me.txtパスワード = "111111" Then DoCmd.OpenForm stDocName, , , stLinkCriteria DoCmd.Close acForm, "ログイン" という風にこの3種類の場合のみ、メインフォームを開く(+ログインを閉じる)コードを書いているのですか? 2つのテキストボックスの入力チェックをするために、 If IsNull(Me.txtユーザーID) Then ret = myMsgBox(2) ElseIf IsNull(Me.txtパスワード) Then ret = myMsgBox(3) Else ret = myMsgBox(4) End If だけでいいのではないですか? とりあえず、以下のようにコードをかえて実行してみて下さい。うまく行くはずです。 Private Sub btnログイン_click() Dim ret As Integer Dim stDocName As String Dim stLinkCriteria As String stDocName = "メインメニュー" If IsNull(Me.txtユーザーID) Then ret = myMsgBox(2) ElseIf IsNull(Me.txtパスワード) Then ret = myMsgBox(3) Else ret = myMsgBox(4) End If LoginID = Me!txtユーザーID.Value LoginPassword = Me!txtパスワード.Value If DCount("ユーザー名", "ユーザーマスタ", "ログインID = '" & LoginID & "' AND パスワード = '" & LoginPassword & "'") = 0 Then ret = myMsgBox(4) Exit Sub Else DoCmd.OpenForm "メインメニュー" DoCmd.Close acForm, "ログイン", acSaveNo End If Exit_btnログイン_Click: Exit Sub Err_btnログイン_Click: MsgBox Err.Description Resume Exit_btnログイン_Click End Sub

moshamosha
質問者

お礼

やっとのおもいでできました!本当にありがとうございます!ものすごいご迷惑おかけしました!! 本当に感謝しております! ありがとうございました!

moshamosha
質問者

補足

この3種類の場合のみログインできるようにしたいのです! それ以外はエラーメッセージを出して再入力させたかったのです!プラス、テキストボックスの未入力もチェックしたいです!

  • aptiva
  • ベストアンサー率36% (193/529)
回答No.14

ブレークポイントの使い方は、コード画面を表示し、止めたいところの行にカーソルを置きF9キーで設定・解除です。 実行中にその箇所へ行くと、コード画面に変わりますので、F8キーで1ステップづつ実行され、F5キーで続けて実行されます。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.13

とりあえず、ログインフォームにある、2つのテキストボックス(txtユーザーIDとtxtパスワード)を一度削除して、新たに同じ名前で作成し直してみて下さい。 それで、「指定した式で・・・」のエラーが出なくなったら、No.10のことを確認して下さい。 ちなみにブレークポイントの使い方は以下の通り ・VBE画面で、メニューの[表示]→[ツールバー]→[デバッグ]を選択して、デバッグのツールバーを出す。 ・ブレークポイントを置きたい行をクリックしてカーソルを置く。 ・デバッグツールバーの[ブレークポイントの設定/解除]ボタン(手のひらマーク)をクリックすると、その行が別の色でハイライトされ、先頭に●がつく。 ・普通に、プログラムを実行する。 ・ブレークポイントの個所で実行が中断する。 ・デバッグツールバーの[ステップイン]をクリックするごとに、1行ずつ実行される。(F8を押しても同じ) ・デバッグツールバーの右向き三角をクリックすると、そこから一気に実行される。 ・別のところにブレークポイントがあれば、そこでまた中断する。

moshamosha
質問者

補足

いったん削除してあらたにテキストボックスを作成しましたがまたしても「指定した式で…」のエラーがでました! ちなみにbtnログインに書いてあるコードのすべてはこれです! Private Sub btnログイン_click() Dim ret As Integer Dim stDocName As String Dim stLinkCriteria As String stDocName = "メインメニュー" If Me.txtユーザーID = "000001" And Me.txtパスワード = "000001" Then DoCmd.OpenForm stDocName, , , stLinkCriteria DoCmd.Close acForm, "ログイン" ElseIf Me.txtユーザーID = "000002" And Me.txtパスワード = "000002" Then DoCmd.OpenForm stDocName, , , stLinkCriteria DoCmd.Close acForm, "ログイン" ElseIf Me.txtユーザーID = "111111" And Me.txtパスワード = "111111" Then DoCmd.OpenForm stDocName, , , stLinkCriteria DoCmd.Close acForm, "ログイン" ElseIf IsNull(Me.txtユーザーID) Then ret = myMsgBox(2) ElseIf IsNull(Me.txtパスワード) Then ret = myMsgBox(3) Else ret = myMsgBox(4) End If LoginID = Me!txtユーザーID.Value LoginPassword = Me!txtパスワード.Value MsgBox DCount("ログインID", "ユーザーマスタ", "ログインID = '" & LoginID & "' AND パスワード = '" & LoginPassword & "'") If DCount("ユーザー名", "ユーザーマスタ", "ログインID = '" & LoginID & "' AND パスワード = '" & LoginPassword & "'") = 0 Then ret = myMsgBox(4) Exit Sub Else DoCmd.OpenForm "メインメニュー" DoCmd.Close acForm, "ログイン", acSaveNo End If Exit_btnログイン_Click: Exit Sub Err_btnログイン_Click: MsgBox Err.Description Resume Exit_btnログイン_Click End Sub

  • aptiva
  • ベストアンサー率36% (193/529)
回答No.12

#10のエラーは直りましたか? 直っていたら、メインフォームのLoadイベントの Me!txtログイン者名1.Value = DLookup("ユーザー名", "ユーザーマスタ", "ログインID = '" & LoginID & "' AND パスワード = '" & LoginPassword & "'") を Me!txtログイン者名1.Value = LoginID & ":" & LoginPassword に変えてみてください。 ログイン者名1に、ログイン画面で入力した、ログインID、パスワードは表示されますか?(ログインID:パスワードとなるはずです。) 何も表示されないようであれば、メインフォームのLoadイベントが動いてないですし、「:」のみ表示されれば、ログインID、パスワードの受け渡しがうまくいっていません。 結果を教えてください。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.11

>を行った結果「指定した式で、とじているかまたは存在しないオブジェクトを参照しています」というエラーがでます。 No.3の補足で出なくなったと言っていましたが、また出るようになったのでしょうか。 具体的にどこで出ますか。 If文ですか?それとも、その前のテキストボックスの値を変数に代入するところですか? この警告が出る場合は、メインフォームは開かれないんですよね。 できれば、ログインフォームのbtnログインのClickイベントの先頭にブレークポイントを置いて、1行ずつ実行してエラー個所を確かめてみて下さい。 ちなみにNo.1の補足欄のような場所で上記エラーになる場合は、テキストボックスをいったん削除して、同じ名前で新しく作成してみて下さい。

moshamosha
質問者

補足

具体的なエラー場所は LoginID = Me!txtユーザーID.Value ここにチェックが入ってました… ブレークポイントの使い方をしりません…一行ずつ実行してエラー個所を確かめるやり方をしりません…

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.10

>これをすると「Nullの使い方が不正です」とでます この警告が出るのは、[ユーザーマスタ]テーブルの、該当するIDとパスワードのデータのログイン者名がNull(未入力)の場合があります。 [ユーザーマスタ]テーブルを確認して下さい。 現在試している、IDとパスワードのデータが2つ(以上)ありませんか。 そしてその内の1つはログイン者名があり、別の1つにはログイン者名がない、ということはありませんか? 試しに、ログインフォームの、 If DCount(・・・・・ の直前に、 MsgBox DCount("ログインID", "ユーザーマスタ", "ログインID = '" & LoginID & "' AND パスワード = '" & LoginPassword & "'") を入れて個数を確認して下さい。 2以上なら、[ユーザーマスタ]に同じIDとパスワードを持つデータが複数存在していることになります。 その場合は、ログイン者名のないデータを削除して下さい。

moshamosha
質問者

補足

この警告が出るのは、[ユーザーマスタ]テーブルの、該当するIDとパスワード・・・ これに関してはそれぞれひとつしかありあません。特に疑問視されておられるところに問題はありません! If Dcount… を行った結果「指定した式で、とじているかまたは存在しないオブジェクトを参照しています」というエラーがでます。 LoginID = Me!txtユーザーID.Value LoginPassword = Me!txtパスワード.Value MsgBox DCount("ログインID", "ユーザーマスタ", "ログインID = '" & LoginID & "' AND パスワード = '" & LoginPassword & "'") If DCount("ユーザー名", "ユーザーマスタ", "ログインID = '" & LoginID & "' AND パスワード = '" & LoginPassword & "'") = 0 Then ret = myMsgBox(4) Exit Sub Else DoCmd.OpenForm "メインメニュー" DoCmd.Close acForm, "ログイン", acSaveNo End If

関連するQ&A

  • わからないので再び!Access2000です

    ログイン画面で、ID、パスワードを入力後btnログインクリックするとメインフォームを開き、メインフォームにあるtxtログイン者名というテキストボックスにログイン者名をだしたいのですがどうすればいいのですか? テーブル名:ユーザーマスタ ユーザーマスタのフィールド名:ログインID、ユーザー名、パスワード フォーム名:ログイン、メインメニュー ログイン画面:txtユーザーID、txtパスワード、btnログイン メインメニュー:txtログイン者名 ものすごい初心者です!よろしくおねがいします!!

  • Access2010 テキストの連結

    よろしくお願いします。 Access2010を使用しております。 非連結のフォームに入力した情報を、 保存ボタンで、テーブルに追加しております。 そこで、サブフォームにある複数のテキストボックスをボックス毎に改行して、 一つのフィールドに入れたいと思っております。 一つ一つのテキストボックスは別テーブルを作っておりますが、メインにしているテーブルには、一つのフィールドに入れたいのです。 txt箱1、txt箱2、…txt箱20の空白ではないテキストボックスを改行して、一つのフィールドに追加したいです。 テキストボックスが、ランダムに記入されていたり、空白が間にあると、 うまく一つのフィールドに入れることができません。 改行が何個も入った箇所ができてしまいます。 間に空白があっても、改行を綺麗に入れて、 一つのフィールドに入力させるには、どうしたらよろしいでしょうか。 お世話になりますが、よろしくお願いします。

  • AccessVBAで質問があります。

    AccessVBAで質問があります。 VBAと選択させていただきましたが、正確にはAccess VBAで質問があります。 フォームがあり、そこにはテキストボックスが2つ、コマンドボタンが一つあります テキストボックスはそれぞれ、社員名、パスワードを入力します。 社員名とパスワードの元データはT社員にあり、その二つが両方とも合っていた場合、コマンドボタンを押したときに、メインメニューに移動できるという設定にしました。(ここまではできています) そして、質問の部分のメインメニューには、同様に二つのテキストボックスがあります。 ひとつは上記同様で「社員名」を表示というテキストボックスで、ログインメニューで入力されたのをそのまま持ってきているのですが、問題はもう一つのテキストボックスで、こちらには「T社員」にある、「社員ID」を表示させたいと思っています。 ここで質問なのですが、ログインメニューで入力していない情報(社員ID)を持ってきた情報(社員名)から表示させる方法はあるのでしょうか? また、上記以外での方法はあるのでしょうか? 回答を頂けたら大変ありがたく思います

  • Accessのフォームについて教えて下さい

    Access 2010のフォームについてお教え下さい。 テーブルにはテーブル名T1、フィールド「ID」、「Price」というテキストボックス。2フィールドがあります。 テーブルの各データは、 ID,Price 001,100 002,200 003,300 フォームにはにフォーム名F1、「cmb」というコンボボックスと、「price」というテキストボックスが配置されています。 「cmb」のデータは値集合ソースで、「SELECT T1.ID FROM T1;」と指定しています。 「cmb」で選択したデータのプライスを「Price」テキストボックスに表示したいと思います。 例えば、「001」を選択したら、「100」と表示されるようにしたいと思います。 色々調べているのですが、どうやってやるのかわかりません。どのように実現したらよろしいでしょうか? よろしくお願いいたします。

  • 画面遷移について(SQL,SELECT)

    概要です。 VisualBasic2010にてフォーム1(ログイン画面)→フォーム2(メニュー画面) を作成しようとしております。 現在の構成です。 ・ログイン画面 ・メニュー画面 ・ユーザー名とパスワードが入力されたテーブル(SQLサーバーで作成(ローカルデータベース) 質問です。 ログイン画面にユーザー名とパスワードのテキストボックスを設けているのですが、 ログインするボタンを押下したときに、ログイン画面に入力したユーザー名と パスワードのテキストボックスでテーブルを検索して、ユーザー名とパスワードが一致 したらメニュー画面に遷移し、一致しなかったらエラーメッセージボックスを出したいの ですが、どういったコードを書けば良いかわかりません。 また試行錯誤して、ボタンクリックイベントでSELECT文を書いて、取得した レコードの一部を抜き出してユーザー名とパスワードを比較させようとしても コードがわかりませんでした。 わかりにくい文かもしれませんが、ご回答よろしくお願いします。

  • ACCESS

    どうか皆さんのお力添えを下さい。 ACCESS2010を利用して、以下の様な注文フォームaccdbを完成させていと考えています。現在、以下のところまで作業が進んでいます。 (1)テーブル (1) 注文履歴テーブル 注文ID・・・オートナンバー型 商品No・・・テキスト型 数量・・・数値型 (2) 商品テーブル 商品No・・・テキスト型 商品名・・・テキスト型 単価・・・通貨型 (3) 顧客テーブル 顧客ID・・・数値型 顧客名・・・テキスト型 パスワード・・・テキスト型 (2)フォーム (1)ログインフォーム 顧客ID入力用テキストボックス パスワード入力用テキストボックス ログインボタン・・・VBAを使って顧客テーブルに入っている顧客ID、パスワードが一致すれば注文フォームが開くところまではできました。 (2)注文フォーム(商品画像一覧があり、それをクリックすると商品No毎に個別に作成した注文フォームにジャンプします) ・コントロールボックスで数量を選ぶ ・注文ボタンを押すと注文履歴テーブルに商品ID、商品名、商品数が反映されます。 ここからが質問内容になります。 まず、はじめにログインフォームで入力後、照合OKになった顧客ID、パスワードを その後開いた注文フォームでの注文作業が完了、または中断するまでの間、 注文履歴に自動的に入力させ続けることはできますでしょうか?複数商品の注文が あった際は注文履歴テーブルにおいて複数レコードが連続して同じ顧客IDになるような 方法はあるでしょうか? ネット通販のようなものをイメージしております。 その他にもっと効率の良いやりかたなどあればご教授下さい。 どうぞよろしくお願いします。

  • Access2000の重複チェック

    現在あるデータとあるフィールド内において値が重複してある場合こちら側からエラーを出したいのですがどうすればいいですか? テーブル名:テナントマスタ フォーム:txtビル区分、txtテナントコード、…etc テナントマスタ ビル区分 テナントコード ----------------------- 01 100 01 101 02 102 02 103 ここに新たにフォーム上でビル区分、テナントコードを入力し、この値がそれぞれ01、101だったときbtn登録をクリックしたときこちらからエラーをだしたいのです! どうかよろしくお願いします!!

  • Accessでシステムを作ってます

    AccessとVBAでシステムを作成してます。初心者です。 検索結果を非連結のテキストボックスに表示させる方法を教えてください。 条件(1) フォームのレコードはどのテーブルとも紐づいていない 条件(2) 2つのテーブルから1つの検索ボタンで検索できるようにしたい テーブルA;案件マスタ テーブルB:リソースマスタ ・検索テキストボックス(1つ) ・検索ボタン(1つ) 条件(3) 案件ID、リソースIDはともに数値型です。 検索結果表示テキストボックス(非連結) ・案件IDテキストボックス:案件マスタより検索した案件IDを表示する ・リソースIDテキストボックス:リソースマスタより検索したリソースIDを表示する 下記のように考えていますが ・非連結のテキストボックスに検索結果を表示させる ・1つの検索ボタンで2つのテーブルから検索ができるようにする 方法がわかりません。 どのようなコードを追記したらいいのか教えていただけないでしょうか。 よろしくお願いいたします。 Private Sub btn検索ID_Click() Dim strFilter As String Me![案件マスタ].SetFocus If Me!案件IDテキスト = Me![案件マスタ]![案件ID] Then strFilter = " AND 案件ID= " & Me!案件IDテキスト End If If Me!テキストリソースID = Me![リソースマスタ]![リソースID] Then strFilter = strFilter & " AND リソースID= " & Me!リソースIDテキスト End If 'Forms!ID検索.Filter = Mid(strFilter, 6) Forms!ID検索.FilterOn = True Me.案件IDテキストボックス= Null Me.リソースIDテキストボックス = Null

  • 【Access2000】VB記述でつまづいています。

     非連結のテキストボックスを2つ作成し、そのテキストボックスに、それぞれIDとパスワードを入力することにより「TOP」という名前のフォームを開くログイン用のフォームを作成しています。 ・このログイン用のフォーム名は「ログイン」。 ・フォームの中にあるID入力用のテキストボックス名は“txtNamePass” ・同じくパスワード入力用のテキストボックス名は“txtCountPass” ・IDとパスワードを入力した後に開くフォームは「TOP]。  この「ログイン」という名前のフォームにある“txtCountPass”の「更新後処理」の所に以下のコードを記述したところ、IDとパスワードを入力後、「TOP」のフォームは開くのですが、「ログイン」のフォームが閉じないままになってしまいます。  どのように書き直したらいいか御存知の方がいらっしゃったら御教示下さい。  Private Sub txtCountPass_AfterUpdate() Dim TextBoxA As TextBox Dim TextBoxB As TextBox Set TextBoxA = Me.txtNamePass ' --- A Set TextBoxB = Me.txtCountPass Const NamePass = "@@@@" ' --- B Const CountPass = "*****" If TextBoxA = NamePass Then ' --- C If TextBoxB = CountPass Then ' --- D DoCmd.OpenForm "TOP" ' --- E DoCmd.Close , "ログイン" Else MsgBox "パスワードが異なります。", vbOKOnly + vbCritical End If Else MsgBox "IDが異なります。", vbOKOnly + vbCritical End If End Sub

  • accessで年度の表示をさせたい

    いつもお世話になります。過去ログ参照し、いろいろやってみましたが、どうしても解決できないのでよろしくお願いします。 商品の売上の管理をするDBをつくろうとしています。 テーブルに会社マスタとして、会社名と会社IDが、商品マスタには商品名と商品IDが、伝票には伝票番号、会社番号、商品番号、日付、年度のフィールドが作ってあります。 伝票を入力するためのフォームとクエリも作成しています。 伝票を入力するフォームに年度というテキストボックスを作成し、コントロールソースに=IIf(Month([txt])<4,Format(DateAdd("yyyy",-1,[日付のテキストボックス名]),"gggee" & "年度"),Format([日付のテキストボックス名],"gggee" & "年度")) を入力し、日付が決定されると年度を表示されるようにしたかったわけです。 本来、日付のフィールドはデータ型に、「日付/時刻型」を選んでおり、日付カレンダーの表示により、目的の日にちを選択することでyyyy/mm/ddの表示をさせているものです。定型入力の欄は空白になっています。 ところが、フォームをデザインビューで開くと年度の欄に「#Name?」 の表示が出てしまいます。基本的なことなのでしょうが、わかりやすく説明していただけないでしょうか? あと、~月度のような考え方はどのようにしたらよいでしょう?