アプリ版:「スタンプのみでお礼する」機能のリリースについて

Access2007の更新クエリーを使って連番を作りたい。と言うのはオート
ナンバーにしても欠番が発生をしたりするので。

下記のテーブルで連番を作る。

テーブル名は、table1
フィールドは、
idは、オートナンバーの型
連番は、数値の型
commentは、テキストの型

ここでは、下記の更新クエリーのsqlで連番を作成します。
UPDATE [table1] SET [table1].連番 = count1([id]);

ここで、count1()は、標準モジュールの関数です。
下記の様になっています。
Option Compare Database
Dim recno As Long

Function count1(val1 As Long) As Long
recno = recno + 1
count1 = recno
End Function

Function reset_count()
recno = 0
End Function

問題は、この更新クエリーは実行する度に折角作った連番の値が更新さ
れて破壊される事です。

ここで、連番の値が破壊されない様にsqlを作りたいのですが。良い方
法が見つかりません。他の方法としては確かにdcountも有りますが。更
新クエリーでどうしても作りたいのです。

sqlの構文を提示願います。宜しく、お願いします。

A 回答 (2件)

OracleのようなROW_NUMBERがやりたいって事ですかね...?


もしそうならAccessにそのような関数がないのでVBAと組み合わせてやる事になると思います。
    • good
    • 0
この回答へのお礼

有難う御座います。
そうですね。その様な物が有るのか、無いのかが分かりませんでしたので。
質問をしました。

有ると良いなあと言う考えでしたが。無い様ですね。
更新クエリーでは、更新のみしか設定が出来ないので。最初の値を何とかして設定をしたかったのですが
何ともならないみたいですね。

一応、これの代案としてはマクロを組んで最初に初期値をセットして
更新は、更新クエリーを通して今は実行しています。

何か一つで出来ればなあと思っていましたので。
出来ない様なので、現状通りとします。

これで閉めたいと思います。
どうも有難う御座いました。

お礼日時:2015/11/05 13:04

連番フィールドの最小空き番号を取得する関数


http://hatenachips.blog34.fc2.com/blog-entry-379 …
こちらが参考になるかと思います。
    • good
    • 0
この回答へのお礼

有難う御座います。

良く分かりませんが、これは通常の関数でのレコード更新の様な感じがします。
結局はマイクロソフトのAccessと言うのは、他のデータベースとは違ってsql
単体としては無理だと言う事でしょうか。

ならば、断念しますが。確かに、他のデータベースではsqlの構文のみでの
連番作成の例が載っていますので。もしかしたらと思って投稿しました。

別にAccessのモジュールを使って最初から最後迄の連番作成であればクエリー
に固執する事は有りません。

結局としてはsqlのみの単体としては出来ないと言う事なのでしょうか。

お礼日時:2015/11/05 10:57

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