• ベストアンサー

SQL2008のデーターをAccess2007で利用する場合、並び替えと関数の設定についてご教示ください。

(1) Viewで並び替えを設定してもAccessで開くとその並び替えが無視されID順になってしまいます。 (2) これまで、Access2007でクエリーに設定していた関数 (Pmt)はどこにどのように設定すればよいのでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.2

#1です。 そうですか、読み間違えていました。adpなんですね。だとすると、かなり厄介ですね。 これが回答だといい切りませんが、選択肢を示します。 ・並べ替えについて  Accessとは違い、通常データベースでは「ビューはそれ自体を並べ替えるものではない」という前提になっています。  SQL Server 2000まではTOP 100 PERCENTが効いたのですが、他のDBMS(オラクルなど)のユーザから見れば理解不能のはずです。  (並び替えは、実行時にビューの外で行うのが常識だから)  それでもどうしても並び替えをしたければ、  1) 可能であればSQL Server 2008 SP1を適用してみる  2) それが難しいか、適用しても改善しない場合、   SQL Server Manegement Studioで該当のビュー(Access側でクエリと表示されているものの実体)を開き、TOP 100 PERCENTになっているところをTOP 99.99999999999999999999999999999999999 PERCENTに変更する ・PMT関数について  SQL ServerにはPMT関数などというものはありません。  もしかしたら、もっとうまい手があるのかもしれませんが、どうしても必要ならば関数を作るしかないでしょう。  クエリウィザードで「テキストスカラー関数の作成」を選び、以下のようなソースを貼ります。 CREATE FUNCTION dbo.PMT(@amt money,@term money,@rate float) RETURNS money AS BEGIN RETURN (@amt*@rate/12*power((1+@rate/12),@term))/(power(1+@rate/12,@term)-1) END ※合っているはずですが、あくまでも一例です!ガーッと書いたものなので。 そして、クエリの方でdbo.PMT(金額,期間,レート)という感じで利用します。

ky-housing
質問者

お礼

ご指導ありがとうございます。一覧表の場合は並び替えますと見やすくなりますのでできれば並び替えをしたいと思っております。TOP 100 を 99.9999….としますと、自動的に100と変更されてしまいます。設定かバージョンの違いによるものでしょう。現在、Accessのフォームを開いたときに自動的に並び替えができないものかとVBAで試行錯誤しております。Pmt関数についてのご提案ありがとうございました。これから試してみようと思います。これらがうまく動作しなかったら、AccessからODBC接続でSQLサーバーのテーブルだけでも利用しようかと思っております。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.3

>TOP 100 を 99.9999….としますと、自動的に100と変更されてしまいます。 9が多すぎたようです。 TOP xx PERCENTは、クエリのプロパティのビュータブに指定欄がありますね。TOP 99.99999999999999999999999999999999 PERCENTであれば、こちらで試した限りは効きました。

ky-housing
質問者

お礼

再度、100を99.99999999に変更したところ今度は正常に並び替えができました。最初にテストした時は桁数が多すぎたのかも知れません。これでさっぱりしました。Pmtは今後、テストをすることにして、とりあえずこの質問を締め切らせて戴きます。初心者の私がSQLサーバーを管理運営しますので、今後も質問を繰り返すことになると思います。その節はよろしくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

SQL Server2008にビューを作成して、それをリンクしているという理解ですが、あっていますか? (1)(2)とも、リンクテーブル(ビュー)を使ったクエリをAccess2007側で用意した方がいいと思います。 (1)「Viewに並び替えを設定する」が、「SQL Server側でViewにTOP 100 PERCENTを指定する」ということであれば、SQL Server 2005以降はTOP 100 PERCENTは原則として効きません。パッチは提供されていますが、あてて直った例をまだ聞いたことがありません。 SQL Server 2008 SP1は未確認ですが、SQL Server 2005 SP3は直っていませんでした。 http://support.microsoft.com/kb/926292/ja (2)Pmt関数はSQL Serverにはありません。

ky-housing
質問者

補足

