ORDERBY句で整列させたデータとプレビューが違う

このQ&Aのポイント
  • Windows2000 SQLServer Access2000で開発しています。T_W会員別データでは「契約番号」の昇順で整列しているのですが、R_チェック用一覧のプレビューが表示されると、会員番号で昇順整列されます。変更しないといけない部分はどこになるのでしょうか?
  • 開発環境はWindows2000 SQLServer Access2000です。T_W会員別データでは「契約番号」での昇順整列を行っていますが、R_チェック用一覧のプレビューでは会員番号で昇順整列されます。必要な変更箇所を教えてください。
  • Windows2000 SQLServer Access2000を使用して開発しています。T_W会員別データでは「契約番号」での昇順整列を行っており、R_チェック用一覧のプレビューでは会員番号で昇順整列されています。どの部分を変更すればよいのでしょうか?
回答を見る
  • ベストアンサー

ORDERBY句で整列させたデータとプレビューが違う

Windows2000 SQLServer Access2000で開発しています。 以下、プログラムの抜粋より、 SQL2 = "Delete from T_W会員別データ" CurrentProject.Connection.Execute SQL2 SQL3 = "Insert into T_W会員別データ " & _ "Select 会員番号, 契約番号, COUNT(*) as 請求件数 " & _ "from T_統合データ " & _ "Where ( 扱月 = '" & txt扱月 & "' and '" & 270000 & "' <= 確認番号 and 確認番号 <= '" & 279999 & "' ) " & _ SQL3 = SQL3 & "Group by 契約番号, 会員番号 " SQL3 = SQL3 & "Order by 契約番号 " gMainConnection.Execute SQL3 DoCmd.OpenReport "R_チェック用一覧", acPreview, , whereCond と作成しているのですが、 T_W会員別データ では「契約番号」の昇順で整列しているのですが、 R_チェック用一覧のプレビューが表示されると、会員番号で昇順整列 されます。変更しないといけない部分はどこになるのでしょうか?

  • J-SYS
  • お礼率72% (88/121)
  • MySQL
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.2

>DoCmd.OpenReport レポートのデータソースにSQLを指定する場合、SQLの結果に関わらず「データソースの並び順に関係なく、レポートにフィルタや並び順が指定されていると、それが有効」になります。 て言うか、データソースに「ORDER BY」を含むと、データベースから抽出する時にソートが行なわれ。レポートを表示&印刷する時にもう一度ソートが行なわれ、実行速度が落ちるし、ソートが1回無駄です。 SQLからはソート指令「ORDER BY」を削除し、レポートの「並び順」にソートキーを指定するようにしましょう。

J-SYS
質問者

お礼

ご教授ありがとうございました。 疑問点が無事解決しました。 VBから組むのではなく、オブジェクト⇒レポートから 並び替え/グループ化の設定を選んで作成することを 知りませんでした。 VB上ではORDERBY句を外して稼動させています。

その他の回答 (1)

  • STICKY2006
  • ベストアンサー率29% (1536/5269)
回答No.1

こんちは。 えーと。。。ソースはあんまし読まないで~の回答ですけど。。。 Accessの方はあまり触らないのでちょっと分からないですけど、SQLServerの場合、select ~ order by した結果と、テーブルの中身を見るために、テーブルを右クリックして開いた場合は表示される内容は違いますよね。 よく自分が昔言われていたことは。。。 「表示する際にも、ちゃんとorder byはしろ」って言われてましたよ。 。。。参考になりますかね??

J-SYS
質問者

お礼

ご教授ありがとうございました。 疑問点が無事解決しました。

