如果没有检查然后添加到现金

时间:2011-09-09 03:01:08

标签: c# asp.net vb.net

我运行了下面的代码,Adnan昨晚帮助了我(非常感谢Adnan)。

基本上,代码会检查输入的金额是否被检查。如果是检查,请将检查值插入chckval。

如果是现金,请将现金值插入现金。

到目前为止,它已经完成了一半。它将检查插入check fieldname并将0插入cash fieldname。这很有效。

如果资金是现金,那么无法将现金插入现金现场名称。

它将现金插入现金字段名称,因为它应该将相同的金额插入到check fieldname中。这不好。

如果是现金并将其插入现金字段名称,我希望检查值为0。

这是最新的代码,再次感谢。

For x = 1 To 5 Step 1
    dedval = Gridview1.FindControl("ded" & CStr(x))
    chckval = Gridview1.FindControl("chck" & CStr(x))
    chcknumval = Gridview1.FindControl("chcknum" & CStr(x))
    checkboxval = Gridview1.FindControl("chckBox" & CStr(x))
    onetimeval = Gridview1.FindControl("onetime" & CStr(x))
    multival = Gridview1.FindControl("multi" & CStr(x))
    If chckval.Text <> "" And Not checkboxval.Checked Then
        cashval = DirectCast(Gridview1.FindControl("chck" & CStr(x)), TextBox).Text
    Else
        chckval = Gridview1.FindControl("chck" & CStr(x))
    End If
    If dedval.Text <> "-1" And donatechoice.SelectedItem.Value <> "No" Then
        sql += "INSERT INTO employee_ded_amts (employee_id, charity_code, check_amt, chcknum, one_time, bi_weekly, cash, donate_choice, date_stamp) "
        sql += "VALUES ('" & Replace(employee_idLabel.Text, "'", "''") & "','" & Replace(dedval.SelectedValue, "'", "''") & "','" & Replace(chckval.Text, "'", "''") & "','" & Replace(chcknumval.Text, "'", "''") & "','" & Replace(onetimeval.Text, "'", "''") & "','" & multival.Text & "','" & Replace(cashval, "'", "''") & "','" & Replace(donatechoice.SelectedItem.Value, "'", "''") & "','" & Replace(datestamp, "'", "''") & "');"
    End If
    If donatechoice.SelectedItem.Value = "No" Then
        x = 6
        sql += "INSERT INTO employee_ded_amts (employee_id, charity_code, check_amt, chcknum, one_time, bi_weekly, cash, donate_choice, date_stamp) "
        sql += "VALUES ('" & Replace(employee_idLabel.Text, "'", "''") & "','" & Replace(dedval.SelectedValue, "'", "''") & "','" & Replace(chckval.Text, "'", "''") & "','" & Replace(chcknumval.Text, "'", "''") & "','" & Replace(onetimeval.Text, "'", "''") & "','" & Replace(multival.Text, "'", "''") & "','" & Replace(cashval, "'", "''") & "','" & Replace(donatechoice.SelectedItem.Value, "'", "''") & "','" & Replace(datestamp, "'", "''") & "');"
    End If
Next

我认为

存在一些问题
IF chckval.Text <> "" And Not checkboxval.Checked Then

statment

1 个答案:

答案 0 :(得分:1)

===========

更新

如果cashval是字符串类型,请尝试更改此行,

 cashval = DirectCast(fvEmp.FindControl("chck" & CStr(x)),TextBox).Text;

肯定的事情我发现FindControl返回控件类型,如果它是一个TextBox控件需要转换为TextBox类型,然后你可以使用它的Text属性来获取字符串。我在上面编辑了它。现在试试吧。

在C#中它会像这样完成。

 string cashval = ((TextBox)(fvEmp.FindControl("whatever control name"))).Text;

==============

新增更新

chckval = Gridview1.FindControl("chck" & CStr(x))

肯尼现在这第三条线引起了我相信的问题。尝试从For循环中删除第二行。但是当你删除第二行时,你还需要为你的chckval TextBox类型变量分配一些值,因为它在查询中使用时不能为null。可能是你可以分配新的空TextBox

你也可以像你制作cashval变量字符串一样制作checkval字符串,这样可以简化它。

但是你赋予checkval的任何值都会在这个IF语句中赋值。

    If chckval.Text <> "" And Not checkboxval.Checked Then
     cashval = DirectCast(Gridview1.FindControl("chck" & CStr(x)), TextBox).Text
     < SET SOME VALUE FOR chckval here ... which is default value which will be used in SQL server> 
      Else
      chckval = Gridview1.FindControl("chck" & CStr(x))