以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 后台数据库中有,查找确显示是0 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=137210) |
-- 作者:lfz123 -- 发布时间:2019/6/30 17:30:00 -- 后台数据库中有,查找确显示是0 后台数据库中有,查找确显示是0 [此贴子已经被作者于2019/6/30 17:30:09编辑过]
|
-- 作者:yd0731 -- 发布时间:2019/6/30 17:37:00 -- 改为: where 发票号码=\'63474500\' |
-- 作者:lfz123 -- 发布时间:2019/6/30 18:20:00 -- 回复:(yd0731)改为: where fa piao号码='63474500' 按照您的方法我试过是可以的,其实我是写在datacolchanging中的,代码就不行了 If e.DataCol.Name = "发票号码" Then \'禁止发票号码重复 Dim cmd As New SQLCommand cmd.C cmd.CommandText ="Select Count(*) Fro m {销项发票} Where 发票号码 = \'" & e.DataRow("发票号码") & "\'" MessageBox.Show(cmd.ExecuteScalar) If cmd.ExecuteScalar > 0 Then e.cancel = True \'取消 Messagebox.Show("此发票号码已经存在","提示",MessageBoxButtons.OK,MessageBoxIcon.Information) End If End If |
-- 作者:yd0731 -- 发布时间:2019/7/1 7:20:00 -- DataColChanging 某一列的内容发生变化前执行,此时新值还没有写入表中,列的内容还是更改前的值。 利用此事件,我们可以在某列内容发生变化之前进行拦截判断,如果不符合特定的条件,则取消此次变化,或者重新指定一个值。 ------------------------------------------------------------------------------------------------------------------------------------------- 因此,要用e.NewValue 来取用户输入的新的值,如果是新增加的一行,此时e.DataRow("发票号码")为空,导致后续出错,建议更改为: If e.DataCol.Name = "发票号码" Then \'禁止发票号码重复 Dim cmd As New SQLCommand \'cmd.C cmd.CommandText ="Select Count(*) Fro m {销项发票} Where 发票号码 = \'" & e.NewValue & "\'" MessageBox.Show(cmd.ExecuteScalar) If cmd.ExecuteScalar > 0 Then e.cancel = True \'取消 Messagebox.Show("此发票号码已经存在","提示",MessageBoxButtons.OK,MessageBoxIcon.Information) End If End If 另外对于表达式的合成,建议使用CExp(),例如: cmd.CommandText = CExp("Select Count(*) Fro m {销项发票} Where 发票号码 = \'{0}\' ",e.NewValue) 这样不容易出错。 [此贴子已经被作者于2019/7/1 7:50:29编辑过]
|
-- 作者:有点甜 -- 发布时间:2019/7/1 10:48:00 -- 如果datacolchanging事件,改成 e.newvalue
cmd.CommandText ="Select Count(*) Fro m {销项发票} Where 发票号码 = \'" & e.NewValue & "\'"
|