如果不是支票,那就存入现金

本文关键字:现金 如果不 | 更新日期: 2023-09-27 18:07:57

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

基本上,代码检查输入的金额是否正确。如果是check,则将check值插入chckval。

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

到目前为止,它是一半工作。它将支票插入支票字段名,并将0插入现金字段名。

如果现金是现金,在现金字段中插入现金是行不通的。

它将现金插入到现金字段名中,但它也将相同的金额插入到支票字段名中。这可不妙。

如果是现金,并且插入到现金字段名中,我希望检查值为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

语句

如果不是支票,那就存入现金

===========

<标题> 更新

如果cashval是一个字符串类型,试着这样修改这一行,

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

Kenny我发现的东西是FindControl返回控制类型需要被转换成TextBox类型如果它是一个TextBox控件,然后你可以使用它的文本属性来获取字符串。我在上面编辑过。现在试试。

在c#中是这样做的。

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

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

New UPDATE

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

Kenny,现在我认为是第三行导致了问题。尝试从For循环中删除第二行。但是当您删除这第二行时,您还需要为chckval TextBox类型变量分配一些值,因为它在查询中使用时不能为空。也许你可以指定一个新的空文本框

你也可以让checkval String像你做cashval variable String一样,这将简化它。

但是无论给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))