アクセス 抽出条件が一致したらフォームを開く

このQ&Aのポイント
  • フォームを開くときのイベントに、数値が一致した時に検索ボタンを使用可能にするコードを書きましたが、うまくいきませんでした。
  • テキストボックスとコンボボックスの値が一致した場合、検索ボタンを使用可能にするコードを書きましたが、正しく動作しません。
  • フォームを開くときに、数値の一致を確認して検索ボタンの使用可否を設定するコードを書きましたが、うまくいきませんでした。
回答を見る
  • ベストアンサー

アクセス 抽出条件が一致したらフォームを開く

教えてください! フォームを「開くとき」イベントに、以下のコードを書きました。 Private Sub Form_Open(Cancel As Integer) Me!コマンド24.Enabled = False End Sub そのフォームの中には、以下のふたつ(a,b)と、コマントボタン「コマンド24」があります。 a:テキストボックス「当月の名前」『コントロールソースに、=DatePart("m",Date())を設定』 b:コンボボックス「月」『リスト値で、4,5,6,7,8,9を設定』月 そして、aとbの数値が一致した時に、検索ボタンを使用可能にする というコードを書きました。(というか、書いたつもりです) Private Sub 月_AfterUpdate() If (Me!当月の名前) = (Me!月) = True Then Me!24.Enabled = False Else Me!コマンド24.Enabled = True End If End Sub ですが、数値が一致しなくても、検索ボタンどうも、うまくいきませんでした。 このコードのどこが間違っているのでしょうか?

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

  • ベストアンサー
noname#21585
noname#21585
回答No.2

If (Me!当月の名前) = (Me!月) = True Then Me!24.Enabled = False Else Me!コマンド24.Enabled = True End If を If (CInt(当月の名前) = CInt(月)) = True Then   コマンド24.Enabled = True Else   コマンド24.Enabled = False End If でいかがでしょうか。真偽が逆でしたらそのようにしてください。 動かなかったらすいません。

mipomipo
質問者

お礼

すごいっ!!すごいです!!できました(涙) ありがとうございました!!

その他の回答 (3)

noname#6356
noname#6356
回答No.4

#3です。 Me!24.Enabled = True は Me!コマンド24.Enabled = True の間違いでした、訂正いたします。

mipomipo
質問者

お礼

お忙しいところ、ご回答ありがとうございます! ご指摘いただいた箇所を訂正してやってみましたが、うまくいきませんでした^_^; #2の方の回答でやってみようと思います。 ありがとうございました!

noname#6356
noname#6356
回答No.3

Private Sub 月_AfterUpdate() If (Me!当月の名前) = (Me!月) Then Me!24.Enabled = True Else Me!コマンド24.Enabled = False End If End Sub このように書き直して実行してみてください。

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

その「aとbの数値が一致した時に、検索ボタンを使用可能」にする仕様が意味不明なのですが、まぁそれは置いといて。 「検索ボタンどうも、うまくいきませんでした」というのはどういう意味なのでしょう。エラーが出るのか、数値が一致したらボタンはFalse、一致しなかったらTrueになっているということをさしているのでしょうか。 もし後者のことならコードを逆に書いているせいかと。

mipomipo
質問者

補足

わかりずらくてすみません。 まず、「月検索」フォームの「開く時」イベントに、以下のコードを書き、フォーム中にあるコマンドボタン「コマンド24」を使用不可の状態にしておきます。  Private Sub Form_Open(Cancel As Integer)  Me!コマンド24.Enabled = False  End Sub 尚、このフォームには、コマンドボタン「コマンド24」以外に、テキストボックス「当月の名前」(『コントロールソースに、=DatePart("m",Date())を設定』)と、コンボボックス「月」(『リスト値で、4,5,6,7,8,9を設定』)があります。 そして、「月」の「更新後処理」イベントに、以下のコードを書きました。 Private Sub 月_AfterUpdate() If (Me!当月の名前) = (Me!月) = True Then Me!24.Enabled = False Else Me!コマンド24.Enabled = True End If End Sub 「当月の名前」と「月」の数値が一致した時に、コマンド24が使用可能になる、という処理をしたいのです。 「当月の名前」が5で、「月」が5なら、コマンド24をクリックすることができるあ(=使用可能)、「当月の名前」が5で「月」が6なら、コマンド24は、ボタンが死んだ状態で、クリックできない。ということです。 どうも、うまくいかない・・・というのは、「当月の名前」に5を入れ、「月」に6を入れても、コマンド24がクリックできてしまいます。 本当は、死んだ状態でなければいけないのに・・・ コードの知識が乏しいので、間違ったコード式かもしれません。 また、コードを逆さに書いているとは?? ここに書いたコードがすべてです。 逆さなのでしょうか? お忙しいところ、すみません。 宜しくお願い致します。

