- - PR -
VB.NET SQL の検索結果をテキストボックスに表示したい
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-07-11 16:42
お久しぶりです。nariと申します。
別の仕事が忙しくなってしまい、しばらくASP.NETが停滞していましたが、 多少余裕ができてきたので、再度取り掛かりました。 そしてまた・・・初歩的なところでつまずいていると思います。 なにとぞアドバイスをいただきたく。 --環境-- OS:Windows Server 2003 .NET framework 1.1 言語:VB.NET(WebMatrix) --やりたい事-- SQL サーバー上には、次のようなテーブルがあります。 テーブル名:Logs テーブル構造: ID:Char(15)(重複なし) Status:Chare(10) LastModefy:datetime aspx上に、テキストボックスを3つ(ID)(Status)(modefy)と、ボタン(search)がひとつあります。 (ID)に、任意の文字を入力し、(search)をクリックすると、(status)と(date)に検索結果を表示したいと考えています。 検索結果が無い場合などのエラー処理については今回はとりあえず無視してください。 --書いてみたコード-- dim conn as new sqlconnection() conn.connectionstring = "data source=localhost;Initial Catalog=logs;Integrated Security=SSPI;" dim cmd_Search as new sqlcommand() cmd_search.CommandText = "select status,LastModefy from Logs where ID=@ID" cmd_search2.connection = conn5 dim ID2 as sqlparameter = cmd_Search.parameters.add("@ID", system.data.sqldbtype.varchar, 15) ID2.value = ID.text Dim reader As SqlDataReader conn5.open() reader = cmd_search2.ExecuteReader() Status.text = reader.getstring(status) Modefy.text = reader.getstring(LastModefy) conn5.close() --実行時のエラー-- コンパイル エラー メッセージ: BC30311: 型 'System.Web.UI.WebControls.TextBox' の値を 'Integer' に変換できません。 ほぼ間違いなく、データ型の問題(何度ここでつまずいているやら・・・)かと思いますが、検索結果をテキストやプルダウンで表示させる方法について、ググってもみたのですが、目当てのものを見つけることができませんでした。 なにとぞ、アドバイスいただけますよう、お願いします。 | ||||||||||||||||
|
投稿日時: 2006-07-11 18:01
検索結果をテキストやプルダウンで表示させる以前の問題だと思われますが...。
トリアーエズどの行でエラーが発生しているか分かりますか? | ||||||||||||||||
|
投稿日時: 2006-07-11 18:04
コンパイル エラーは、実際にどこで起きていますか? 提示されたソース上には該当箇所がないように思えますが... # それと、件名と質問が一致していません... # 実行時の例外ならともかく 「コンパイル エラー」ですから。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||
|
投稿日時: 2006-07-12 09:26
Yamさん、じゃんぬねっとさん
返信ありがとうございます。 ちょっとコードにミスがありました。。(実際はもっと長いコードから抜粋して一部修正していましたので、修正ミスが・・) >Yamさん おそらく、間違えているのはこのあたりかと。 reader = cmd_search.ExecuteReader() tanto.text = reader.getstring(tanto) Modefy.text = reader.getstring(LastModefy) >じゃんぬねっとさん 上記のコードだけで実行して、同じコンパイルエラーが出てしまいます。 コンパイル エラー メッセージ: BC30311: 型 'System.Web.UI.WebControls.TextBox' の値を 'Integer' に変換できません。 ソース エラー: 行 21: conn.open() 行 22: reader = cmd_search.ExecuteReader() 行 23: tanto.text = reader.getstring(tanto) 行 24: Modefy.text = reader.getstring(LastModefy) 行 25: そもそも、tanto.text = reader.getstring(SQLのカラム名)という指定でよいものなのか?という疑問点があり、質問させていただいてもいます。 SQLのカラム名とテキストボックスの名前が同じことに起因? ----コード Sub cmd_Search_Click(sender As Object, e As EventArgs) dim conn as new sqlconnection() conn.connectionstring = "data source=localhost;Initial Catalog=logs;Integrated Security=SSPI;" dim cmd_Search as new sqlcommand() cmd_search.CommandText = "select tanto,LastModefy from Logs where ID=@ID" cmd_search.connection = conn dim ID2 as sqlparameter = cmd_Search.parameters.add("@ID", system.data.sqldbtype.varchar, 15) ID2.value = ID.text Dim reader As SqlDataReader conn.open() reader = cmd_search.ExecuteReader() tanto.text = reader.getstring(tanto) Modefy.text = reader.getstring(LastModefy) conn.close() End Sub | ||||||||||||||||
|
投稿日時: 2006-07-12 09:45
試しにテキストボックスをもう一つダミーで作って、そっちに渡してみては?(^ー^ | ||||||||||||||||
|
投稿日時: 2006-07-12 09:46
「おそらく」ではなく発生箇所を明確にして下さい。 発生箇所を把握するのは問題解決の第一歩です。 | ||||||||||||||||
|
投稿日時: 2006-07-12 09:47
(タスク一覧を見れば場所は特定できるのに、なぜ "このあたりかと" なんでしょう?) 今、良く見たら、GetString メソッドの引数がおかしいですね。 tanto に、Text メンバがあるところからして、間違いなく型が間違っています。 GetString メソッドの引数は、Integer です。 tanto は、'System.Web.UI.WebControls.TextBox' のインスタンスですよね。 型が違えばコンパイル エラーになります。 LastModefy (Modefy という単語は、この世には存在しないと思いますが) でも起きているとすれば、同じことではないでしょうか? # LastModefy に関しては、型がわからないので 「型が違う」 とは言及できませんでした。
私は、「定義」 の部分も出しましょう、という意味でも書いています。
何故、4 行が該当するんですか? 該当しそうな箇所は、23 行目、24 行目 の 2 行だけだと思います。
いいえ、型を意識していないということから起因しています。 名前が同じことが原因なのではなく、型が間違えているというのが原因です。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||
|
投稿日時: 2006-07-12 11:11
Yamさん、R・田中一郎さん、じゃんぬねっとさん
お返事ありがとうございます。 以下のようにコードを修正したところ、コンパイルエラーはなくなりました。 ---- Sub cmd_Search_Click(sender As Object, e As EventArgs) dim conn as new sqlconnection() conn.connectionstring = "data source=localhost;Initial Catalog=test;Integrated Security=SSPI;" dim cmd_Search as new sqlcommand() cmd_search.CommandText = "select tanto,LastModefy from Logs where ID=@ID" cmd_search.connection = conn dim ID2 as sqlparameter = cmd_Search.parameters.add("@ID", system.data.sqldbtype.varchar, 15) ID2.value = ID.text Dim reader As SqlDataReader conn.open() reader = cmd_search.ExecuteReader() tanto.text = reader.getvalue(0) Modefy.text = reader.getvalue(1) conn.close() End Sub ---- しかしながら、実行すると次のようなエラーになります。 ---- 例外の詳細: System.InvalidOperationException: 存在しないデータを読み取ろうとしました。 ソース エラー: 行 23: tanto.text = reader.getvalue(0) 行 24: Modefy.text = reader.getvalue(1) ---- getstring の場合、Integer を引数に使わなければならないことは理解できたのですが、たとえば0から始まる検索項目の連番を指定する(これは上記で指定してだめなので、間違いでしょうが)、等の細かい点がわかりません。 そもそも、getstring が適切なのかどうかも、アドバイスいただけませんでしょうか。 >じゃんぬねっとさん >私は、「定義」 の部分も出しましょう、という意味でも書いています。 申し訳ありません。定義、という意味では、上に記載したコードのみ指定していて、そのほかは指定していません。 #おそらく、そういうことじゃなくて〜。と思っていらっしゃるかと思いますが、「この設定わからなきゃ返事できない!」という点を具体的に指示いただきたいと思います。 型については、毎度毎度同じところで引っかかっていますので、勉強をしようとは思っているのですが、どういう型があって、どんな形なのかの説明は見つけられても、各クラスで使用している型や変換についての情報がなかなか見当たらず、苦慮しています。 この本がお勧め、とか、このサイトに詳しく出てる、というようなものがありましたら、お教えいただけるとありがたいです。 |
1|2|3
次のページへ»