Page 661 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼条件式の設定が・・ mini 04/6/8(火) 14:57 ┗Re:条件式の設定が・・ クロ 04/6/8(火) 17:24 ┗Re:条件式の設定が・・ mini 04/6/9(水) 0:26 ┗Re:条件式の設定が・・ mini 04/6/9(水) 10:36 ┗Re:条件式の設定が・・ クロ 04/6/9(水) 10:51 ┗Re:条件式の設定が・・ mini 04/6/9(水) 17:16 ─────────────────────────────────────── ■題名 : 条件式の設定が・・ ■名前 : mini <mini_hm0220@yahoo.co.jp> ■日付 : 04/6/8(火) 14:57 -------------------------------------------------------------------------
みなさん、こんにちは。自分なりに考えてみたんですが、 解決策が見つからないのでアドバイス下さい! ACCESS2000を使用してまして、売上を入力する フォームを作成中です。 フォームの入力するところは、 メインフォーム 伝票日付 得意先コード 注文番号 直送先コード サブフォーム 品番 数量 の6項目です。 得意先コードは得意先マスタ(テーブル)の得意先コードを コンボボックスで選択するようになってます。 直送先コードも直送先マスタ(テーブル)の直送先コードを コンボボックスで選択するようになってます。 それ以外に店舗マスタA(テーブル)と店舗マスタB(テーブル) がありまして、内容は 店舗マスタA 直送先コード(←直送先マスタテーブルの直送先コードとイコール) 店舗コード 店舗名 企業名 企業コード 店舗マスタB 直送先コード(←直送先マスタテーブルの直送先コードとイコール) 店舗コード 店舗名 担当者名 です。この店舗マスタA・Bはレポートを作成するとき に必要な情報で、 店舗マスタAは得意先コードが23000から23999 店舗マスタBは得意先コードが38000から38999 それ以外の得意先コードの時は必要なし となります。 で、悩んでいる所は売上フォームの直送先コードを入力 した時、 得意先コードが23000から23999で店舗マスタA に直送先コードとイコールのコードが無いときは店舗マスタA 入力フォームを立ち上げる。 得意先コードが38000から38999で店舗マスタB に直送先コードとイコールのコードが無いときは店舗マスタB 入力フォームをたちあげる。 と言う条件を直送先コードの更新後処理で設定したいんです。 私が必死で考えた設定は以下の通りです。でもこの設定だと、 店舗マスタA・Bそれぞれに直送先コードとイコールのコードが あるにも関らず、毎回入力フォームが立ち上がります。 何故でしょうか?? Select Case Forms![売上フォーム]![得意先コード] Case 23000 To 23999 If DCount("直送先コード", "店舗マスタA","直送先コード=" & Me![直送先コード]) = 0 Then rdt = MsgBox("店舗マスタAが登録されていません!登録しますか?", 4, "店舗マスタA") If rdt = vbYes Then DoCmd.OpenForm "店舗マスタA入力フォーム" End If End If End Select Select Case Forms![売上フォーム]![得意先コード] Case 38000 To 38999 if DCount("直送先コード", "店舗マスタB", "直送先コード=" & Me![直送先コード]) = 0 then rdt = MsgBox("店舗マスタBが登録されていません!登録しますか?", 4, "店舗マスタB") If rdt = vbYes Then DoCmd.OpenForm "店舗マスタB入力フォーム" End If End Select End Select 説明がヘタで申し訳ないです。何かいい方法がありましたら教えて 下さい。まだ何か説明が必要ならすぐにお知らせします。 宜しくお願いします。 |
こんにちはクロです。 ↓Forms![売上フォーム]![得意先コード]はMe!得意先コードでいいと思います。 >Select Case Me!得意先コード > Case 23000 To 23999 ***以下のようでもカウントします**** > If DCount("*", "店舗マスタA","直送先コード=" & > Me![直送先コード]) = 0 Then > > rdt = MsgBox("店舗マスタAが登録されていません!登録しますか?", > 4, "店舗マスタA") > If rdt = vbYes Then > DoCmd.OpenForm "店舗マスタA入力フォーム" > End If > End If ***ここから**** > End Select > > Select Case Forms![売上フォーム]![得意先コード] ***ここまでは削除**** > Case 38000 To 38999 ***以下のようでもカウントします**** > If DCount("*", "店舗マスタB", "直送先コード=" & > Me![直送先コード]) = 0 then > rdt = MsgBox("店舗マスタBが登録されていません!登録しますか?", > 4, "店舗マスタB") > If rdt = vbYes Then > DoCmd.OpenForm "店舗マスタB入力フォーム" > End If End if ***↑に End If を追加し、ここから**** > End Select ***ここまでは削除**** > End Select この状態で仰っているような動作はします。 但し、「得意先コード」が指定以外のものが入力されないように 「得意先コード」のプロパティの「入力チェック」を「はい」にした方が いいかと... 後は「直送先コード」のデータ型が気になります。 |
こんばんは、クロ さん。 早速のアドバイスありがとうございます。 出先なもので、とりあえず教えて戴いた方法で やってみます。 それでもダメならまた質問させてもらいます・・・。 取り急ぎ、お礼まで。 本当にありがとうございました! miniより |
クロさん、こんにちは。 おっしゃる通りに変えてみたんですが、 まだ、登録済みの直送先まで”入力しますか?” メッセージが出てきます。(T_T) 直送先コードのデータ型が気になるとおっしゃって いましたが、何か関係あるでしょうか? ちなみにテキスト型なんです。 |
>直送先コードのデータ型が気になるとおっしゃって >いましたが、何か関係あるでしょうか? >ちなみにテキスト型なんです。 大いにあります。 **省略** >DCount("*", "店舗マスタA","直送先コード=" & Me![直送先コード]) = 0 Then **省略** >DCount("*", "店舗マスタB","直送先コード=" & Me![直送先コード]) = 0 Then **省略** の「直送先コード=" & Me![直送先コード]」部分(2箇所)を 直送先コード='" & Me![直送先コード] & "'" としてみて下さい。 テキスト型のフィールドを抽出(この場合はカウント)する場合は 「'」で括ってください。 |
こんにちは、クロさん。 おっしゃる通りやってみましたら、問題は解消されました! データ型って重要だったんですね・・。(^_^;) 勉強になりました! 本当に有難う御座いました。感謝です!! miniより |