• 締切済み

Access97でクエリーにオートナンバーは?

簡単なことかも知れませんが… クエリーで抽出した結果にオートナンバーをつけたいのですが、方法はありますか?

みんなの回答

noname#420
noname#420
回答No.4

先に回答している方の言うとおり、クエリーで連番はつけれません。 が、テーブル作成クエリーでクエリー結果を抽出した後にそのテーブルにもう一つオートナンバー型のフィールドを追加すると自動的に連番がふられますよ。

start1
質問者

お礼

ありがとうございました。さっそくやってみます。

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.3

クエリに自動で連番を付加する機能はありません。(断言) テーブルに[連番]フィールドを作って、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 なんかあったら、補足をお願いします。

start1
質問者

お礼

詳細にありがとうございます。なんか見てるだけでむずがゆくなってしまいそうです。まだまだこのレベルは難しいかな。

  • tepapapa
  • ベストアンサー率23% (7/30)
回答No.2

クエリーではなく、レコードセットではダメでしょうか? 例えば以下のような感じで・・・ 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)
回答No.1

回答らしい回答ではないのですが、私も以前クエリーで抽出結果にオートナンバーを付した処理をやりたかったのですが、Access単体ではうまくいかないようです。 実現するには、VBで作成しないといけないようです。 (その時は、オートナンバーの機能はあきらめました。)

関連するQ&A