ASP.NET变量未获取赋值

时间:2013-02-25 13:08:08

标签: asp.net

我对此asp.net代码有疑问。 变量qty和itname没有得到有效的值......任何人都可以找到问题吗?

Imports System.Data
Imports System.Data.SqlClient
Partial Class consolidate
    Inherits System.Web.UI.Page

    Public lastreq_no As Int32

    Protected Sub btnconsolidate_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnconsolidate.Click
        Dim qtypen As Integer
        Dim qtypencil As Integer
        Dim qtygbag As Integer
        Dim qtysugar As Integer
        Dim i As Integer
        Dim req As Integer
        Dim qty As Integer
        Dim itname As String = ""
        Dim sqlcon As New SqlConnection("Data Source=user-hp\sqlexpress;initial catalog=campco;integrated security=true;")
        If sqlcon.State = ConnectionState.Open Then
            sqlcon.Close()
        End If

        sqlcon.Open()
        Dim str As String
        str = "Select Req_no from Requirements "
        Dim cmd As New SqlCommand(str, sqlcon)
        Dim sdr As SqlDataReader
        sdr = cmd.ExecuteReader()
        sdr.Read()
        lastreq_no = sdr.GetInt32(sdr.VisibleFieldCount - 1)
        For i = 0 To sdr.VisibleFieldCount - 1
            req = sdr.GetInt32(i)
            While req > lastreq_no
                Dim selcomnd1 As String
                Dim selcomnd2 As String
                selcomnd1 = "Select @itname=It_name from Requirements where Req_no= @req"
                selcomnd2 = "Select @qty= Quantity from Requirements where Req_no= @req"
                Dim sqlcomnd1 As New SqlCommand(selcomnd1, sqlcon)
                Dim sqlcomnd2 As New SqlCommand(selcomnd2, sqlcon)
                sqlcomnd1.Parameters.AddWithValue("@itname", itname)
                sqlcomnd2.Parameters.AddWithValue("@qty", qty)
                sqlcomnd1.ExecuteScalar()
                sqlcomnd2.ExecuteScalar()
                TextBox1.Text = itname
                TextBox2.Text = qty
                sqlcon.Close()
                sqlcon.Open()
                Select Case (itname)
                    Case "Pen"
                        qtypen += qty
                        lastreq_no = req
                    Case "Pencil"
                        qtypencil += qty
                        lastreq_no = req
                    Case "Gunny bag"
                        qtygbag += qty
                        lastreq_no = req
                    Case "Sugar"
                        qtysugar += qty
                        lastreq_no = req
                End Select
            End While
        Next

        sqlcon.Close()
        If sqlcon.State = ConnectionState.Open Then
            sqlcon.Close()
        End If
        sqlcon.Open()
        Dim comm As String
        comm = "Insert into Consolidate (lastr_no,qtypen,qtypencil,qtygunnybag,qtysugar)values('" + lastreq_no.ToString + "','" + qtypen.ToString + "','" + qtypencil.ToString + "','" + qtygbag.ToString + "','" + qtysugar.ToString + "')"
        Dim sqlcomm As New SqlCommand(comm, sqlcon)
        Dim s As String
        s = sqlcomm.ExecuteNonQuery()
        sqlcon.Close()
    End Sub
End Class

2 个答案:

答案 0 :(得分:1)

首先,标量语句都不是有效的。您是否尝试在SQL Management Studio或类似程序中运行这些语句来测试语句本身?他们应该是这样的:

selcomnd1 = "Select It_name from Requirements where Req_no=@req"
selcomnd2 = "Select Quantity from Requirements where Req_no=@req"

然后你会以这种方式分配它们:

itname = CType(sqlcmnd1.ExecuteScalar(), String)  ' .ToString() would probably work here as well
qty = Convert.Int32(sqlcmnd2.ExecuteScalar())

或者您可以使用.TryParse作为数量:

Integer.TryParse(sqlcmnd2.ExecuteScalar(), qty)

答案 1 :(得分:0)

该行

sqlcomnd1.Parameters.AddWithValue("@itname", itname)

提供值为itname输入参数。没有为此变量分配值。

您需要添加输出参数:请参阅此处了解如何执行此操作。

Get output parameter value in ADO.NET