- - PR -
DropDwonList.SelectedItem.ValueとDB比較
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-02-04 14:44
ASP.NET(WebMatrix使用)でWebアプリケーションを開発しています。
言語はVB.NET、DBはMSDE、開発マシンはXPです。 DropDownListのSelectedIndexChangedイベント処理で、SelectedItem.Valueの値がDBテーブルカラムの値と一致したデータを抽出し別のDropDownListのDataSourceにしようとしています。 ですが、値比較をすると、 '/' アプリケーションでサーバー エラーが発生しました。 ------------------------------------------------------------------------------ 列のプレフィックス 'dprl_post.SelectedItem' は、テーブル名と一致しないか、クエリ内の別名と一致しません。 というエラーが発生します。 次のようなコードを記述しています。 Dim sCmd_process as System.Data.SqlClient.SqlDataAdapter Dim sConn As System.Data.IDbConnection = New ystem.Data.SqlClient.SqlConnection(connectionString) Dim strSQL_process as String= "SELECT process_code, process_name FROM process_master WHERE process_master.post_code = dprl_post.SelectedItem.Value " sCmd_process = new ystem.Data.SqlClient.SqlDataAdapterstrSQL_process,sConn) ds_process = New DataSet() WHERE句でDBテーブル(process_master.post_code)とDropDownList(dprl_post)のSelectedItem.Valueを比較しているのですが、このような記述では比較ができないのでしょうか? ちなみに、dprl_post.SelectedItem.Value部を数字に書換え実行すると、意図するデータが抽出され別のDropDownListに登録されます。 process_master.post_codeとdprl_post.SelectedItem.Valueの型が違うという意味なのでしょうか? どうしたら上記の比較ができるのか、どなたかご教授お願いいたします。 |
|
投稿日時: 2005-02-04 15:12
発行したいSQLは
"SELECT process_code, process_name FROM process_master WHERE process_master.post_code = dprl_post.SelectedItem.Value" ではなくて "SELECT process_code, process_name FROM process_master WHERE process_master.post_code = 1" ですよね?(dprl_post.SelectedItem.Valueが1の場合) 文字列内に変数名を書いても、それは文字列として扱われ、変数の中身(今回だと1)にはなりません。 ようするに "SELECT process_code, process_name FROM process_master WHERE process_master.post_code = dprl_post.SelectedItem.Value" がそのままデータベースにSQLとして発行され dprl_post.SelectedItem という部分が テーブル名.カラム名 と解釈され dprl_postテーブルなんかDBにはないよと怒られているのです。 なので SELECT文を "SELECT process_code, process_name FROM process_master WHERE process_master.post_code = " & dprl_post.SelectedItem.Value とするとうまくいきます。 本来ならSqlParameterを使用するのが好ましいですが。。。 時間があったら調べてみることをおすすめします。 |
|
投稿日時: 2005-02-09 09:44
burton999さま、回答ありがとうございます。
やはり文字列内に変数名を書いたのがエラー原因だったのですね。 そこまでは推測できたのですが、どのように変更すれば良いのかがわかりませんでした。 アドバイスのとおりに変更しましたら、意図するListItem生成ができるようになりました。 ありがとうございます。 >本来ならSqlParameterを使用するのが好ましいですが。。。 については、しっかりと勉強しておきます。 |
1