関連するQ&A

  • SQLのORDERBY句について質問です。

    SQLのORDERBY句について質問です。 データをSQLで並べ替えたいのですが、 AB-125 のような商品名のデータを並べ替えたいと考えています。 しかし、 AB-125 AB-123 AB-20 となってしまった為、別スレッドでアドバイスいただき、 Order by Left([商品名], InStr(1, [商品名], "-")-1), CLng(Mid([商品名], InStr(1, [商品名], "-")+1)); と追記いたしました。 一瞬うまくいったと思ったのですが、商品コードの中に、 AB-125 AB-123A AB-10M の様に最後にも文字が挿入されていました。 この数字の部分だけ取り出す方法か、もしくはこのような商品コードを うまく並べ替えできる Order by 句のアドバイスよろしくお願いいたします。

  • 複数テーブルからデータ取得について

    初めて投稿します。よろしくお願いします。 SQLを使うのが初めてなので勉強をしながら作業を行なっています。そのため説明不足などありましたらご指摘願います。 [環境]  データベース:SQLServer2003 下記SQL文より、該当データの抽出は出来たのですが、 この3つのSQL文を一つのSQL文にて該当データを取得したいのですが、なかなか解決出来ないので宜しくお願いします。 SELECT isnull(会員CD,' '), isnull(郵便番号,' '), isnull(住所,' '), isnull(番地,' '), isnull(方書,' '), FROM KAIINMST AS A WHERE 更新カウンター = (SELECT MAX(更新カウンター) FROM KAIINMST WHERE A.会員CD = 会員CD) GROUP BY 会員CD,郵便番号,住所,番地,方書 ORDER BY 会員CD SELECT isnull(会員CD,' '), isnull(送付郵便番号,' '), isnull(送付住所,' '), isnull(送付番地,' '), isnull(送付方書,' '), FROM KAIINSOF AS A WHERE 更新カウンター = (SELECT MAX(更新カウンター) FROM KAIINSOF WHERE A.会員CD = 会員CD) AND 業務CD = "20" GROUP BY 会員CD,送付郵便番号,送付住所,送付番地,送付方書 ORDER BY 会員CD SELECT isnull(会員CD,' '), isnull(代理会員CD,' '), isnull(会員区分,' ') FROM DAIRI AS A WHERE 更新カウンター = (SELECT MAX(更新カウンター) FROM DAIRI WHERE A.会員CD = 会員CD) AND 業務CD = "20" GROUP BY 会員CD,代理会員CD,会員区分 ORDER BY 会員CD KAIINMSTテーブルをLEFT JOIN で他のテーブルデータを結合して欲しいです。 KAIINMASTの会員CDに対して他テーブルの該当データが存在しない場合は、NULLを設定して下さい。 以上です。宜しくお願いします。

  • WITH句を使用したSQLの結果

    WITH句を使用して総件数と1~20件までのデータを同時に取得するSQLを組んでみたところ、 WITH TMP AS (SELECT ROW_NUMBER() OVER (ORDER BY NO) AS CHECKROWNUM,NAME FROM TEST_TBL ORDER BY NO) SELECT T1.ALLCNT, T2.* FROM (SELECT COUNT(*) ALLCNT FROM TMP) T1, TMP T2 WHERE T2.CHECKROWNUM BETWEEN 1 AND 20; Oracle10.2.0.3.0のバージョンで ALLCNTが21になってしまう現象が発生してしまいました。 Oracle10.2.0.4.0や9iでは発生せず正しい総件数が取得できるのですが、 バージョンによる不具合は考えられますでしょうか。 それともSQL自体なにか悪い部分があるのでしょうか。 ちなみに T2.CHECKROWNUM BETWEEN 1 AND 100; と帰るとALLCNTが101と帰ってきます。 また、WITH句を使わず下記のようにTMPの部分をWITH句で使用したSQLに 置き換えると正しくALLCNTが取れます。 SELECT T1.ALLCNT, T2.* FROM (SELECT COUNT(*) ALLCNT FROM (SELECT ROW_NUMBER() OVER (ORDER BY NO) AS CHECKROWNUM,NAME FROM TEST_TBL ORDER BY NO)) T1, (SELECT ROW_NUMBER() OVER (ORDER BY NO) AS CHECKROWNUM,NAME FROM TEST_TBL ORDER BY NO) T2 WHERE T2.CHECKROWNUM BETWEEN 1 AND 20;

  • VBA ACCESS SQL WHERE句の数値型の変数の記述の仕方

    いつもお世話になっております。 i = Me!ID ’数値型です sql = "DELETE FROM T_DELETE_ID WHERE DELETE_ID = ""i"";" CurrentDb.Execute (sql) としたところ、SQLのWHERE句の条件の指定の仕方が どうもうまくいきません。 sql = "DELETE FROM T_DELETE_ID WHERE DELETE_ID = 101;" CurrentDb.Execute (sql) のようにWHERE句の値を数字にしたら実行できます。 この場合はどのようにしたらよろしいでしょうか わかる方いらっしゃいましたら、。ご教示の程よろしくお願いいたします。

  • アクセスのフォームでデーター入力用の一覧をだすために,VBAを使いまし

    アクセスのフォームでデーター入力用の一覧をだすために,VBAを使いました。 最初はORDER以降がなくWHEREからの()もなくて,組ID="&Me.C組で動いていたのですが,番号で昇順にする必要ができて,以下のように書くと一覧が表示できなくなりました… 書き方に間違いがあると思うんですが,初心者のためわかりません… どなたかご教授お願いいたします。 Private Sub Form_Open(Cancel As Integer) Me.生徒氏名.RowSource = "SELECT T_生徒.生徒ID, T_生徒.組ID, T_生徒.組, T_生徒.番号, [姓]+[名] AS 生徒氏名, T_生徒.性 FROM T_生徒 WHERE (((組ID) = & Me.C組)) ORDER BY T_生徒.番号 acs" End Sub

  • OracleのUnion内でそれぞれのOrderBy結果を反映する方法

    OracleのUnion内でそれぞれのOrderBy結果を反映する方法について AテーブルからデータをBの昇順で一覧を取得する際、Bの特定のコードを先頭に持ってこようとしています。 例)金融機関テーブル(BANK)を金融機関コード(BANK_CK)の昇順で並び替えるが、全銀の'9999'を先頭に持って来たい。 (SELECT BANK_CD FROM BANK WHERE BANK_CD = '9999') UNION (SELECT BANK_CD FROM BANK WHERE BANK_CD <> '9999' ORDER BY BANK_CD); としてしまうと、「ORA-00907: 右カッコがありません。」のエラーとなります。 SELECT 0 "PRE_KEY", BANK_CD FROM BANK WHERE BANK_CD = '9999' UNION SELECT 1 "PRE_KEY", BANK_CD FROM BANK WHERE BANK_CD <> '9999' ORDER BY PRE_KEY, BANK_CD; としてやると、値は並び変わりますが、いらない"PRE_KEY"が取れてしまいます。 BANK_CDだけ取得する方法はありますでしょうか?oracle11gです。

  • 最新のものからデータを10件づつ昇順で並べたい

    MySQLで、最新のものからデータを10件づつ昇順で並べたいと思っています。 最新のデータを1ページ10件ごとに収めていきたいので(最初のページを半端にしたくないので)、データを降順に取り出し、それぞれ取り出した10件ごとに昇順で並べ変えることが出来ないかと、いろいろ工夫をしましたが行き詰っています。PHPスクリプト(一部ですが)は次のように書いています。 $from = ($page-1)*10; $query = "SELECT * FROM table ORDER BY age DESC, sinchou DESC, taijyuu DESC LIMIT 10 OFFSET $from"; 1.降順で取り出したデータ10件を昇順に並べ替えるにはどのようにすれば良いでしょうか? 2.最新のものからデータを10件づつ昇順で並べるための良い方法が、上記の他にありますでしょうか? なにかご示唆を頂ければ有難いです。よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • データの更新について

    csvなどのテキストファイルからデータを取り込んで会員テーブルに更新するSQLを作成したくて考えています。 csvファイル 項目1:会員コード 項目2:名称 項目3:電話番号 いいやり方ではないと思いますがうまくいった方法を以下に書きます。 (1)ワークテーブル作成(csvと同じ項目) テーブル名:ワーク会員 項目1:会員コード 項目2:名称 項目3:電話番号 (2)UPDATE文実行 update 会員 K1 set 名称 = (select K2.名称 from ワーク会員 K2 where K2.会員コード = K1.会員コード), 電話番号 = (select K3.電話番号 from ワーク会員 K3 where K3.会員コード = K1.会員コード) where K1.会員コード IN (select 会員コード from ワーク会員 ) ブサイクな方法でしょうか? 他にもっといい方法があればアドバイスお願いします。

  • SQL上位n件ORDERBY 以降ORDERBY

    SQLのORDER BYについてご教授いただけますでしょうか。 例えば、10件のデータのうち、5件を指定のORDERBYで抽出し、 残り5件をORDERBYで抽出するということは可能でしょうか。 ID 名前 システムフラグ 1 AAA 1 2 BBB 1 3 CCC 1 4 DDD 1 5 EEE 1 6 FFF 2 7 GGG 2 8 HHH 1 9 III 1 10 JJJ 1 上記のようなデータがあった場合、 以下のように抽出されるようにしたいと思っています。 ID 名前 システムフラグ 1 AAA 1 2 BBB 1 3 CCC 1 6 FFF 2 7 GGG 2 4 DDD 1 5 EEE 1 8 HHH 1 9 III 1 10 JJJ 1 システムフラグが2が入っているものは、 5件からの4,5件目に表示されるようにして、 それ以降はIDの昇順で表示されるようにしたいと思っております。 5件というのは、決め打ち5件ではなく、条件によっては変わるのですが、 5件が7件となった場合は、6,7件目がシステムフラグ2のものがくるようにしたいです。 指定した件数から下2つ目がシステムフラグのものが取得したいということです。 わかりにくいと思いますが、どのようなSQLを書けば抽出できるか ご教授いただけますでしょうか。 どうぞ宜しくお願い致します。

  • SQLの外部結合について教えて下さい

    いつもお世話になっています。 SQL構文の外部結合が分らなくて困っています。 どうか教えて下さい。 JSPからString Nam = (request.getParameter("param"));で値を受け取ってその値でT_Tableと一致するデータのSQLを実行します。 SELECT * FROM T_Table where ID='"+ Nam +"' order by 日付 desc この結果とT_TableAの「番号」というフィールドと一致する問い合わせのSQLが分りません。自分なりに考えて作りましたがHTMLの部分の表示だけでレコードが表示されないので間違っているのだと思います。 色々調べてみましたが該当のサンプルがなかったので困っています。 教えて下さい!宜しくお願い致します。 【自分で作成してみたSQLです】 テーブルはSQL Serverです。 "SELECT * FROM T_Table where ID='"+ Nam +"' INNER JOIN where ID='"+ Nam +"' ON [T_Table].[番号] = [T_TableA].[番号] order by 日付 desc"

    • ベストアンサー
    • Java