- 締切済み
Access97でクエリーにオートナンバーは?
簡単なことかも知れませんが… クエリーで抽出した結果にオートナンバーをつけたいのですが、方法はありますか?
- みんなの回答 (4)
- 専門家の回答
みんなの回答
先に回答している方の言うとおり、クエリーで連番はつけれません。 が、テーブル作成クエリーでクエリー結果を抽出した後にそのテーブルにもう一つオートナンバー型のフィールドを追加すると自動的に連番がふられますよ。
- ARC
- ベストアンサー率46% (643/1383)
クエリに自動で連番を付加する機能はありません。(断言) テーブルに[連番]フィールドを作って、VBAを使って連番を入力する以外には、有効な方法がないものと思います。 '以下のコードをモジュールにコピーし、 マクロの「プロシージャの実行」で、 =Renban("クエリ名", "[連番]フィールドの名前", 開始値, 間隔) のようにして使ってください。 開始値、間隔は数字で指定すること。省略してもいいです。(省略時は1が指定されたものとみなす) Public Function Renban(QueryName As Variant, FieldName As String, Optional Start As Long = 1, Optional Step As Long = 1) As Long Dim SrcRS As Recordset Dim Ct As Long On Error GoTo HandleErr On Error Resume Next Set SrcRS = CurrentDb.OpenRecordset(QueryName, dbOpenDynaset) Ct = Start With SrcRS Do Until .EOF .Edit .Fields(FieldName) = Ct .Update .MoveNext Ct = Ct + Step Loop End With ExitHere: Exit Function HandleErr: Select Case Err.Number Case Else MsgBox "エラー " & Err.Number & ": " & Err.Description, vbCritical End Select End Function なんかあったら、補足をお願いします。
お礼
詳細にありがとうございます。なんか見てるだけでむずがゆくなってしまいそうです。まだまだこのレベルは難しいかな。
- tepapapa
- ベストアンサー率23% (7/30)
クエリーではなく、レコードセットではダメでしょうか? 例えば以下のような感じで・・・ Dim myRS 'テーブルのレコードセット Dim myCt 'カウンター 'テーブルのレコードセットを開く Set myRS = CurrentDb.OpenRecordset("テーブル1") '最初のレコードに移動する myRS.MoveFirst '最後のレコードまで繰り返し、カウンターをひとつずつUP Do Until myRS.EOF myCt = myCt + 1 MsgBox myCt & myRS!項目1 myRS.MoveNext Loop myRS.Close これで一応は抽出した項目にナンバーをつけて表示できます。 どうしてもクエリーで・・・となると分かりません。 どなたか分かる方よろしくお願いします!
- nushi2
- ベストアンサー率21% (12/56)
回答らしい回答ではないのですが、私も以前クエリーで抽出結果にオートナンバーを付した処理をやりたかったのですが、Access単体ではうまくいかないようです。 実現するには、VBで作成しないといけないようです。 (その時は、オートナンバーの機能はあきらめました。)
お礼
ありがとうございました。さっそくやってみます。