以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]怎样控制输入重复数据  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=3221)

--  作者:sohper
--  发布时间:2009/6/20 19:09:00
--  [求助]怎样控制输入重复数据

使用窗口录入,窗口中一个TextBox控件, 在TextBox的ValueChanged 事件中,控制重复的输入,

假如,在表中有一个客户编号列,已有一条记录Cs01 如果在TextBox控制中输入Cs01,发生ValueChanged事件后,会提示客户记录已存在!


--  作者:yangming
--  发布时间:2009/6/20 23:55:00
--  
Dim dr As DataRow
With e.Form.Controls("TextBox1")
dr = DataTables("表A").Find("客户= \'" & .Value & "\'")
If dr IsNot Nothing Then \'如果找到的话
  MessageBox.Show("客户记录已存在!", "提示")
 End If
End With

--  作者:yangming
--  发布时间:2009/6/21 0:04:00
--  
看看这个:
Dim dr As DataRow
Dim r As Row = CurrentTable.Rows(CurrentTable.Rows.Count-1)
With e.Form.Controls("TextBox1")
dr = DataTables("表A").Find("客户= \'" & .Value & "\'")
If dr IsNot Nothing Then \'如果找到的话
  MessageBox.Show("客户记录已存在!", "提示")
 r("客户") = ""
 End If
End With

--  作者:sohper
--  发布时间:2009/6/21 8:04:00
--  
多谢Yang版,有这个语句控制会有问题 ,这是我用的语句

Dim Txtb As WinForm.TextBox = e.Sender
Dim Index As Integer
Index = Tables("客户信息表").FindRow("[客户编号]= \'" & Txtb.Value & "\'",0,True)
If Index >=0
    MessageBox.Show("该客户编号已存在!","警告")
    Txtb.Value = Nothing
    Txtb.Select()
    Return
End If

遇到一个问题, 在建立的一个编辑窗口中,假设原来有一条记录,客户编号为3,现改为我,再点取消,就会弹出  "客户编号已存在!"的警告.
这个控制不像在易表中,这个FindRow不像易表中的可以找第几行记录,

如何改成 FindRow("[客户编号]= \'" & Txtb.Value & "\'",1,True) 的话,有输入第2个相同的客户编号时也不会弹出 窗口

--  作者:yangming
--  发布时间:2009/6/21 9:19:00
--  

上传你的文件看看吧,从你的代码看,你需要的是查到相同编号后就将光标定位到文本框中,并不是到找到的那一行啊


--  作者:sohper
--  发布时间:2009/6/21 16:07:00
--  
是的,我的代码是,当前行绑定的TextBox中输入一个客户编号,如果这个客户编号已经存在,就把这个TextBox清空,然后把光标定位到这个TextBox
--  作者:狐狸爸爸
--  发布时间:2009/6/21 16:12:00
--  

列属性不是由禁止输入重复内容的设置吗?


--  作者:sohper
--  发布时间:2009/6/21 16:16:00
--  
是的,可没有提示,呵呵!