以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  求助!!!!  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=42834)

--  作者:myzzip
--  发布时间:2013/11/23 14:07:00
--  求助!!!!
 Dim dr As DataRow
    dr = DataTables("商品入库").Find("商品编号 = " & "\'" & e.Form.Controls("TextBox1").Value & "\'" )
    If dr IsNot Nothing Then \'如果找到就把文本框5的值与表列中的值想加
        dr("入库数量") = e.Form.Controls("TextBox5").Value + dr("入库数量")
    Else \'如果未找到 就新增数据写到表里面 但是在这一步报错???
        dr("商品编号") = e.Form.Controls("TextBox1").Value
        dr("产品类别") = e.Form.Controls("TextBox2").Value
        dr("产品名称") = e.Form.Controls("TextBox3").Value
        dr("单位") = e.Form.Controls("TextBox4").Value
        dr("入库数量") = e.Form.Controls("TextBox5").Value
        dr("采购价") = e.Form.Controls("TextBox6").Value
        dr("销售单价") = e.Form.Controls("TextBox7").Value
    End If

图片点击可在新窗口打开查看此主题相关图片如下:q~4`drmbh~yvum78hvnnut.jpg
图片点击可在新窗口打开查看

--  作者:myzzip
--  发布时间:2013/11/23 14:08:00
--  

是曾加按钮Click事件


--  作者:狐狸爸爸
--  发布时间:2013/11/23 14:10:00
--  

你多了个else,应该:

 

Dim dr As DataRow
dr = DataTables("商品入库").Find("商品编号 = " & "\'" & e.Form.Controls("TextBox1").Value & "\'" )
If dr IsNot Nothing Then \'如果找到就把文本框5的值与表列中的值想加
    dr("入库数量") = e.Form.Controls("TextBox5").Value + dr("入库数量")
    dr("商品编号") = e.Form.Controls("TextBox1").Value
    dr("产品类别") = e.Form.Controls("TextBox2").Value
    dr("产品名称") = e.Form.Controls("TextBox3").Value
    dr("单位") = e.Form.Controls("TextBox4").Value
    dr("入库数量") = e.Form.Controls("TextBox5").Value
    dr("采购价") = e.Form.Controls("TextBox6").Value
    dr("销售单价") = e.Form.Controls("TextBox7").Value
End If


--  作者:myzzip
--  发布时间:2013/11/23 14:14:00
--  

else 不多


--  作者:狐狸爸爸
--  发布时间:2013/11/23 14:17:00
--  

当然多了,你原来的代码,else之后的部分,是没有找到符合条件的行才会执行的,既然没有符合条件的行,那么dr为nothing,运行这些代码肯定出错。

要理清楚自己的逻辑,再写代码。

[此贴子已经被作者于2013-11-23 14:21:01编辑过]

--  作者:狐狸爸爸
--  发布时间:2013/11/23 14:24:00
--  

这段代码的逻辑是否是这样的:如果找到,则数量累加,没有找到,则增加一行。

如果是的,代码为:

 

Dim dr As DataRow
dr = DataTables("商品入库").Find("商品编号 = " & "\'" & e.Form.Controls("TextBox1").Value & "\'" )
If dr IsNot Nothing Then \'如果找到
   dr("入库数量") = e.Form.Controls("TextBox5").Value + dr("入库数量")
Else
    dr = DataTables("商品入库").AddNew() \'如果没有找到,则增加一行
    dr("商品编号") = e.Form.Controls("TextBox1").Value
    dr("产品类别") = e.Form.Controls("TextBox2").Value
    dr("产品名称") = e.Form.Controls("TextBox3").Value
    dr("单位") = e.Form.Controls("TextBox4").Value
    dr("入库数量") = e.Form.Controls("TextBox5").Value
    dr("采购价") = e.Form.Controls("TextBox6").Value
    dr("销售单价") = e.Form.Controls("TextBox7").Value
End If

[此贴子已经被作者于2013-11-23 14:26:40编辑过]

--  作者:myzzip
--  发布时间:2013/11/23 14:24:00
--  
 Dim dr As DataRow
    dr = DataTables("商品入库").Find("商品编号 = " & "\'" & e.Form.Controls("TextBox1").Value & "\'" )
    If dr IsNot Nothing Then \'如果找到就把文本框的值与表列中的值想加
        dr("入库数量") = e.Form.Controls("TextBox5").Value + dr("入库数量")
    Else If dr Is Nothing Then
        dr("商品编号") = e.Form.Controls("TextBox1").Value
        dr("产品类别") = e.Form.Controls("TextBox2").Value
        dr("产品名称") = e.Form.Controls("TextBox3").Value
        dr("单位") = e.Form.Controls("TextBox4").Value
        dr("入库数量") = e.Form.Controls("TextBox5").Value
        dr("采购价") = e.Form.Controls("TextBox6").Value
        dr("销售单价") = e.Form.Controls("TextBox7").Value
    End If

--  作者:狐狸爸爸
--  发布时间:2013/11/23 14:27:00
--  

看六楼。

另建议:提问,除了贴出代码,最好也介绍下这段代码的目的,以及说明什么时候会出错。

[此贴子已经被作者于2013-11-23 14:27:26编辑过]

--  作者:myzzip
--  发布时间:2013/11/23 14:27:00
--  
我的意思是如果没有找到符合条件的就新增一行把当前文本框里的值写到表里面去 代码怎么实现?谢谢啦!!!
--  作者:狐狸爸爸
--  发布时间:2013/11/23 14:28:00
--  
看六楼,我已经猜出你的意思了,你漏掉了增加行的代码。
[此贴子已经被作者于2013-11-23 14:28:12编辑过]