none
スカラ変数 RRS feed

  • 質問

  • 環境:
    Visual Studio 2008(SP1)
    XP(SP3)
    SQL Server 2005

    行いたいこと:
    http://park5.wakwak.com/~weblab/mailMagazine/mag005.html
    のように動かしたい


    このURLをまねてADO.netのを学習いております。
    このサイトでは、windowsフォームですが、私はASP.netで行っております。


    ところが、実際実行させるとパラメータに引数が代入されていないみたいで、
    例外がキャッチされてしまいます。

    エラーは、「スカラ変数 "@TORIHIKI" を宣言してください。」です



    VB.net
    Public Function getSyohiZeiRitu() As Single
    
        Const strsql As String = "SELECT * FROM CONSUMPTIONTAX " + _
                                "WHERE (STARTDATE IS NULL AND @TORIHIKI <= ENDDATE) " + _
                                "OR (STARTDATE <= @TORIHIKI AND @TORIHIKI <= ENDDATE) " + _
                                "OR (STARTDATE <= @TORIHIKI AND ENDDATE IS NULL)"
    
    
    
        Dim oConn As New SqlConnection()
        Dim oCommand As New SqlCommand()
        Dim oDataReader As SqlDataReader
    
        Try
            oConn.ConnectionString = "SQL Server 接続文字列"
    
            oCommand.Connection = oConn
            oCommand.CommandText = strsql
            oConn.Open()
    
            oCommand.Parameters.Add(New SqlParameter("@torihikiBi", SqlDbType.DateTime))
            
            'ここまでは日付が取得できている
            oCommand.Parameters("@torihikiBi").Value = Me.mTorihikiBi
    
    		'ここ行(コード)でCatchに入ってしまう
            oDataReader = oCommand.ExecuteReader(CommandBehavior.SingleRow)
            If oDataReader.Read() Then
                getSyohiZeiRitu = CSng(oDataReader("CONSUMPTIONTAX"))
            Else
                getSyohiZeiRitu = -1
            End If
    
    
        Catch oExcept As Exception
            Throw New Exception(oExcept.ToString)
    
        Finally
            If Not oDataReader Is Nothing Then
                oDataReader.Close()
            End If
            If Not oConn Is Nothing Then
                oConn.Close() 
            End If
    
        End Try
    
        Return getSyohiZeiRitu
    
    End Function


    SQL文
    DECLARE @TORIHIKI DATETIME
    SET @TORIHIKI = '1992/04/15'
    
    SELECT * FROM CONSUMPTIONTAX
    WHERE (STARTDATE IS NULL AND @TORIHIKI <= ENDDATE)
    OR (STARTDATE <= @TORIHIKI AND @TORIHIKI <= ENDDATE)
    OR (STARTDATE <= @TORIHIKI AND ENDDATE IS NULL)
    



    @TORIHIKIに日時を入れたいのですが、oCommand.Parameters("@torihikiBi").Value = Me.mTorihikiBiで日付が取得しえいるはずなのに
    なぜ取得できないのか苦戦しています。

    どのように引数を指定?すれば@TORIHIKIに日付が代入されるのでしょうか。

    お願いします。




    tomotomody
    2009年12月26日 18:21

回答

すべての返信

  • @TORIHIKIと@torihikibiの関係は?
    2009年12月26日 21:15
  • 佐祐理 さんありがとうございます。
    指摘箇所の見落としとSQLの記述ミスでした。

    自己解決いたしました。
    ありがとうございます。
    tomotomody
    2009年12月26日 23:19
  • こんにちは、フォーラムオペレーターの高橋春樹です。

    佐祐理さん、いつもお世話になっております。

    トモディーさん、MSDNフォーラムのご利用有難うございます。

    今回、佐祐理さんからのご指摘が問題解決に繋がったようなので、
    佐祐理さんの投稿に、回答マークを付けさせてもらいました。

    今後ともMSDNフォーラムを宜しくお願いします(^_^)


    マイクロソフト株式会社 フォーラム オペレーター 高橋春樹
    2010年1月25日 1:58