OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

アクセスでサブフォームのレコードを取得したい。

  • 困ってます
  • 質問No.193731
  • 閲覧数1920
  • ありがとう数3
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 46% (6/13)

教えてください!!MS accessにてサブフォームのレコードの数やレコードの内容をVBAにて取得したいと考えてます。その結果によって、条件分岐がしたいので・・・。現在は、サブフォームのフッターに=count(*)のテキストボックスを作り、この値を取得しています。もう少しスマートに(直接)取得できないのでしょうか?ちなみに(サブフォームの)コントロール名.form.countでやってみると、違う数字が出てきます。この数字はいったいなんでしょうか?
お願いします。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全2件)

  • 回答No.1
レベル10

ベストアンサー率 61% (75/121)

うろ覚えですが、最後のレコードまで移動しないと、直接カウントを取っても ご質問の通り、正しい値は帰ってこないと思います。 私なら、以下の方法を使います。 1."RecordsetClone"を使って、下記の例のように"MoveLast"をかけてから、カウントを取る。 (例) Private Sub コマンド1_Click() Dim DB As DA ...続きを読む
うろ覚えですが、最後のレコードまで移動しないと、直接カウントを取っても
ご質問の通り、正しい値は帰ってこないと思います。
私なら、以下の方法を使います。

1."RecordsetClone"を使って、下記の例のように"MoveLast"をかけてから、カウントを取る。
(例)
Private Sub コマンド1_Click()
Dim DB As DAO.Database
Dim RS As DAO.Recordset
Set DB = CurrentDb
Set RS = Me.RecordsetClone
RS.MoveLast
MsgBox RS.RecordCount
End Sub

2.直接SQL文で数える
(例)
Private Sub コマンド1_Click()
Dim DB As DAO.Database
Dim RS As DAO.Recordset
Dim StSQL As String
Set DB = CurrentDb
StSQL = "select count(*) as 件数 from テーブル1"
Set RS = DB.OpenRecordset(StSQL)
MsgBox RS!件数
End Sub

参考になれば幸いです。

  • 回答No.2
レベル10

ベストアンサー率 61% (75/121)

#1のsghです。 もっとシンプルな方法があったので、アップしておきます。 Private Sub コマンド1_Click() Me.RecordsetClone.MoveLast MsgBox Me.RecordsetClone.RecordCount End Sub #1の回答1と同じ考え方ですが、これだとDAOの参照も不要のようです。 コードの例は、開いているフォーム自身のレコ ...続きを読む
#1のsghです。
もっとシンプルな方法があったので、アップしておきます。

Private Sub コマンド1_Click()
Me.RecordsetClone.MoveLast
MsgBox Me.RecordsetClone.RecordCount
End Sub

#1の回答1と同じ考え方ですが、これだとDAOの参照も不要のようです。
コードの例は、開いているフォーム自身のレコードを参照しているので、
サブフォームを参照するように書き換えてください。
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