
Dim con As ADODB.Connection
Dim rsData As ADODB.Recordset
Dim DNSname$,USERname$,PASSw$,cnt&
Set con = CreateObject("ADODB.Connection")
con.Open "DSN=" & DNSname & "; UID= " USERname & "; PWD=" & PASSw
Set rsData = New ADODB.Recordset
rsData.Open SQL, con
Do While Not rsData.EOF
rsData.MoveLast
cnt=rsData.RecordCount
rsData.First
LOOP
といいコードで総レコード数が取得できるかなとやってみたところ、rsData.MoveLastのところで、「行セットは逆フェッチをサポートしていません」というエラーが出ました。
なにかほかの方法で総レコード数を取得する方法があるのでしょうか?
自分で他に試したことは、rsData.EOFまでrsData.MoveNextでもっていきrsData.EOF-1レコードの.RecordCountを取得すしようと試みましたが、最後のレコードまできても.RecordCountは「-1」のまま変化しませんでした。レコードセットの呼び込み方が不味いのでしょうか?
No.4ベストアンサー
- 回答日時:
#2 です。
Set con = CreateObject("ADODB.Connection")
con.CursorLocation = adUseClient
con.Open "DSN=" & DNSname & "; UID= " USERname & "; PWD=" & PASSw
としてみたらどうなりますか?
>con.CursorLocation = adUseClient
の行を追加したら取得できました。
レコードセットのほうになにか設定値があるのかと色々探していましたが、オブジェクトのだったんですね。ありがとうございました。
No.3
- 回答日時:
私の作った7件の社員3テーブルにたいし
(質問のコードを少し簡略化してますが)
Sub test02()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim DNSname$, USERname$, PASSw$, cnt&
Set cn = CurrentProject.Connection
Set rs = New ADODB.Recordset
rs.Open "社員3", cn, adOpenKeyset, adLockOptimistic
cnt = rs.RecordCount
MsgBox cnt
rs.MoveFirst
Do Until rs.EOF
MsgBox rs!氏名
rs.MoveNext
Loop
End Sub
で 7 と出ました。
====
rs.Open "社員3", cn, adOpenKeyset, adLockOptimistic
の adOpenKeyset, adLockOptimistic
を質問のように除くと、-1と出てうまくいかない。
ここが原因でしょう。
http://www.accessclub.jp/vbakaisetu/22.html
参照
この回答への補足
>Set cn = CurrentProject.Connection
部分のCurrentProjectで「変数が宣言されていません」とのエラーが出ましたので
Set con = CreateObject("ADODB.Connection")
にしてimogasiさんのコードを実行したところ(adOpenKeyset, adLockOptimisticはつけました)、cnt は「-1」でした。
CurrentProjectとはどのように宣言するのでしょうか?
No.1
- 回答日時:
con.Open "DSN=" & DNSname & "; UID= " USERname & "; PWD=" & PASSw
Set rsData = con.Execute("SELECT COUNT(*) FROM " & TableName)
MsgBox rsData.Fields(0).Value
のようにSQLで求められませんか? テストしたのはmdbでOracleでは試していませんが…
TableNameのところは置き換えてください
この回答への補足
rsData.Open SQL, conを無効にして
>Set rsData = con.Execute(
でも接続できレコードセットは取得できました。
しかし
>MsgBox rsData.Fields(0).Value
では、そのフィールドの内容が出るだけでレコード総数は求められませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ACCESSのエラーで困っています
Access(アクセス)
-
ADOのCursorLocationプロパティ
Visual Basic(VBA)
-
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
-
4
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
5
レコードセットにnullの場合
Visual Basic(VBA)
-
6
レコードセットの中身を配列に、そしてワークシートに。
Visual Basic(VBA)
-
7
複数のクエリーをVBで書く方法を教えてください。
その他(データベース)
-
8
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
9
Accessのフォーム上にレコード数とレコード番号の表示
その他(データベース)
-
10
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
11
ADO VBA 実行時エラー3021
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
古いレコードを一番高く売る方...
-
ワードの差し込み文書で困って...
-
7インチ(CD?)って・・・
-
子供の頃に持っていた大事なも...
-
ミックとDBのダンシングインザ...
-
CDのジャケットで紙ジャケって...
-
アクセスのレポート、VBAで罫線...
-
レコードの保存について
-
浜田 省吾さんの奥さんって
-
レコードの波打ちを直す方法を...
-
自作歌詞です。
-
GoToRecordで実行時エラー '2105'
-
ミリオンセラー
-
(C)は著作権、(R)は商標...
-
廃盤CDを探すには
-
CDのパッケージに書いてある...
-
顔出ししてないアーティストは...
-
ゲオでインディンジョーンズ運...
-
AVメーカーとレーベルの違いっ...
-
先日、ゲオでCDをレンタルした...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
古いレコードを一番高く売る方...
-
ワードの差し込み文書で困って...
-
ミックとDBのダンシングインザ...
-
レコードの波打ちを直す方法を...
-
GLAYさん
-
差込印刷での条件指定
-
(C)は著作権、(R)は商標...
-
7インチ(CD?)って・・・
-
エクセルからアクセスにデータ...
-
全銀フォーマットで使用する各...
-
エクセルで作った住所録をラベ...
-
VBAでレコードセットの総レコー...
-
レコードの保存について
-
今の時代でもCDを買う人はいる...
-
ポールとポーラ
-
マリア,マーテル グラッチェの...
-
エクセルVBAでアクセスの任意の...
-
ダークダックスのめざせモスクワ
-
アクセスのレポート、VBAで罫線...
-
LPとCDの違い
おすすめ情報