
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で質問しましょう!
似たような質問が見つかりました
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- フリーソフト 色々な形式の個人情報を後で参照しやすいようWindow10で管理したいのですが、どんな方法があるの? 1 2023/04/29 16:46
- JavaScript Q&Aの掲示板を作成していてヤフー知恵袋やgoo質問のように質問ごとにURLを生成したい 5 2023/08/04 01:22
- その他(データベース) Q&Aフォームを作成したいのですが、どう設計してよいか分かりません、アドバイスお願い致します。 1 2023/07/27 19:04
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- PHP PHPで訪問回数を表示するカウンタを作成したい 3 2023/05/27 07:09
- Excel(エクセル) ユーザー関数の自動計算(excel2003) 1 2023/02/06 06:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBを介したデータベース閲覧に...
-
転置行列の記号を書く方法(TeX)
-
平成21年度行政書士試験記述式...
-
スラッシュが複数あるURLを見た...
-
関数の式が思ったとおりに働かない
-
部分点の採点の付け方について。
-
A又はBは、AとB両方を法律的に...
-
行政書士試験は3ヶ月勉強して...
-
「ものとする」 「こと」 「...
-
法律の条文で、○条という時にな...
-
法律の条番号の枝番号の意味
-
行政書士のお勧めの学校を教え...
-
FPの学校でお勧めは?!
-
「独学で心理学を学ぶ」 正し...
-
こんなに下手なのに明日仮免!...
-
司法試験について
-
一段階のみきわめ通りません...
-
司法書士の模擬試験がボロボロ...
-
ネットワークビジネスについて
-
条文の直前の行にある( )に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
部分点の採点の付け方について。
-
グーグルフォームのアンケート...
-
Excel VBA BeforeSaveが動作し...
-
複合任意は数学の記述で使って...
-
昔トリビアの泉で、フォルテは...
-
転置行列の記号を書く方法(TeX)
-
句読点の記述の仕方について 記...
-
振動試験の掃引について
-
レポートとかでの「述べよ」と「...
-
1秒以下のApplication.Waitは可...
-
減価償却資産の法定耐用年数を...
-
「同時履行の抗弁権」について
-
Oracle 10g/11での外部結合につ...
-
司法試験予備試験を旧字体で解...
-
関数の式が思ったとおりに働かない
-
エクセルのCELLS関数で複数セル...
-
宅建の質問です 下の問題の答え...
-
アンモニア(NH3)の熱分解温度
-
電気のSHC、SHTって何ですか?
-
行政書士試験の民法についての...
おすすめ情報