- PR -

DataGridでの条件

1
投稿者投稿内容
z2
会議室デビュー日: 2005/08/23
投稿数: 19
投稿日時: 2005-09-07 11:33
いつも参考にさせて頂いております。
z2といいます。
VisualStudio2003.netを利用して、ASP.NETの開発を試しています。

ログイン画面で入力したユーザIDをセッション変数に格納
ログイン画面からページを移動後に、ユーザIDが一致するレコードを
DataGridで表示したいのですが、うまくいきません

[WebForm1]
Session.Item("session_id_code") = ユーザID

[WebForm2]
Private Sub Page_Load〜(略)
Dim nwindConn As SqlConnection = New 〜(略)
nwindConn.Open()
Dim cmd As New SqlCommand("select * from テーブル名 where id_code=@id_code", nwindConn)
cmd.Parameters.Add("@id_code", CType(Session.Item("session_id_code"), String))
Dim dr As SqlDataReader = cmd.ExecuteReader
DataGrid1.DataSource = dr
DataGrid1.DataBind()
dr.Close()
nwindConn.Close()
End Sub

実行後のエラーメッセージは
準備されたステートメント '(@id_code nvarchar(4000))select * from notify_table where id_cod' ではパラメータ @id_code が必要ですが、指定されていません。

宜しくお願いいたします。
そうまさん
常連さん
会議室デビュー日: 2003/07/17
投稿数: 27
お住まい・勤務地: ジャポン
投稿日時: 2005-09-07 12:36
そうまです。こんにちは。

引用:

コード:
cmd.Parameters.Add("@id_code", CType(Session.Item("session_id_code"), String))




ここが怪しいのかなって思います。
このコードではSeesionに維持している値が設定できていないのではないでしょうか?

サンプルがC#で申し訳ないですが、こんな感じでうちは動いてます。
コード:
cmd.Parameters.Add(new SqlParameter("@id_code", System.Data.SqlDbType.NVarChar, 4000));
cmd.Parameters["@id_code"].Value = (string)Session["session_id_code"];


的外れでしたらごめんなさい。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2005-09-07 13:04
id_code の型は?
やったことないから分からないですけど、
id_code が Int とかの場合、パラメータに String 渡してもいいのかな?

z2
会議室デビュー日: 2005/08/23
投稿数: 19
投稿日時: 2005-09-07 14:04
そうまさん様、囚人様返信ありがとうございます

引用:

cmd.Parameters.Add(new SqlParameter("@id_code", System.Data.SqlDbType.NVarChar, 4000));
cmd.Parameters["@id_code"].Value = (string)Session["session_id_code"];


cmd.Parameters.Add(New SqlParameter("@id_code", System.Data.SqlDbType.NVarChar, 4000))cmd.Parameters("@id_code").Value() = (CType(Session.Item("session_id_code"), String))

上記のコードに直してみましたが、同じエラーメッセージが表示されます

引用:

id_codeの型は?


DBのid_codeの型はvarcharに設定しています。

試しに
cmd.Parameters.Add("@id_code", "IDコード")
セッションではなく直接@id_codeを指定すると結果は表示されます。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2005-09-07 15:05
本当にSession["session_id_code"]には、期待した値がはいっているのでしょうか?
そうまさん
常連さん
会議室デビュー日: 2003/07/17
投稿数: 27
お住まい・勤務地: ジャポン
投稿日時: 2005-09-07 15:22
引用:

(CType(Session.Item("session_id_code"), String))


こいつが正しい値を返していないということのように思えます。
デバックで止めてみて、一度値を確認してみてはどうでしょうか?
z2
会議室デビュー日: 2005/08/23
投稿数: 19
投稿日時: 2005-09-07 16:12
burton999様、そうまさん様返信ありがとうございます

sessionに期待した値が入っていませんでした。
ログイン画面からページ移動する際のアドレスが間違っていました。

[WebForm1] (ログイン画面)
アドレス http://localhost/WebApplication1/WebForm1.aspx
[WebForm2] (DataGridでの表示画面)
アドレス http://サーバ機のアドレス/WebApplication1/WebForm2.aspx

これではsessionが取得できないわけです。
ログイン画面のアドレスをlocalhostからIPに変えたところうまくいきました。
返信してくださった、そうまさん様、囚人様、burton999様ありがとうございました。
1

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