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

A 回答 (4件)

先に回答している方の言うとおり、クエリーで連番はつけれません。


が、テーブル作成クエリーでクエリー結果を抽出した後にそのテーブルにもう一つオートナンバー型のフィールドを追加すると自動的に連番がふられますよ。
    • good
    • 0
この回答へのお礼

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

お礼日時:2000/12/15 19:42

クエリに自動で連番を付加する機能はありません。

(断言)

テーブルに[連番]フィールドを作って、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


なんかあったら、補足をお願いします。
    • good
    • 0
この回答へのお礼

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

お礼日時:2000/12/15 19:44

クエリーではなく、レコードセットではダメでしょうか?



例えば以下のような感じで・・・

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

これで一応は抽出した項目にナンバーをつけて表示できます。
どうしてもクエリーで・・・となると分かりません。
どなたか分かる方よろしくお願いします!
    • good
    • 0

回答らしい回答ではないのですが、私も以前クエリーで抽出結果にオートナンバーを付した処理をやりたかったのですが、Access単体ではうまくいかないようです。


実現するには、VBで作成しないといけないようです。
(その時は、オートナンバーの機能はあきらめました。)
    • good
    • 0

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


人気Q&Aランキング