プロが教えるわが家の防犯対策術!

表題の通りなのですが、
今現在ACCESS2000を使ってデータベースを作成しています。
その際、
----------------------
連番  項目
00001  りんご
00002  ばなな
00003  みかん
00004  もも
----------------------
というようなテーブルで[項目]を昇順で並び替え後、
連番が自動的に振られるようなクエリ(無理そうならその他の方法でも)を作成したいと思っています。

今現在はクエリで以下のように昇順で並び替えられたものを、
----------------------
連番  項目
00002  ばなな
00003  みかん
00004  もも
00001  りんご
----------------------
一旦エクセルにエクスポートして、オートフィルで[連番]を書き換え後、再度ACCESSにインポートし以下のような完成形にもっていっています。
----------------------
連番  項目
00001  ばなな
00002  みかん
00003  もも
00004  りんご
----------------------

しかし、頻繁に[項目]書き換え・追加のあるデータベースなので、結構な時間を費やしてしまい、とても効率が良いとはいえない状態です。

どうにかACCESS内で完結できる方法はないものでしょうか?

ご享受の程よろしくお願いいたします。

A 回答 (2件)

連番は他のテーブルと関連付けられていないのですよね。


今一つ、連番の使い道がわからないのですが・・・

連番は数値型で、書式が 00000 になっているものと仮定します。
テーブル名が「Table_A」と仮定します。
また、項目に重複するものがないものとします。

クエリのSQLビューで以下を記述してみてください。

UPDATE Table_A SET 連番 = DCount("項目","Table_A","項目<='" & 項目 & "'");

そして、必要に応じてこの更新クエリを実行します。


連番がテキスト型なら、DCount 部分を Format を使って桁を揃えてみてください。

この回答への補足

回答ありがとうございます。
また、説明不足申し訳ございません。

[1]連番は他のテーブルと関連付けられていません。
[2]使い道は、「Table_A」をcsv出力し、それをとあるシステムに取り込む際に必要となるからです。(システムがこの連番でしかソートできない)
[3]連番はテキスト型です。

お教えいただいたSQLを実行した結果、バッチリ変更することができました!
ありがとうございます。

ただ、連番を00001というふうに書き込むことがどうしてもうまくいきません。(テーブルの定型を使うと、csv出力時には0000が消えてしまう)

この部分を解決する方法はありますでしょうか?

補足日時:2010/02/21 09:41
    • good
    • 0

#1です



csv出力をどのようにされているかわかりませんが、
(「連番」をテキスト型に変えて)


テーブル「Table_A」を連番順にするだけのクエリ「Q_A」を以下内容で作ったとします。

SELECT 連番, 項目 FROM Table_A ORDER BY 連番;


csv出力指定で

DoCmd.TransferText acExportDelim, , "Q_A", "E:\test\a.csv", True

としてみると、作成されたファイル "E:\test\a.csv" の中身は

"連番","項目"
"00001","ばなな"
"00002","みかん"
"00003","もも"
"00004","りんご"

になるようですが。

「連番」が数値型だった場合、クエリを以下にすると、ファイルの中身は一緒になります。

SELECT Format(Table_A.連番,"00000") AS 連番, 項目 FROM Table_A ORDER BY 連番;


こういうことではない?のでしょうか。
    • good
    • 1
この回答へのお礼

SELECT Format(Table_A.連番,"00000") AS 連番, 項目 FROM Table_A ORDER BY 連番;
を使用することで、0000が表示されるようになりました。

ありがとうございます。

お礼日時:2010/02/21 12:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A