
配列を使ってクエリの値を変数にしたいと考えていますが、
変数として見ず、文字列としてみているようです。
*********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を探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS2010について質問です。
-
アクセスのテーブルのフィール...
-
ACCESS DCOUNTの抽出条件について
-
SQLServer→Access インポート
-
アクセスで連続データをテーブ...
-
Access vbaで重複レコードの削...
-
T-SQL(1件のみの取得)(再度)
-
重複した複数のレコードを1レ...
-
sql文で削除クエリを書く
-
ACCESS VBAでテーブル内の特定...
-
DAOでSQLServerに接続し、LeftJ...
-
データがあれば○○なければのSQL
-
Access BetweenとLikeの組み合...
-
アクセスで定数を利用したい。
-
ACCESSで購入回数を表示する方...
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
CloseとDisposeの違い
-
Excelシート上のマクロを登録し...
-
【Excel】特定の文字を含むセル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データがあれば○○なければのSQL
-
ACCESS DCOUNTの抽出条件について
-
【access】複数のフィールドの...
-
Access vbaで重複レコードの削...
-
ACCESS VBAでテーブル内の特定...
-
アクセスで定数を利用したい。
-
sql文で削除クエリを書く
-
SQLServer→Access インポート
-
ACCESSで実行時エラー3008
-
VBAでテーブル名とカラム名を動...
-
VB.NETでテーブルを作成
-
アクセスで連続データをテーブ...
-
重複した複数のレコードを1レ...
-
Accessで縦と横を入れ替えたい
-
別のaccessファイルからデータ...
-
アクセスのテキスト型フィール...
-
抽出条件でデータ型が一致しま...
-
Access から Excelのシートをイ...
-
Accessリンクするテーブルが見...
-
ACCESSのクエリ、SQLに変数を使...
おすすめ情報