- PR -

DropDwonList.SelectedItem.ValueとDB比較

1
投稿者投稿内容
araariaru
会議室デビュー日: 2005/01/20
投稿数: 14
投稿日時: 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の型が違うという意味なのでしょうか?
どうしたら上記の比較ができるのか、どなたかご教授お願いいたします。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 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を使用するのが好ましいですが。。。
時間があったら調べてみることをおすすめします。

araariaru
会議室デビュー日: 2005/01/20
投稿数: 14
投稿日時: 2005-02-09 09:44
burton999さま、回答ありがとうございます。

やはり文字列内に変数名を書いたのがエラー原因だったのですね。
そこまでは推測できたのですが、どのように変更すれば良いのかがわかりませんでした。

アドバイスのとおりに変更しましたら、意図するListItem生成ができるようになりました。
ありがとうございます。

>本来ならSqlParameterを使用するのが好ましいですが。。。
については、しっかりと勉強しておきます。
1

スキルアップ/キャリアアップ(JOB@IT)