Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Access 2016)
連番コードのエラー
投稿日時: 18/10/29 07:46:51
投稿者: ゴマゴマ

お世話になります。
テーブル1のフィールド1を基準にフィールド2に連番を振りたいのですが下記の通りエラーになってしまいます。
 

cnt = DCount("*", "テーブル1", "フィールド1<=" & [フィールド1])"←黄色になる

 
実行時エラー'2465':
指定した式で参照されている'|1'フィールドが見つかりません。
 
フィールド1は数値型です。解決方法をご教示ください。

回答
投稿日時: 18/10/29 10:34:11
投稿者: Suzu

ゴマゴマ さんの引用:
cnt = DCount("*", "テーブル1", "フィールド1<=" & [フィールド1])"←黄色になる

 
実行時エラー'2465':
指定した式で参照されている'|1'フィールドが見つかりません。

 
この内容は、VBEにて書いているコードですよね。
VBEからみて、「フィールド1」が クエリ(またはテーブル)という事は認識できません。
 
表記の式は、クエリの中の演算式で使用するので、「フィールド1」をテーブル内で探すのです。
と言うか。。。
この演算式は、クエリにおいて、
同じレコードの演算フィールドで、フィールド1の昇順に連番をつけてくれます。
 
つまり、複数のレコードに対して有効ですが、これを単にVBAで使用してもループ処理をしないかぎり
1回のみの処理ですので、希望の動作にはならないと思いますが。。

投稿日時: 18/10/30 07:11:28
投稿者: ゴマゴマ

Suzu 様
 
いつもありがとうございます。私は大変な無知者のようです。いろいろ調べたところ下記の通りで出来ました。追加でお聞きしたいことがあるので別途質問させていただきます。ありがとうございました。

Dim フィールド2 As String
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("テーブル1", dbOpenDynaset)
Dim n As Integer
Do Until rs.EOF
rs.Edit
rs.Fields("フィールド2") = n + 1
n = n + 1
rs.Update
rs.MoveNext
Loop
rs.Close