早速のご指導有難うございます。並べ替えについては、SQL Server側の問題と伺い驚きです。さて、Access側に設定する方法ですが、クエリにするとSQL Severのバージョンより古いため保存されません…とメッセージがでてしまいます。またこの方法ではクエリがSQL Sever側に設定されることになるので同じ問題が生じるような気もします。多分、ご指導の本意はこのようなことではないと思いますので、もう少々補足のご説明を戴けませんか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ACCESSの並び替え

    ACCESSのクエリでこんな並び替えはどのようにすれば 可能でしょうか? 階層 自ID 親ID ソート順 1 1 - 1 2 2 1 1 2 3 1 2 2 4 1 3 3 5 2 1 3 6 2 2 3 7 2 3 3 8 3 1 3 9 3 2 3 10 3 3 3 11 4 1 3 11 4 2 3 11 4 3 上記テーブルの 階層はツリー上の階層をあらわしています。 自IDは、自分のIDです。 親IDは、ひとつ上の階層のどのIDに紐付くかをあらわします。 ソート順は、同じ親IDを持つレコード内でのソート順です。 これを、まずは、 (1) 階層1の自ID1 (2) (1)に紐付く階層2のソート順1 (3) (2)に紐付く階層3のソート順1 (4) (3)に紐付くIDが存在しないので、(2)に紐付く階層3のソート順2 (5) (4)に紐付くIDが存在しないので、(2)に紐付く階層3のソート順3 (6) (5)に紐付くID無し、(2)に紐付くID無しなので、(1)に紐付く階層2のソート順2 (7) (6)に紐付く階層3のソート順1 ・・・・・ と言った感じで、下記のように並べ替えたいと思っています。 階層 自ID 親ID ソート順 1 1 - 1 2 2 1 1 3 5 2 1 3 6 2 2 3 7 2 3 2 3 1 2 3 8 3 1 3 9 3 2 3 10 3 3 2 4 1 3 3 11 4 1 3 11 4 2 3 11 4 3 実際には、階層が8まであり、ソート順も最大で30前後存在します。 どなたかご教授いただけると助かります。

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

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

  • 【Access】条件によって並び替えの順序を変えたい

    【Access】条件によって並び替えの順序を変えたい メイン画面(フォーム)で検索条件を指定し、「検索」ボタンをクリック ↓ 検索結果(フォーム)を表示 しています。 メイン画面で並び替えを「昇順、降順、並び替えなし(ID順)」と選択(オプションボタン)しており、次のような処理をしています。 (1)クエリによる抽出(並び替え以外の条件で) (2)並び替えなしの場合はレコードソースを "SELECT * FROM クエリ" とする (3)並び替えありの場合はレコードソースに ORDER BY を追加 (2)、(3)の処理はVBAでおこなっています。 しかしながらこの方法では後々の画面遷移の際に不都合が生じてしまいました。 そこで条件によって並び替えの仕方を変えるところもクエリに含めたいと 思いましたが、方法がわかりません。 ご存知の方がいらっしゃいましたら、ご教示ください。

  • Access SQL

    Access2000です。 クエリである項目が=1ならXX、=2なら○○としたいのでヘルプを参照し SQLビューで IF(項目A=1,10*項目B,IF(項目A=2,20*項目B,0)) としました。 データシートビューを出そうとするとエラーになります。 エラーはIFが未定義関数だというものです。 なお、デザインビューは開けます。 どこがいけないのでしょうか? よろしくお願いいたします。

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

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

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

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

  • ACCESS97のクエリーでデーターの並び替え

    お世話になります。 MS-ACCESS97のテーブル作成クエリーにて、データーの並び替えを試みているのですが、うまくいきません。 項目は下記のように並んでいます。 ----------------------------- コード1 | コード2 | 締日 | 請求額 | ------+------+------+--------| 105000 | 1000 |20030420| 50000 | 103000 | 0 |20030520| 30000 | 105000 | 1050 |20030420| 70000 | 103000 | 0 |20030420| 10000 | 105000 | 1000 |20030520| 20000 | 上記を下記のように、コード1の降順で、コード2の降順で、締日の降順に並び替えたいのですが、並び替えは列に対してひとつ?のみでしょうか? ----------------------------- コード1 | コード2 | 締日 | 請求額 | ------+------+------+--------| 103000 | 0 |20030420 | 10000 | 103000 | 0 |20030520 | 30000 | 105000 | 1000 |20030420| 50000 | 105000 | 1000 |20030520| 20000 | 105000 | 1050 |20030420| 70000 | お願いします。

  • アクセスの昇順並び替えで空白データを最後にもってきたい

    アクセスのクエリで日付が昇順になるように並び替えを行った時に、空白データを並び替えの最後になるようにしたいのですが、どうしたらよいのでしょうか?(デフォルトのままで単純に昇順で並び替えると、空白データが一番最初にきてします。)宜しくお願いします。

  • Access選択クエリの並び替え

    選択クエリにて抽出条件を指定した後、並び替えを行いましたところ、デザインビューのフィールドが並び替えの条件のみの表示になり、抽出条件を確認出来ません。 再度、抽出条件を確認・変更するにはどうすればよいのでしょうか? 宜しくお願いします。

  • ACCESSの並び替え

    初めてAccessでデータ作成をしています。 人事データなのですが、全社員を「部長・課長・主任」等役職別に自分の希望通りの順にクエリで並べ替えしたいのです。リレーションシップ??とか設定しようとしてみたんですけど、うまく出来ません。 過去の質問を見てみましたが、理解出来ませんでした(;_;) すみませんが超初心者の私にどなたか教えて下さい。。

このQ&Aのポイント
  • NEC 121wareを使用していない場合、解約する方法について教えてください。
  • カードから毎月料金が引かれているが、解約したい場合はどのようにすればよいか。
  • NEC 121wareの解約手続きについて詳しく教えてください。
回答を見る