![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?a65a0e2)
配列を使ってクエリの値を変数にしたいと考えていますが、
変数として見ず、文字列としてみているようです。
*********test.asp***************
kyoku1 = Request.Form("kyoku1")
kyoku2 = Request.Form("kyoku2")
kyoku3 = Request.Form("kyoku3")
(kyoku1~3は前のページのフォームから値を持ってきています。)
Dim k(2)
Dim m(2)
Dim jj
jj = 0
k(0) = kyoku1
k(1) = kyoku2
k(2) = kyoku3
m(0) = kyokumei1
m(1) = kyokumei2
m(2) = kyokumei3
Set db=Server.CreateObject("ADODB.Connection")
db.Provider = "Microsoft.Jet.OLEDB.4.0"
db.ConnectionString = Server.MapPath("DB名")
db.open
Do While j < 3
Set rs = db.Execute("SELECT テーブル名.* FROM テーブル名 WHERE ((テーブル名.番号)='"&k(jj)&"')")
m(0) = rs.Fields.Item("曲名")
j = j + 1
jj = jj + 1
Loop
Response.Write(" & kyokumei1 & ")
Response.Write(" & kyokumei2 & ")
Response.Write(" & kyokumei3 & ")
宜しくお願い致します。
No.7ベストアンサー
- 回答日時:
生成されたコードに問題がないのであればEOF/BOFになる可能性が低いのですが ・・・
EOF/BOFになるのは WHERE句の指定が不正でレコードを特定できない場合に起きると思います
No.6
- 回答日時:
k(j)で渡していますが jの値は適正ですか?
for j=0 to 2
Response.Write( "SELECT テーブル名.* FROM テーブル名 WHERE ((テーブル名.番号)='" & k(j) & "')<br>" )
Next
を実行して 適切なSQL文になっているのか確認しましょう
回答ありがとうございます。
返信遅れて申し訳ありません。
実行しましたが、以下のように問題なくなっていると思います。
SELECT テーブル名.* FROM テーブル名 WHERE ((テーブル名.番号)='1000')
SELECT テーブル名.* FROM テーブル名 WHERE ((テーブル名.番号)='10099')
SELECT テーブル名.* FROM テーブル名 WHERE ((テーブル名.番号)='12312')
がうまくいきません。
どうすればいいのでしょうか。
宜しくお願い致します。
No.5
- 回答日時:
Dim宣言で2までしか宣言していないのに jjが3ならエラーになって当然ですよ
<!-- 下記3行はOK -->
Response.Write("" & m(0) & "<br>" )
Response.Write("" & m(1) & "<br>" )
Response.Write("" & m(2) & "<br>" )
<!-- この行はエラー -->
Response.Write("" & m(3) & "<br>" )
回答ありがとうございます。
インデックスの範囲のエラーは解消致しました。
ありがとうございました。
やはりうまくいきません。
(1)Set rs = db.Execute("SELECT テーブル名.* FROM テーブル名 WHERE ((テーブル名.番号)='" & k(j) & "')")
(2)Set rs = db.Execute("SELECT テーブル名.* FROM テーブル名 WHERE ((テーブル名.番号)='" & k(0) & "')")
(2)だと問題ないのですが、(1)だとエラーになります。
エラーメッセージは以下のようになっています。
BOF と EOF のいずれかが True になっているか、または現在のレコードが削除されています。要求された操作には、現在のレコードが必要です。
また、最初に書きました、以下のコードもうまくループしません。
上記の(2)にしたとき、
m(j) = rs.Fields.Item("曲名")
Response.Write(""& m(j) &"<br>")
j = j + 1
m(0)の値は出力されますが、m(1)と続いていきません。
m(0)の値はLOOPの回数表示されます。
宜しくお願い致します。
No.4
- 回答日時:
SQLを組み立ててResponse.Writeで組み立てたSQL文を出力した際に
SELECT テーブル名.* FROM テーブル名 WHERE ((テーブル名.番号='k(jj)'))
といった具合になってしまうということでしょうか
k(jj)の前後の&は & k(jj) & といった具合に スペースを空けたほうがいいですよ
エラーになっているのであればその内容などを投稿してみてはいかがでしょう
回答ありがとうございます。
そうなります。
Response.Write(""& k(0) &"<br>")
Response.Write(""& k(jj) &"<br>")
上の1行目だと問題ないのですが、
2行目に変更すると、
「インデックスが有効範囲にありません。: '3'」
のメッセージになります。
スペースのご指摘ありがとうございました。
宜しくお願い致します。
No.2
- 回答日時:
すいません、何がどうなればいいのか、これだけでは、
イマイチ見えないのですが、「クエリの値」の値とは、
Set rs = db.Execute("SELECT テーブル名.* FROM テーブル名 WHERE ((テーブル名.番号)='"&k(jj)&"')")
でSQL実行した後の「曲名」を指しているということでしょうか?
それから、kyokumei1~kyokumei3は、
m(0) = kyokumei1
m(1) = kyokumei2
m(2) = kyokumei3
のように代入してますが、そもそもmという配列に
kyokumei1~kyokumei3を代入する意味があるんでしょうか?
それとも、他で使われているのでしょうか?
さらに、Set rs = ...... の「rs」は、レコードセットだと
思いますが、ADORecordSetでよろしいですか?
UPするソースコードと「何が」「どうなってしまう」という
現象を具体的に明示して頂くと、正確な回答がしやすいので、
もう少し、質問したい箇所のソースコードを整備したうえで
補足頂けますか?
よろしくお願いします。
回答ありがとうございます。
言葉足らずで申し訳ありません。
補足させていただきます。
>すいません、何がどうなればいいのか、
フォームで番号を入力させて、
その値をtest.aspに持ってきて、
ACCESSでクエリをさせて、
番号に対して、曲名をひっぱってきます。
そして、その曲名を表示させたいと考えています。
>「クエリの値」の値とは、
>Set rs = db.Execute("SELECT テーブル名.* FROM テーブル名 WHERE >((テーブル名.番号)='"&k(jj)&"')")
>でSQL実行した後の「曲名」を指しているということでしょうか?
「曲名」と「番号(k(jj))」を変数にしたいと考えています。
>のように代入してますが、そもそもmという配列に
>kyokumei1~kyokumei3を代入する意味があるんでしょうか?
>それとも、他で使われているのでしょうか?
申し訳ありません。
m(0) = rs.Fields.Item("曲名")
は
m(jj) = rs.Fields.Item("曲名")
の間違いでした。
>さらに、Set rs = ...... の「rs」は、レコードセットだと
>思いますが、ADORecordSetでよろしいですか?
こちらは、他のページでも使用していますので、
問題ないかと思います。
もともと以下のコードで作成しましたが、
長すぎてなんとかするために配列を使用しようと考えました。
************元のコード************************
Set rs = db.Execute("SELECT テーブル名.* FROM テーブル名 WHERE ((((テーブル名.番号)='" & kyoku1 & "')")
kyokumei1 = rs.Fields.Item("曲名")
Set rs = db.Execute("SELECT テーブル名.* FROM テーブル名 WHERE ((((テーブル名.番号)='" & kyoku2 & "')")
kyokumei2 = rs.Fields.Item("曲名")
Set rs = db.Execute("SELECT テーブル名.* FROM テーブル名 WHERE ((テーブル名.番号)='" & kyoku3 & "')")
kyokumei3 = rs.Fields.Item("曲名")
Set rs = db.Execute("SELECT テーブル名.* FROM テーブル名 WHERE ((テーブル名.番号)='" & kyoku4 & "')")
kyokumei4 = rs.Fields.Item("曲名")
Response.Write(" & kyokumei1 & ")
Response.Write(" & kyokumei2 & ")
Response.Write(" & kyokumei3 & ")
Response.Write(" & kyokumei4 & ")
************元のコード************************
宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- Access(アクセス) 実行時エラー3131 FROM 句の構文エラーです について 7 2022/06/13 15:45
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- IT・エンジニアリング ドメイン駆動設計の値オブジェクトについて質問 1 2023/05/13 02:50
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- 数学 写真の数学の問題についてです。 (x+ky/2+1/2√Dx)(x+ky/2−12√Dx) の√Dを 5 2023/03/16 09:48
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【access】複数のフィールドの...
-
ACCESS VBAでテーブル内の特定...
-
アクセスで定数を利用したい。
-
別のaccessファイルからデータ...
-
ADOでAccessファイルに接続して...
-
access vbaで前景色を指定したい
-
ACCESSで実行時エラー3008
-
ACCESS DCOUNTの抽出条件について
-
Access vbaで重複レコードの削...
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
月度は何て読みますか?
-
UPS警告音を止めたい
-
【Excel】特定の文字を含むセル...
-
CloseとDisposeの違い
-
Excelシート上のマクロを登録し...
-
「PC Helpsoft Driver Updated...
-
DoEventsがやはり分からない
-
【Excel VBA】マクロボタンを表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データがあれば○○なければのSQL
-
ACCESS DCOUNTの抽出条件について
-
VBAでテーブル名とカラム名を動...
-
ACCESS VBAでテーブル内の特定...
-
Access vbaで重複レコードの削...
-
SQLServer→Access インポート
-
アクセスで定数を利用したい。
-
【access】複数のフィールドの...
-
sql文で削除クエリを書く
-
重複した複数のレコードを1レ...
-
ACCESSで実行時エラー3008
-
DAOでSQLServerに接続し、LeftJ...
-
Accessで縦と横を入れ替えたい
-
アクセスで連続データをテーブ...
-
Accessリンクするテーブルが見...
-
抽出条件でデータ型が一致しま...
-
別のaccessファイルからデータ...
-
access追加クエリーでform入力...
-
ACCESSで購入回数を表示する方...
-
ACCESSのクエリ、SQLに変数を使...
おすすめ情報