• 締切済み

Access2000 レポートの並び替えについて

こんにちは。Access2000について質問です。 フォーム上で指定された項目で並び替えをし、それをそのままレポートの並びにしたいのですが、それがどうも上手くいきません。指定する項目はコンボボックスで複数有り、昇順・降順も指定できるようになっています。レポートを開くときにそのフォームで指定されている項目を読み、コードで並び替えを指定しているのですが、どうやら元のテーブルのキー項目の昇順で表示されているようなのです。「並び替え/グループ化」(青いカッコのもの)は、並びが固定されてしまうので使用したくないのです(実際いつも使っていません)。 同じような現象になったことがあるという方、または解決方法をご存知の方は、回答よろしくお願いします。

  • satie
  • お礼率90% (246/273)

みんなの回答

  • ico-o-
  • ベストアンサー率0% (0/0)
回答No.5

ごめんなさい。(補足します) 回 答 No.4 のico-o-です。 レポートでは特にテーブル名を指定しないでもできるみたいです。 項目名だけ、組み立ててやってみてください。 ※sTableを使用している部分が不要 私はいつも、テーブル名と組み立ててやってましたが ちょっとテスト的にはずしてみたら、できてしまったので 補足させていただきました。 失礼しました。m(__)m

  • ico-o-
  • ベストアンサー率0% (0/0)
回答No.4

レポートのOpen時に、並べ替え(レポートのプロパティ)を設定すれば できると思いますが。。。(実際、私はこれでやってます) 参考までに。 Private Sub Report_Open(Cancel As Integer) Dim sTable As String Dim sOrderBy As String '使用するテーブル名(レコードソース)の名称を取得 sTable = レコードソーステーブル名 '並べ替えを設定(文字列の組み立て) sOrderBy = sTable & ".項目1," & sTable & ".項目2," & sTable & ".項目3 DESC" 'プロパティに設定 Me.OrderBy = sOrderBy Me.OrderByOn = True End Sub ※項目1、項目2、項目3は フォームで指定されている項目をよんで、対応するテーブルの項目をセットしてあげれば いいと思います。 また、どういうカタチで昇順と降順を指定するようになっているのかわかりませんが、 入力値がIf文分けられるような仕組みになっていれば(例えばオプションボタンとか・・) 並べ替え文字の組み立て時に「DESC」指定できるので、特に問題なくできると思います。 参考になったでしょうか? 文章表現が下手なのでわからなかったら気軽に聞いて下さい。

noname#1296
noname#1296
回答No.3

レコードソースで並び替え順を指定してもレポートの場合は無視されてしまいます。レポート自身がクエリーのような働きをするためだと思われます。たまたま思った通りに出る場合もあるようですが基本的には元のテーブルの並び順(主キー順もしくは物理的な並び順)になります。これって昔のバージョンからのAccessの仕様だと思うんですが・・・ レポート自体で「並び替え/グループ化」を使う必要がありますが、これは実行時には指定できないんですよね。 デザインビューで開いて、「並び替え/グループ化」の設定を変更してからレポートを開くっていう方法しか思い浮かびません。 昇順・降順が固定できるなら、コンボボックスで指定したフィールド名を別名で保存するっていう手もあるんですが。 SELECT *,項目A As 並替1,項目B As 並替2,項目C As 並替3,"" As 並替4,"" As 並替5 FROM テーブル 最大で5項目の指定の内、3項目を指定した場合ですが、これでレポートの「並び替え/グループ化」に並替1~5を指定しておきます。あとはフォームで変更してもそのまま影響されるはずです。昇順・降順のどちらか、固定になってしまいますが。

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.2

レポートのOpenイベントに RecordSourceを書き換えるVBAを書けばいいでしょう。 Private Sub Report_Open(Cancel As Integer)  Me.RecordSource = "SELECT * FROM 商品 ORDER BY " _  & Forms!hogeFrm.並び替え項目 & IIf(nz(Forms!hogeFrm.並び順) = "降順", " DESC", " ASC") & ";" End Sub 不明点などあったら、補足してください。

satie
質問者

補足

こんにちは。回答ありがとうございました。 クエリーは極力使わない方針でやっていますので、いつもレポートオープン時にレコードソースを書いています。問題のレポートも普段と同じように作り、テストしたところ、並び替えが上手くいっていないということに気が付いたのです。 マイクロソフトのヘルプを見たところ、レポート作成時に、誰かが元になるテーブルで抽出をかけていたり、並び替えをしたりしていると、どこかでその設定を覚えていて、レポートを開くたびに、その並びになってしまう、ようなことが書いてありました。何回作り直してもダメなので、青いカッコのところで、Choose関数を使用して並び替えの指定を拾うようにしましたが、昇順しか指定できず、完全な解決には至りませんでした。 いずれにしても、回答ありがとうございました。

回答No.1

レポートを作るときにテーブルから持ってきてる様ですね Accessでの並べ替えでの出力は基本的にクエリーで並べ替えて出力するものです クエリーを作って、クエリーからレポートを作って下さい

