3

MS Access を介して SQL クエリを実行すると、結果が返されますが、VBScript で同じクエリを実行すると、RecordCount が -1 になります。これが接続エラーかどうかはわかりません。何も得られませんが、SQL が Access で結果を返すことは明らかです。以下の接続コードで 0 ヒットを取得しています。

sqlquery = "SELECT * FROM i2cner WHERE Authors Like 'Ish*';"
dim conn
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "d:/inetpub/ga/sarina/i2cner/contacts2000.mdb"
set r = Server.CreateObject("ADODB.recordset")
if r.state = 1 then r.close
r.Open sqlquery, conn
hits = r.RecordCount
session("hits") = hits
set session("r") = r
4

2 に答える 2

1

レコード数だけが必要な場合は、次のように指定できます

sqlquery = "SELECT COUNT(*) AS cnt FROM i2cner WHERE Authors LIKE 'Ish%'"

;SQL 文字列にno がないことに注意してください。カウントを取得する必要がある場合は、

hits = r.fields("cnt")

また

hits = r("cnt")

Recordcountは時々欺瞞的なので、私はあまり使いません。私は毎回上記のアプローチを使用します。

于 2013-02-18T04:43:54.843 に答える
1
r.CursorLocation = 3 'adUseClient. Thanks @HansUp

を使用する前に上記の行を追加してくださいr.Open。です。
_ その結果、進行するにつれてレコードが取得されます (.net データリーダーと同様)。に変更すると、クライアント側にすべてのレコードが表示され、正しい.CursorLocationadUseServeradUseClientRecordCount

編集:また、レコードセットをセッションに保存することは意味がありません。そして、使い終わったら接続を閉じる必要があります -

conn.Close set conn = Nothing

セッションにレコードセットを保存する必要は何ですか?

于 2013-02-18T07:08:39.740 に答える