Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


174 / 2272 ツリー ←次へ | 前へ→

【12685】同行のデータに優先順位をつけてのソート Hiro 15/1/27(火) 9:22 質問[未読]
【12686】Re:同行のデータに優先順位をつけてのソート 独覚 15/1/27(火) 10:12 発言[未読]
【12687】Re:同行のデータに優先順位をつけてのソート 独覚 15/1/27(火) 10:35 発言[未読]
【12688】Re:同行のデータに優先順位をつけてのソート Hiro 15/1/27(火) 13:36 回答[未読]

【12685】同行のデータに優先順位をつけてのソート
質問  Hiro  - 15/1/27(火) 9:22 -

引用なし
パスワード
   メニューフォームのサブリストに登録情報の一覧を表示しています。
その一覧で表示しているデータを優先順位をつけて並び変えをしたいのですがうまくいかずに困っています。
型式コード(Me.cmbKatashiki.Value)のデータを先頭に表示し、
他の型式コードはその下位に並べるようにしたいのです。
以下のように記述をしてみました。

  With Forms!メニュー!subList.Form
    .OrderBy = " Switch(型式コード = " & Me.cmbKatashiki.Value & ",1,True,9999)"
    .OrderByOn = True
    .Filter = sFilter
    .FilterOn = True
  End With

実行を行ってみるとポップアップウィンドウでパラメータの入力画面が表示されます。
どのようにすればよろしいでしょうか?

よろしくお願いします。

【12686】Re:同行のデータに優先順位をつけてのソ...
発言  独覚  - 15/1/27(火) 10:12 -

引用なし
パスワード
   ▼Hiro さん:
.OrderByプロパティはそのフォームのレコードソースのファイルまたはクエリのフィールド名
だったはずだけど。

お書きのVBAだと"1"または"9999"という名前のフィールドで並べ替えようとするよ。

サブリストに表示させるのをクエリにしてクエリのフィールドとして並べ替えの基準を
入れてはどうだろう?

あと、こういう場合はパラメータの入力ダイアログでなんというパラメータの値を求めているかも
書いたほうがいいよ。

【12687】Re:同行のデータに優先順位をつけてのソ...
発言  独覚  - 15/1/27(火) 10:35 -

引用なし
パスワード
   訂正です。

>"1"または"9999"という名前のフィールドで並べ替えようとするよ。
こうなるのは

 .OrderBy = Switch(型式コード = & Me.cmbKatashiki.Value & ,1,True,9999)
の場合ですね。

今回の場合は
Switch(型式コード = cmbKatashikiの値 ,1,True,9999)
というフィールドの値を聞いてくるのかな?

【12688】Re:同行のデータに優先順位をつけてのソ...
回答  Hiro  - 15/1/27(火) 13:36 -

引用なし
パスワード
   ▼独覚 さん:

お返事ありがとうございます。
補足します。
Access初心者のため、まだ言葉足らずの部分があるかもしれませんが
よろしくお願いします。


>▼Hiro さん:
>.OrderByプロパティはそのフォームのレコードソースのファイルまたはクエリのフィールド名
>だったはずだけど。
>
>お書きのVBAだと"1"または"9999"という名前のフィールドで並べ替えようとするよ。
>
>サブリストに表示させるのをクエリにしてクエリのフィールドとして並べ替えの基準を
>入れてはどうだろう?

サブリストのレコードソースに登録詳細情報というクエリをセットしています。
そのクエリのフィールドに型式コードがありますので、cmbKatashikiの値と同じコードを1とし、
その他を9999と昇順でソートすればcmbKatashikiの値の順位が先頭となり、
その他が以降に表示されると考えました。

お話を聞いているとswitch文の使い方が間違えているようなので、
クエリのフィールドに並べ替えの基準を入れるようにしてみました。

ORDER BY Switch([登録情報].[型式コード]=[Forms].[メニュー].[cmbKatashiki].[Value],1,True,99);

を登録詳細情報クエリに追記したのですが表示される一覧は優先順位でソートされていませんでした。

[Forms].[メニュー].[cmbKatashiki].[Value]を固定値に変更してみるとナビゲーションウィンドウから
クエリを実行した場合優先順位でソートされ表示されるのは確認できました。


>
>あと、こういう場合はパラメータの入力ダイアログでなんというパラメータの値を求めているかも
>書いたほうがいいよ。

>訂正です。
>
>>"1"または"9999"という名前のフィールドで並べ替えようとするよ。
>こうなるのは
>
> .OrderBy = Switch(型式コード = & Me.cmbKatashiki.Value & ,1,True,9999)
>の場合ですね。
>
>今回の場合は
>Switch(型式コード = cmbKatashikiの値 ,1,True,9999)
>というフィールドの値を聞いてくるのかな?

パラメータの入力ダイアログはSwitch(型式コード = cmbKatashikiの値 ,1,True,9999)
と表示されていましたので、仰る通りフィールドの値を聞いてきていると思います。

174 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078188
(SS)C-BOARD v3.8 is Free