• ベストアンサー

access2003の質問です。

access2003の質問です。 レコードが1000件以上あるテーブルです。 [販売文][説明文]というフィールドがあります。 [販売文]のなかのあるレコードの値を [説明文]のすべてのレコードに入れたいのですが、 どのようにすればいいでしょうか? たとえば、[販売文]の500行目のレコードの値を 反映させたい場合を教えていただけますか。 どうかよろしくお願いします!

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

  • ベストアンサー
  • layy
  • ベストアンサー率23% (292/1222)
回答No.5

500番目をわからせるには、 1)先頭から500件だけ抽出してテーブルに作成する、そうしておいて最後のレコード、を見つけてマーク 2)クエリの結果に連番付与する、VBAサンプルはネット検索するとあります。 どちらかです。 1)オートナンバーだけでは500番目という保証はないので、先頭500件だけ抽出しオートナンバー付与したとき、オートナンバー最大値を持つレコードが500番目だというとらえかたをします。500番目がわかればそのレコードに1、ほかのレコードに0とでも印しする項目を付与。あとは更新クエリです。 2)VBAでやるにはそんなに難しい記載にはなりませんし、値を更新するのもクエリ考えるより容易です。どうですか。

その他の回答 (8)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.9

回答文面にて誤解を招いてしまって申し訳ありません。 オートナンバー付与したものに対して、レコード削除してしまうと 連番が欠番し歯抜けになる。(=連番500値が500レコード目であるという保証はなくなる) これを言いたかっただけです。 オートナンバー付与機能自身が欠番を招く恐れあり、の意図で 答えたわけではありませんが、誤解を招く記載になっていたのは認めます。 お手数おかけしました。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.8

一つも補足になっていません。 >先頭500件だけ抽出しオートナンバー付与したとき、オート >ナンバー最大値を持つレコードが500番目だというとらえかたをします。 このプロセスのどこで歯抜けになるのですか。 オートナンバーでなくても連続番号を振ってある レコードのどれかを削除すれば歯抜けになるのは 当たり前です。 なぜこのような発言をされたのかその根拠を 伺いたいのです。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.7

補足です。 オートナンバーに不具合というか、レコードが削除されてしまったとき歯抜け連番になる、値500とあっても実際は499番目のレコードかも、ということを懸念してます。 500番目ていう条件ではVBAでカウントするのが確実と思います。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.6

layyさんへ 後学のためにお聞きしますが、 >1)オートナンバーだけでは500番目という保証はないので、 >先頭500件だけ抽出しオートナンバー付与したとき、オート >ナンバー最大値を持つレコードが500番目だというとらえかたをします。 ということは、オートナンバーはでたらめな番号を 振っていると言うことですか。 であるならば、Accessはとんでもないソフトで、 http://support.microsoft.com/kb/881386/ja このような情報も、でたらめで、今までこの OKWAVEあるいは他のQAコーナーでオートナンバー に関する回答や、世の中で稼動しているAccess でオートナンバーを採用しているファイルは すべてでたらめなデータをはじき出している ことになります。 >1)オートナンバーだけでは500番目という保証はないので、 >先頭500件だけ抽出しオートナンバー付与したとき、オート >ナンバー最大値を持つレコードが500番目だというとらえかたをします。 これが事実ならば看過できない大事件です。 このような発言をされる根拠はどこにあるのですか。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.4

テーブルをもう一つ作成して、 [販売文][説明文][反映対象] として、説明文に反映させたい1レコードに印をつけておくくらいはできますか。 [反映対象]に印があるレコードを抽出条件として、[説明文]を更新、という流れです。 コピー元の値がすでに決まっているということなら更新クエリになります が、 何度か処理をしてその処理都度500行目に対して、 だったら別途「行番号を付与して、500行目かどうかを求める処理」が必要です。 500行目じゃなくて、 ほかの「○○がxxなとき」という明確な条件なら仕組みを作りやすいです。 アクセスで仕組みを悩むよりは、 テキストやCSVでエクスポートして500行目を特定し エクセル等で操作する方が早いです。

infumi1126
質問者

お礼

回答ありがとうございます!! >テーブルをもう一つ作成して、 >[販売文][説明文][反映対象] >として、説明文に反映させたい1レコードに印をつけておくくらいはできますか。 >[反映対象]に印があるレコードを抽出条件として、[説明文]を更新、という流れです。 ⇒すみません。  印の入れ方がわかりません。  よろしければ教えていただけますか??  IDを作るのとは別ですよね? >アクセスで仕組みを悩むよりは、 >テキストやCSVでエクスポートして500行目を特定し >エクセル等で操作する方が早いです。 ⇒エクセルのオフィスリンクでやろうとしてみたのですが、  エクセルは、もしかして文字数の制限がありますか?  なぜか、入力してあるはずのセルの内容が  途中で終わっていました。  ※文字数は5000文字ほどあります。   以上、2点になりますが、 ご教授のほど、よろしくお願いします!!

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

#1です。 主キーとなるIDなるフィールドがなければ IDというフィールドをオートナンバーで つくると自動的にナンバーが割り当てられます。 もともと重複しない番号があるならば、それを IDに置き換えてもいいです。

noname#192382
noname#192382
回答No.2

エクセルなら簡単に出来ます。そこでアクセスのデータをエクセルにoFFICE LINKでもっていき、計算処理をした後、アクセスにインポートしたらいかがですか。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

500行目という概念はレコードにはないので、 レコードにIDという主キーがあるとします。 テーブル名をテーブル1とします。 更新クエリですれば以下。 UPDATE テーブル1 SET テーブル1.説明文 = DLookUp("販売文","テーブル1","ID=500");

関連するQ&A