2016-01-23 143 views
0

enter image description here数据类型费用为int在SQL Server数据库请指导如何将字符串值转换为整数,在vb.net

费用的,我从表中费用得到价值

'Total Expenses B/W Dates 
    sql = "select COALESCE (SUM (amount), 0) from tblexpense Where transactiondate >= @p1 and transactiondate <= @p2" 
    CmdObj = New SqlCommand(sql, ConObj) 
    CmdObj.Parameters.Add("@p1", SqlDbType.Date).Value = DateTimePicker1.Value.Date 
    CmdObj.Parameters.Add("@p2", SqlDbType.Date).Value = DateTimePicker2.Value.Date 
    CmdObj.ExecuteScalar() 
    Dim sumexpense As Integer = CmdObj.ExecuteScalar 
    LblExp.Text = "Rs. " & sumexpense 

保存按钮保存费用的价值为表

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click 
    ConObj = New SqlConnection(ConStr) 
    ConObj.Open() 
    Dim sql As String = "insert into tblbalance (tcon,pcon,ecoll,pendcoll,expense,bcoll,nprofit) values(@tcon,@pcon,@ecoll,@pendcoll,@expense,@bcoll,@nprofit)" 

    With CmdObj 
     .Parameters.Add("@tcon", SqlDbType.Int).Value = lblTcon.Text 
     .Parameters.Add("@pcon", SqlDbType.Int).Value = LblPcon.Text 
     .Parameters.Add("@ecoll", SqlDbType.Int).Value = LblEColl.Text 
     .Parameters.Add("@pendcoll", SqlDbType.Int).Value = LblPColl.Text 
     .Parameters.Add("@expense", SqlDbType.Int).Value = LblExp.Text 
     .Parameters.Add("@bcoll", SqlDbType.Int).Value = LblBcoll.Text 
     .Parameters.Add("@nprofit", SqlDbType.Int).Value = LblNet.Text 

    End With 
    CmdObj.Connection = ConObj 
    CmdObj.ExecuteNonQuery() 
    MsgBox("Saved Successfully") 
    ConObj.Close() 
End Sub 
+1

你应该使用相同的参数化的语句升你在你的第一块代码中做过。然后确保lblExp.Text可以解析为一个整数,以确保来自用户的输入可以匹配类型,并在成功解析时将该变量传递给您的参数。 –

+0

我试过但没有成功...从字符串转换为整数无效 –

+0

您是否修复了使用参数的语句?因为在当前版本中,注入的值仍然被包含撇号,并且包含带撇号的值表示字符串类型而不是数字类型。参数也可以解决这个问题。 –

回答

0
Imports System.Text.RegularExpressions 
Private Shared Function GetIntOnly(ByVal value As String) As Integer 
    Dim returnVal As String = String.Empty 
    Dim collection As MatchCollection = Regex.Matches(value, "\d+") 
    For Each m As Match In collection 
     returnVal += m.ToString() 
    Next 
    Return Convert.ToInt32(returnVal) 
End Function 

    Dim sql As String = "insert into tblbalance (tcon,pcon,ecoll,pendcoll,expense,bcoll,nprofit) values('" & 
     lblTcon.Text & "','" & LblPcon.Text & "','" & GetIntOnly(LblEColl.Text) & "','" & GetIntOnly(LblPColl.Text) & "','" & 
     GetIntOnly(LblExp.Text) & "','" & GetIntOnly(LblBcoll.Text) & "','" & GetIntOnly(LblNet.Text) & "')"