• ベストアンサー

Access2000のクエリ

顧客管理の担当者別ランクをクエリで作成してあります。ランクは1から始まり、追加、変更した人のランクを例えば10として入力した時に以前10だった人から順番にランクが入れ替わる方法がありますか?

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

>えば10として入力した時 ランクを「10」と人手で入れるのですか。それは人間の総合的評価順位ですか。 それであれば、プログラムの出番であるようなないような。(注) 入力したきっかけ(イベントのようなもの)が捕らえにくい。 以前の10か、今回入力した10かは何で判別するのでしょう。 対する概念は、データ(数値)の大小順位による自動順位づけですが。 エクセルのランク関数などはこちらの考えですね。 (注) 山田 2 小川 1 近藤 4 鈴木 3 とある場合、テキストボックスに吉田2と入れた場合、 山田 3 近藤 5 鈴木 4 にするプログラムは、簡単ではないでしょうか。 入れた番号と同じか大であれば+1すればよい。 テキストボックスなら、データを入れたときというイベントはあるが、 テーブルやクエリのフィールドにテータを入れたときというイベントは、ないのではないかな。 の場合

nuu3024
質問者

お礼

お礼が遅れて申し訳けありません。ありがとうございました。順位は、担当の総合的判断なので無理ではないかと…、結局、順位だけのテーブルクエリ作成し、順位を決めた上でコピー貼り付けすることにしました。

nuu3024
質問者

補足

その通りのことなんですが、エクセルでできるが、アクセスではできないということなんですかね…?

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.4

#3です。 >エクセルでできるが、アクセスではできないということなんですかね 私のようなものにはできないというだけで、最高の技術、たとえばAPIなどを駆使すればできると思いますが、APIを使わないVBA程度を用いてでできないのは、普通できないというのでしょう。 アクセスとエクセルは同じというわけではない。表にして見せているから 似ているように見えるだけ。 エクセルの関数は、データが変わると、自分の関数式に関係ないか調べて 1つ1つ関係のないのまで再計算しているようです。エクセルは、データが変わったら結果を即座に修正する、そこに機能を特化しているようです。アクセスのコントロールのイベントとちょっと様子が違うように思います。 テーブルやクエリはデータで、フォームに表示した順位データそのものなら、#3に書いた理屈で、修正はできると思います。

nuu3024
質問者

お礼

お礼が遅れて申し訳けありません。ありがとうございました。順位は、担当の総合的判断なので無理ではないかと…、結局、順位だけのテーブルクエリ作成し、順位を決めた上でコピー貼り付けすることにしました。

  • komet163
  • ベストアンサー率51% (22/43)
回答No.2

こんにちは。勘違いしていたらゴメンなさい。 「クエリの元となっているテーブルに「順位」というフィールドが存在してて、 手動で入力していた順位のリナンバーを自動化したい。」 でいいでしょうか? それならば VBA でやっつけてしまうのが早い気がします。 Sub Test() Dim i As Long Dim CN As New ADODB.Connection Dim RS As New ADODB.Recordset Set CN = CurrentProject.Connection With RS  .Open "テーブル名またはクエリ名", CN  For i = 1 To .RecordCount   .Fields("順位") = i   .MoveNext  Next End With RS.Close CN.Close Set RS = Nothing Set CN = Nothing End Sub ここで、「テーブル名またはクエリ名」で指定するのは、 データが追加され、望む順位に並べ替えられたテーブルまたはクエリです。 つまり、「10位が二人」などの同順が存在する場合、 望む順になるように「順位」以外にキーとなる別のフィールドが必要でしょう。 「順位」以外にキーとなるものが無いときは、 順位のデータ型を単精度浮動小数点型などに変更して、 旧10位を「10.1」 新10位を「10.0」などと入力してから 順位でソートする手もあります。その場合は、上記の変数 i は、 Dim i As Single と宣言してください。

nuu3024
質問者

お礼

ありがとうございます。まだ、初心者で、マクロやVBAのことがわからず・・・ 参考にして トライしてみます。

回答No.1

ありますよ。 っていうか普通にクエリーを再実行すれば最新の ランクになると思いますが・・・・。 もうすこし、テーブルの項目名だとかSQLとか情報が 欲しいところですがね。

nuu3024
質問者

お礼

お礼が遅れて申し訳けありません。ありがとうございました。順位は、担当の総合的判断なので無理ではないかと…、結局、順位だけのテーブルクエリ作成し、順位を決めた上でコピー貼り付けすることにしました。

nuu3024
質問者

補足

それは、クエリの並び替えの昇順にしてありますので、解るのですが。説明が悪くてすみません。例えば、10位の人を追加したら変更前の10位の人から順位の数字を入れ替えなければ10位が2人になりますよね。その数字入替の作業を自動にできるものか?ということなのですが…

関連するQ&A