以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  刷卡筛选条件BUG  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=11764)

--  作者:youyuweinihao
--  发布时间:2011/8/10 21:21:00
--  刷卡筛选条件BUG

还是上午的问题结合附件,Textbox1的CURRENTCHANGED时间代码如下: 

出现BUG:如果有一次刷卡会员卡号符合条件“Drw = DataTables("服务包明细").AddNew()”得到执行,那么后面接着刷卡即使卡号不符合dr2条件AddNew还是同样执行。怎么处理???

Dim v As String = e.sender.value
Dim dr1 As DataRow = DataTables("客户信息").Find("会员卡号 = "  & v)
If dr1 IsNot Nothing Then
       v = e.Form.Controls("ComboBox5").Value
    Dim dr2 As DataRow = DataTables("服务包明细").Find("服务名称 = \'" & v & "\' And 拥有次数 > 0" )
    If dr2 IsNot Nothing Then
       Dim drw As DataRow
              Drw = DataTables("服务包明细").AddNew()

          Else MessageBox.Show("请购买该服务!", "提示")

             
    End If
    Else MessageBox.Show("请先购买会员卡!", "提示")
End If
e.Form.Controls("TextBox1").value = Nothing
e.Form.Controls("textbox1").Select()

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:新建文件夹.rar


--  作者:狐狸爸爸
--  发布时间:2011/8/10 21:32:00
--  

说明你代码的逻辑有问题。

你查询dr2的条件是: "服务名称 = \'" & v & "\' And 拥有次数 > 0"

即使你增加一行: Drw = DataTables("服务包明细").AddNew()

新增行也不影响查询查询条件的成立啊,所以第一次刷卡增加行的话,第二次刷卡肯定还会增加行。

 

先理清楚其中的逻辑关系再提问吧,这种关系只有你自己清楚,别人无能为力的。