関連するQ&A

  • Access2007 レポートでの並び替え

    Access2007 でレポートを作成ましした。 グループ化して-値全体-昇順 として並び替えを行っているのですが 一つのレポートの中で、値によって 昇順にしたり 降順にしたりしたいのですが、 どのようにしたらよいでしようか。 Accessはあまり詳しくありませんが、ご教授お願いいたします。

  • Access フォームから並び替えレポート

    お知恵をお貸しください。 Access2010 フォームでオプショングループを2種類用意しました。 規則グループ 昇順 降順 並び替えグループ ID ふりがな レポートに Private Sub Report_Open(Cancel As Integer) Select Case Forms!フォーム4!fra並べ替え Case 1 Me.OrderBy = "ID ASC" Me.OrderByOn = True Case 2 Me.OrderBy = "ふりがな ASC" Me.OrderByOn = True End Select End Sub 並び替えでは、昇順のみうまくレポートを行えますが。 規則で ID ふりがな を昇順 降順 に行えません。 なにを加えればよいのでしょうか。 よろしくお願いします。

  • ACCESSのレポートでの並び替えについて

    ACCESS2000を使っている初心者です。 レポートのデザインビューで詳細セクションに「並び替え/グループ化」を設定しましたが、これを設定しなおしたいと思っています。 現状5項目のフィールドの並び替えを設定していますが、3項目程度に減らしたいと思い、下位の2項目のフィールドを消してみましたが、いざプレビューに戻すと「プレビューまたは印刷しようとしたレポートで、グループヘッダー/グループフッターの並び替えを行うフィールドまたは式を指定する必要があります。」というメッセージが出てきてしまいます。 どのようにして項目を減らせばいいのか、またこの「並び替え/グループ化」の全解除が出来るのであれば、どうか教えてください。

  • Access2003 レポートレイアウトについて

    Access2003 レポートレイアウトについて Access初心者です。ご存知の方がいらっしゃいましたら教えて下さい。 レポートレイアウトについて フォーム上で請求書のデータ入力を行う際は、サブフォームの 請求内容の詳細を「昇順で並び替え」を行い項番(オートナンバー)の 若い番号順に並べ替えを行っていますが、レポートの印刷プレビューを 呼び出すと並び方が「降順」となり「昇順」に切替えることができません。 レポート上でサブフォームに入力した内容をオートナンバーの若い番号順「降順」 に並び替えをすることは可能でしょうか? フォームで並び替えを行ったとおりにレポートへ表示させるためにはどのように させると宜しいでしょうか?

  • Accessでリストの並び順を変更したい

    いつも大変お世話になっております。m(_ _)m Accessで、コンボボックス等を作成します。 中身はテーブルまたはクエリを参照しています。 リストを開くと、テーブル等の並び方のまま表示されますが、その並びを変更することは可能でしょうか? テーブルの並びを変えれば変わるのであれば、変更の仕方を教えてください。例えば、テーブルに主キーを設定していると、主キーの昇順に並んでしまいます。それを主キーの昇順でなく、他のキーの昇順(または降順)に変更したい場合は、どうすればいいのでしょうか? 質問の意味が分かりますでしょうか? よろしくお願いします。m(_ _)m

  • Access リレーションのある項目並び替え

    一人で、初めてAccessに取り組んでいます。 相談できる人が周りに居ないので、助けてください。 2つのテーブルがあります。 テーブルデータA    ヘッダーID(オート)    グループ名    区分    文書名 テーブルデータB    区分ID(オート)    区分インデックス    部品名 テーブルデータA”区分”と、テーブルデータB”区分インデックス”が、リレーションシップで繋がっています。 テーブルデータAを、”区分”の昇順で並び替えをして、フォーム上で表示させたいのですが、 フォーム上で表示させる以前に、データシートビューで確認するも、並び替えが出来ません。 テーブルデータBをデータシートビューで表示すれば、”区分インデックス”順に並ぶのですが、 テーブルデータAをデータシートビューで表示すると、昇順も降順も変化なく、”区分”で並び替えができません。(バラバラの状態です) ちなみに、”区分”及び”区分インデックス”は、テキスト型12桁です。 リレーションシップが付いてる項目は、並び替えができないのでしょうか?

  • Accessレポートでコンボボックスが動かない

    Access2010のレポートでコンボボックスを使いたいのですが、コンボボックスが正しく表示されず困っています。 表示されないというのは、コンボボックスのリストを選択する逆三角形が表示されず、またリストも全く表示されません。つまりテキストボックスのように空のの四角い箱が表示されてしまいます。 表示したいリストはあるテーブルから引っ張っているのですが、全く同じことをリストボックスでやろうとするとすべての項目がうまく表示できることは確認しました。 またフォームの方ではコンボボックスをから項目が選択できることも確認できています。 レポートではコンボボックスが使えないような仕様になっているのでしょうか? お分かりになる方教えていただけますでしょうか?

  • accessのレポートで…

    レポート(テーブル1から作成)にあるフィールド1には「1・2・3…」という数字が入っています。 この1・2・3はテーブル2(ID・名前)とリンクしています。 フォーム上ではコンボボックスにして、テーブル2の名前も表示するようになっています。 (テーブルに値としては入っていません) これでレポートを作成した場合、テーブル2の名前を表示させたいのですが、テキストボックスで Iif([フィールド1] = "1","****",Iif(… というようにしてしまうと、せっかくリンクにしたのにデータが固定になってしまうのを避けたいんです。 フォームだとコンボボックスの更新後処理とレコードの移動にコードをかけば最新の情報を表示することができたんですが、レポートでもこのようなことはできるんでしょうか? (コードをかいて処理したいです) Access2000です。 よろしくお願いします。

  • アクセスのデータの並び替え

    アクセスで、データを表タイプのフォームに出して、フォーム上で回数フィールドを昇順・降順でボタンを使って並び替えをしたいのですが出来ますでしょうか? 現在は、右クリックして並び替えています。 宜しくお願いします。

  • accessで並び替えの順序の設定

    access2000です。 テーブルを並び替えをしたいのですが 昇順・降順以外に並び替えを指定出来ますでしょうか? 例えば 大阪・兵庫・京都・奈良・和歌山だと 京都、大阪、奈良、兵庫、和歌山という順にしか並び替えられません。 これを大阪がはじめ、次は兵庫、次は京都、奈良、和歌山と並び替えをこちらの都合で設定したいです。 できますでしょうか?

専門家に質問してみよう