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

ランダムでデータ取得したい

  • すぐに回答を!
  • 質問No.212569
  • 閲覧数241
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 0% (0/4)

こんばんは。
初歩的なことなんですがどうしても解決できないので書き込みしました。

VBScriptで検索結果をランダムで取得し、
表示するプログラムを作成してみたんですが
うまく動作しません。

以下がソースです。

SQL = ""
SQL = SQL & "select NAME" & vbCrlf
SQL = SQL & " from TBL" & vbCrlf

'実行
Set rs = conn.Execute(SQL)

'レコードカウント取得~検索結果14件
rsCnt = rs.RecordCount

'ここで変数を最大値で設定できないのでしょうか?
'ためしに実数(今回は14)を挿入すると動作しました。
'理想はrs.RecordCountで配列指定したいのですができないです。
'これをするとrs.RecordCountに-1が返ってきてエラーが出ます。
ReDim strName(rsCnt)

'1から14の配列を取得する
intIdx=1
Do until rs.Eof
strName(intIdx)=rs("NAME")
intIdx=intIdx+1
rs.MoveNext
Loop

'データ表示
For intCnt = 1 to rsCnt
'この中でRnd関数を使ってみました。
'配列で実数を使用した場合、ここまで来るのですが
'その結果をランダムで表示したかったので
'RandomizeとRnd関数を使用しましたが
'重複データが出てきてしまいます。
'
Randomize
index=Rnd*rsCnt+1

以上なんですが解決方法があれば
是非ご指導お願いします。

Takeshi Takahashi 2002/02/06
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル9

ベストアンサー率 46% (29/62)

↓のように辞書配列を用いれば出来ますよ。

Set dictData = Server.CreateObject("Scripting.Dictionary")
Randomize
do while dictData.count <> 14
index=Int((14) * Rnd) + 1
if Not dictData.Exists(index) Then dictData.Add index,strName(index)
loop


akeys = dictData.keys
for i = 0 to dictData.count - 1
Response.Write dictData.item(akeys(i)) & <BR>
Next
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.2
レベル9

ベストアンサー率 46% (29/62)

補足です 「Execute」メソッドを実行しても Recordset は返されません 「OpenRecordset」メソッドで行ってください
補足です

「Execute」メソッドを実行しても Recordset は返されません
「OpenRecordset」メソッドで行ってください
このQ&Aで解決しましたか?
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

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

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

特集


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

-PR-

ピックアップ

-PR-
ページ先頭へ