以文本方式查看主题

-  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

图片点击可在新窗口打开查看此主题相关图片如下:发票号码.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:select语句.png
图片点击可在新窗口打开查看


[此贴子已经被作者于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 & "\'"