関連するQ&A

  • Access:フォーム起動時に非有効にするには(Enabled)

    フォームに『項目A』(YES/NO型)があり、FALSEの時『理由』(テキスト型)が非有効になるよう、以下のように設定しています。 Private Sub ダメダメ_Click() If Nz(Me!ダメダメ, True) = True Then Me!理由.Enabled = True Exit Sub Else Me!理由.Enabled = Me!ダメダメ = True End If End Sub しかし、フォーム起動時は非有効になっていないし、以前入力しているチェックが入っていないデータの『理由』部分も非有効になっていません。 起動時にも、以前入力したデータにも反映させるにはどのようにすればよいのでしょうか?

  • フォーム上での複数条件での抽出ができません

    工事の発注した年度と月をコンボボックスでそれぞれ入力した値で 抽出したいと思いましたが、なかなかうまくいきません。 Private Sub 抽出ボタン_Click() Me.FilterOn = False '抽出ボタンをクリックしたらcbo年度コードの値でフィルターをかける Me.Filter = "年度 = " & Me![cbo年度] And "発注予定 = " & Me![cbo月] 'フィルターを実行します。 Me.FilterOn = True End Sub 別のプロシージャで年と月を別々に抽出することはできたのですが、 「○年のさらに○月の工事」と絞り込むことができずに困っています。 このプロシージャを実行すると、以下のエラー分が表示されます。 ========================= 実行時エラー '13': 型が一致しません。

  • Accessのフォーム その2

    すいません、以前にも同じ質問をしたのですが、私の質問の仕方が悪くてうまくいきませんでした。 回答してくださった方、ありがとうございました! もう一度、詳しく質問しなおします。 顧客データを登録しているのですが、テーブルを元に登録フォームを作成しました。 商品がたくさんあって、4つのコードに分かれています。フォームの中に[A][B][C][D]と4つのコンボボックスを作成し、絞込み検索ができるようにはしました。 しかし、選んだデータの[A]しかテーブルに表示されません。例えば[A]のコンボボックスの中から[1010]を選択、[B]のコンボボックスから選択しようとしても空っぽです。 テーブルを見ると、[A]で選んだ[1010]だけが表示されています。 非連結のときはうまく出てたんですが・・。 もしかして連結列が間違ってるのでしょうか?? 元になるテーブルは Aコード A  Bコード B Aコード Cコード C Bコード Dコード D Cコード この2列目を表示したいのです。(2列目が[1010]など表示したいデータ) 列数はそれぞれ「2」で連結列は「2」です。 更新後処理は以下の通りです。 Private Sub コンボ0_AfterUpdate() Me!コンボ2.Requery End Sub Private Sub コンボ2_AfterUpdate() Me!コンボ4.Requery End Sub Private Sub コンボ4_AfterUpdate() Me!コンボ6.Requery End Sub ぜひよろしくお願いします。

  • アクセスで期間抽出

    お尋ねします アクセスで納品書のデータベースがあります   納品書データFormには 伝票番号、日付、客先名、数量のフィールドのフォームで テキストボックス1:始めの日 テキストボックス2:終了日 コマンドボタン1:期間で抽出 が配置しています テキストボックス1,2に日付、記入後、コマンドボタン1をクリックして 所要期間でフィルターで抽出するのですがうまく行きません コマンドボタン1クリック時のコード Private Sub コマンド1_Click() Me.Filter = "日付= 'Between" & Me![テキスト1] & "And" & Me![テキスト2] & "'" Me.FilterOn = True End Sub のコードで抽出してくれません、不都合をご指摘下さい なお 指定日での抽出は以下で出来ました。 Private Sub コマンド1_Click()  Me.Filter = "日付= '" & Me![テキスト1] & "'" Me.FilterOn = True End Sub エクセルのモジュールは少しかじったのですがアクセスは 始めたばかりでなかなか要領を得ません 宜しくお教え下さい。

  • 実行時エラー '3464': 抽出条件でデータ型が

    フォームにフィルタをかけようとすると 実行時エラー '3464': 抽出条件でデータ型が一致しません。 になります。 Private Sub Form_Load() Me.Form.Filter = "フィールド1 =200" Me.Form.FilterOn = True End Sub コードはこれです。 フィールド1はテキスト型です。 何がダメなのでしょう?

  • Access 2重3重のポップアップフォームの場合

    Accessです。 フォームを3つ作りました。 フォーム1=「A] フォーム1=「B]>ポップアップ「はい」 作業ウインド固定「はい」 フォーム1=「C]>ポップアップ「はい」 作業ウインド固定「はい」 「A」が開くとき Private Sub Form_Open(Cancel As Integer) ____DoCmd.OpenForm "フォーム2", , , , , acHidden ____DoCmd.OpenForm "フォーム3", , , , , acHidden End Sub として 「A」にはボタンがあってクリックすると「B」が Visible=True になります。 Private Sub コマンド1_Click() ____Forms!フォーム2.Visible = True ____Forms!フォーム2.SetFocus End Sub さらに「B」にもボタンがあってクリックすると「C」が Visible=True になります。 Private Sub コマンド1_Click() ____Forms!フォーム3.Visible = True ____Forms!フォーム3.SetFocus End Sub 「C」が現れた後、マウスイベントがきかなくなります。 というより、閉じることもできなく、アクセス本体をCLT+ALT+DELで強制終了させなくてはいけなくなります。 対処方法を教えて下さい。

  • Accessにて、コントロールの編集可能、使用可能の設定

    Access2002を使用しています。 表形式で作成したフォームで、 Aというチェックボックスに、チェックが入っている場合  Bのコントロールは入力可能、  Cのコントロールは入力不可 チェックが入っていない場合、  Bのコントロールは入力不可、  Cのコントロールは入力可能 というふうにしたいのですが、 Private Sub A_AfterUpdate()   If A = -1 Then     B.Locked = False     B.Enabled = True     C.Locked = False     C.Enabled = False   Else     B.Locked = False     B.Enabled = False     C.Locked = False     C.Enabled = True   End If End Sub 上記のように設定すると、すべてのレコードに対しての設定になってしまいます。 1件ずつのレコードに対して、条件を設定するにはどのようにすればよいでしょうか? よろしくお願いいたします。

  • Access2003のVBAで半角カナを全角カナにしたいです

    Access2003を使っています。過去の質問集を検索したのですが分からなかったので教えてください。 次のコードで、「ふりがな」(半角カナ)のところを「ふりがな」(全角カナ)に変更しても、勝手に「ふりがな」(半角カナ)になってしまうのですが、なんとかならないでしょうか? Private Sub Form_Current() Me!整理番号.Enabled = False Me!氏名.Enabled = False Me!ふりがな(注:半角カナになってます).Enabled = True Me!生年月日.Enabled = False End Sub 以前Access2000を使っていた時は対象のフォームにて、テキストボックスに「ふりがな」(半角カナ)と名前をつけていたので問題はなかったのですが、Access2003に移行した際に上記コードの半角カナの部分でエラーが出るようになったので、全角カナに名前を変更した為に.Enabled = Falseが機能しなくなってしまいました。ご助言をお願いします。

  • エクセルVBAでユーザーフォーム

    エクセルVBAでユーザーフォーム上にオプションボタンが2つ、コンボボックスが6つあります。 OptionButton1をクリックした場合のComboboxの動きの制御について以下のように書いてみました。 これでも期待通りCombobox1~3は動き4~6は動かなくなります。 ただ、もっと別の簡単な書き方があるのではないかと思い質問しました。 宜しくお願いします。 Private Sub OptionButton1_Click() ComboBox1.Enabled = True ComboBox1.ListIndex = 0 ComboBox2.Enabled = True ComboBox2.ListIndex = 0 ComboBox3.Enabled = True ComboBox3.ListIndex = 0 ComboBox4.Enabled = False ComboBox4.ListIndex = 0 ComboBox5.Enabled = False ComboBox5.ListIndex = 0 ComboBox6.Enabled = False ComboBox6.ListIndex = 0 End Sub

  • Accessでの抽出で完全一致。

    あいまい抽出で下記のような記述を、 完全一致に変更する場合どのように書き換えればいいでしょうか? 以前覚えたのですが、本を手放してしまい忘れてしまいました。 ご指導お願いします。 Private Sub 技術コードで抽出_Click() Dim ipt As String ipt = [技術コード] DoCmd.ApplyFilter , "[担当者コード] Like '*" & ipt & "*'" End Sub