0

sqlDataReader を使用してデータを取得し、セッション変数に設定しています。問題は、式を操作したくないことです。テーブル内の他の列は参照できますが、式は参照できません。SQLは機能します。コードは以下です。前もってありがとう、アンソニー

Using myConnectionCheck As New SqlConnection(myConnectionString)
    Dim myCommandCheck As New SqlCommand()
    myCommandCheck.Connection = myConnectionCheck
    myCommandCheck.CommandText = "SELECT Projects.Pro_Ver, Projects.Pro_Name, Projects.TL_Num, Projects.LP_Num, Projects.Dev_Num, Projects.Val_Num, Projects.Completed, Flow.Initiate_Date, Flow.Requirements, Flow.Req_Date, Flow.Dev_Review, Flow.Dev_Review_Date, Flow.Interface, Flow.Interface_Date, Flow.Approval, Flow.Approval_Date, Flow.Test_Plan, Flow.Test_Plan_Date, Flow.Dev_Start, Flow.Dev_Start_Date, Flow.Val_Start, Flow.Val_Start_Date, Flow.Val_Complete, Flow.Val_Complete_Date, Flow.Stage_Production, Flow.Stage_Production_Date, Flow.MKS, Flow.MKS_Date, Flow.DIET, Flow.DIET_Date, Flow.Closed, Flow.Closed_Date, Flow.Dev_End, Flow.Dev_End_Date, Users_1.Email AS Expr1, Users_2.Email AS Expr2, Users_3.Email AS Expr3, Users_4.Email AS Expr4, Users_4.FNAME, Users_3.FNAME AS Expr5, Users_2.FNAME AS Expr6, Users_1.FNAME AS Expr7 FROM Projects INNER JOIN Users AS Users_1 ON Projects.TL_Num = Users_1.PIN INNER JOIN Users AS Users_2 ON Projects.LP_Num = Users_2.PIN INNER JOIN Users AS Users_3 ON Projects.Dev_Num = Users_3.PIN INNER JOIN Users AS Users_4 ON Projects.Val_Num = Users_4.PIN INNER JOIN Flow ON Projects.id = Flow.Flow_Pro_Num WHERE id = "
    myCommandCheck.CommandText += QSid
    myConnectionCheck.Open()
    myCommandCheck.ExecuteNonQuery()
    Dim count As Int16 = myCommandCheck.ExecuteScalar
    If count = 1 Then
        Dim myDataReader As SqlDataReader
        myDataReader = myCommandCheck.ExecuteReader()
        While myDataReader.Read()
            Session("TL_email") = myDataReader("Expr1").ToString()
            Session("PE_email") = myDataReader("Expr2").ToString()
            Session("DEV_email") = myDataReader("Expr3").ToString()
            Session("VAL_email") = myDataReader("Expr4").ToString()
            Session("Project_Name") = myDataReader("Pro_Name").ToString()
        End While
        myDataReader.Close()
    End If
End Using
4

3 に答える 3

0

いくつかのこと:

1)クエリを3回実行しています。ExecuteNonQuery呼び出しとExecuteScalar呼び出しを失い、whileループを「ifmyDataReader.Read()/ end if」に置き換えて、最初の結果のレコードのデータ値を取得できます。レコードが見つからない場合、現在のコードと同様に、セッション変数は設定されません。

2)問題は、SQLクエリではなく、セッション管理(つまり、Sessionから値を取得すること)にあるように見えます。これは私には問題ないように見えます。

小切手:

  • web.configファイルでsessionStateが有効になっていること。
  • セッション値をどこにもリセットしないこと、および
  • 電子メールを送信しようとしているときに同じセッションフィールド名を要求すること。(たとえば、Session( "DEV_Email")を設定しているが、Session( "DEV Email")(アンダースコアの代わりにスペース)を要求していますか?
于 2010-05-14T16:49:04.590 に答える
0

これは、SqlDataReader が列の文字列名を使用して列にインデックスを付けることができるように、列名が一意である必要があるためである可能性があります。

于 2010-05-14T15:34:35.657 に答える
0

ごめんなさい。コードは問題なく動作します。sqlDataReader は式を列名として受け入れます。

from パラメータと to パラメータの値を null にすることはできないというエラーが表示された理由。テーブル内のどのレコードについても、その列にはデータがありませんでした。

于 2010-05-14T18:22:34.913 に答える