VB初心者なのですが、学校の課題でVBを使い簡単なクイズゲームを作ろうと思っています。
クイズは、乱数を使ってランダムに問題を表示させる形式を取っており、マイクロソフトのアクセスで作ったデータベースから問題のデータを取得するというやり方にしようと思っています。
そこで、いざプログラミングしてみたところ、データベースを読み込み、乱数を記述するところまでは上手くいったのですが、
SQLCm.CommandText = SELECT (項目の名前) FORM (クエリー(?)の名前) WHERE (問題番号を記述した項目の名前) = (乱数の名前)
と記述すると、なぜか
Cn.Open()
Value = SQLCm.ExecuteScalar
Cn.Close()
の、二行目でエラー(例外だったかもしれません)が発生し、無理矢理起動してみても、指定したラベルに何も表示されません。
先生に見ていただいたところ、変数を定義したり、データベースにアクセスできていないというわけではないとのことでした。実際、乱数のところを普通の数字に変えると、データベースに記述されている通りの問題が表示されました。
どなたか、アドバイスをいただけませんでしょうか?
また、原因を教えていただけると助かります。
初歩的な質問をして申し訳ありません。沢山のサイトや過去の質問を見てみたのですが、答えにたどり着けませんでした。
是非、ご指南の方をよろしくお願いします。
No.5ベストアンサー
- 回答日時:
何度も分けて書いて申し訳ありませんが…
乱数のところを数字に変えるとうまくいく、んですよね。
だとすると…SQL文のところを、例えば
"SELECT QuestionString FROM QuestionTable WHERE QuestionNumber = RandomNumber"
みたいに書いてませんか?
上の RandomNumber にあたる部分は、ちゃんと数字(を示す文字列)に変えてやらないとダメです。
SQLCm.CommandText = "SELECT QuestionString FROM QuestionTable WHERE QuestionNumber = " & CStr(RandomNumber)
みたいな感じで。
SQL文はあくまで文字列ですので、変数名を記述しても勝手に変換してくれたりは しません。
回答ありがとうございました。
CSrt(RandomNumber)と記述したところ、正常に動きました!
ダブルクオーテーションがついている時点で、文字列だということに気がつくべきでした……
初歩的な質問にも関わらず、何度も丁寧に答えていただき本当にありがとうございました!
No.4
- 回答日時:
あ、ついでに気になったのですが、SQL文はちゃんと "(ダブルクオーテーション)で括ってますか?
CommandText(と言うより、コードに記述するSQL文は全て、と言った方がいいか?)は
あくまで文字列ですからね。
No.3
- 回答日時:
>SQLCm.CommandText = SELECT (項目の名前) FORM (クエリー(?)の名前) WHERE (問題番号を記述した項目の名前) = (乱数の名前)
FORM ではなく、FROM です。
…そういう問題じゃない?
No.2
- 回答日時:
課題ですので、考え方を
>実際、乱数のところを普通の数字に変えると、データベースに記述されている通りの問題が表示されました。
であれば、
SQLCm.CommandText をイミディエィトウインドウなどに表示させてみて、意図されているものになっているか確認してみたらどうでしょうか?
(乱数の名前)を数字に変えると動くんですよね。
(乱数の名前)は数字で表示されますか?
回答ありがとうございます。
課題ということで、考え方を教えてくださったご配慮に感謝しております。
おかげさまで、プログラムが動かない原因が分かりました!
ただ答えを教えていただけるより、ずっと頭に残りました。今後とも忘れることは無いと思います。
本当にありがとうございました!
No.1
- 回答日時:
(1)乱数で発生させたコードがDB上に存在しない。
例えば、問題番号が1~9なのに、乱数で作ったキーが0だとか・・・
(2)乱数の使い方が誤っている。
ところで、(問題番号を記述した項目)の属性は何ですか?
整数で連続したものでないと、おそらく成功しないと思いますよ。
回答ありがとうございました。
1も2も、確認したところきちんと動作していました。
属性についてのご指南、ありがとうございました。
新しくデータベースを製作する予定ですので、その時にはしっかりと気をつけようと思います。
ご解答、ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
部分点の採点の付け方について。
-
行政書士試験の記述式問題です...
-
VBを介したデータベース閲覧に...
-
Powerpointを用いた論文の発表...
-
行政書士試験記述式問題について
-
行政書士試験 記述式問題 採...
-
秘書検定2級の記述問題について
-
エクセルのCELLS関数で複数セル...
-
新生児高ビリルビン血症の看護
-
減価償却資産の法定耐用年数を...
-
スラッシュが複数あるURLを見た...
-
行政書士試験の合格基準
-
司法試験予備試験を旧字体で解...
-
こんなに下手なのに明日仮免!...
-
「ものとする」 「こと」 「...
-
【悲報】公務員試験の最終面接...
-
法律の勉強がしたいのですが・・・
-
A又はBは、AとB両方を法律的に...
-
司法書士は高卒、身体障害者で...
-
公務員試験の数学
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
部分点の採点の付け方について。
-
グーグルフォームのアンケート...
-
複合任意は数学の記述で使って...
-
レポートとかでの「述べよ」と「...
-
昔トリビアの泉で、フォルテは...
-
転置行列の記号を書く方法(TeX)
-
Excel VBA BeforeSaveが動作し...
-
司法試験予備試験を旧字体で解...
-
アンモニア(NH3)の熱分解温度
-
振動試験の掃引について
-
研究する文献がたくさんありま...
-
減価償却資産の法定耐用年数を...
-
電気のSHC、SHTって何ですか?
-
Powerpointを用いた論文の発表...
-
TCP/IPにおけるRSTの送出方法
-
宅建の質問です 下の問題の答え...
-
H24行政書士試験 記述の採点を...
-
行政書士試験の記述式問題です...
-
不作為に関しての不服申し立て...
-
アステラス製薬は株式分割した...
おすすめ情報