Foxtable(狐表)用户栏目专家坐堂 → 窗口禁止重复值录入


  共有2218人关注过本帖树形打印复制链接

主题:窗口禁止重复值录入

帅哥哟,离线,有人找我吗?
whx007
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:228 积分:2057 威望:0 精华:0 注册:2017/8/18 17:51:00
窗口禁止重复值录入  发帖心情 Post By:2019/12/26 4:31:00 [只看该作者]

新增按钮代码:
Dim cpxh As String = e.Form.Controls("Dropbox1").Value
Dim dr As Row = Tables("新增产品明细_Table1").Find("产品型号 = '" & cpxh & "' And 订单号 = '" & Tables("新增产品明细_Table1").current("订单号")  & "'")
If dr IsNot Nothing Then
    MessageBox.Show("已经存在相同型号的行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    e.Cancel = True
End If


在同一个订单中,订单明细表中的产品型号一列不能重复录入产品型号,在窗口中我使用的是副本表。

执行上段代码错误提示: 没有可访问的find接受此数目的参数,因此重载决策失败
是不是因为find只在DataTable查找符合条件的行,副本表不可以所以出现上面的错误,应该怎么写代码?
[此贴子已经被作者于2019/12/26 4:32:05编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106680 积分:542589 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/12/26 9:46:00 [只看该作者]

改为DataTable使用即可,副本表的数据也是来自主表的DataTable的

 回到顶部
帅哥哟,离线,有人找我吗?
whx007
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:228 积分:2057 威望:0 精华:0 注册:2017/8/18 17:51:00
  发帖心情 Post By:2019/12/27 5:44:00 [只看该作者]

Dim cpxh As String = e.Form.Controls("Dropbox1").Value
Dim fdr As DataRow = DataTables("销售明细表").Find("产品型号 = '" & cpxh & "' And 订单号 = '" & Tables("销售明细表").Current("订单号")  & "'")
If fdr IsNot Nothing Then
    MessageBox.Show("已经存在相同型号的行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    e.Cancel = True
End if

改成上面后仍然提示错误:

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2019.12.17.18
错误所在事件:窗口,新增产品明细,Button1,Click
详细错误信息:
未将对象引用设置到对象的实例。

红色字体部分引起的问题,应该怎么改代码?

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106680 积分:542589 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/12/27 8:29:00 [只看该作者]

if Tables("销售明细表").Current isnot nothing then
Dim cpxh As String = e.Form.Controls("Dropbox1").Value
Dim fdr As DataRow = DataTables("销售明细表").Find("产品型号 = '" & cpxh & "' And 订单号 = '" & Tables("销售明细表").Current("订单号")  & "'")
If fdr IsNot Nothing Then
    MessageBox.Show("已经存在相同型号的行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    e.Cancel = True
End if
end if


 回到顶部
帅哥哟,离线,有人找我吗?
whx007
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:228 积分:2057 威望:0 精华:0 注册:2017/8/18 17:51:00
  发帖心情 Post By:2019/12/28 5:00:00 [只看该作者]

按照上面的代码改好后,不管是相同的产品型号还是不同的产品型号,点添加按钮都不新增行,也没有任何提示。


图片点击可在新窗口打开查看此主题相关图片如下:tim截图20191227224814.png
图片点击可在新窗口打开查看


 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106680 积分:542589 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/12/28 8:47:00 [只看该作者]

msgbox(1) '能不能弹出
if Tables("销售明细表").Current isnot nothing then
msgbox(2) '能不能弹出
Dim cpxh As String = e.Form.Controls("Dropbox1").Value
Dim fdr As DataRow = DataTables("销售明细表").Find("产品型号 = '" & cpxh & "' And 订单号 = '" & Tables("销售明细表").Current("订单号")  & "'")
msgbox(fdr is nothing) '弹出什么值?
If fdr IsNot Nothing Then
    MessageBox.Show("已经存在相同型号的行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
   '''e.Cancel = True这一句去掉
End if
end if

 回到顶部
客人(165.56.*.*)
  7楼


  发帖心情 Post By:2019/12/29 5:02:00 [只看该作者]

add product 完整代码:

Dim sts() As String = {"dropbox1","NumericComboBox2"}
For Each st As String In sts
    If e.Form.Controls(st).value Is Nothing
        MessageBox.show("Model and quantity must be filled in!","Remind")
        Return
    End If
Next
msgbox(1)
If Tables("销售明细表").Current IsNot Nothing Then
    msgbox(2)
    Dim cpxh As String = e.Form.Controls("Dropbox1").Value
    Dim fdr As DataRow = DataTables("销售明细表").Find("产品型号 = '" & cpxh & "'And 订单号 = '" & Tables("销售明细表").Current("订单号")  & "'")
    msgbox(fdr Is Nothing)
    If fdr IsNot Nothing Then
        MessageBox.Show("已经存在相同型号的行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
        'e.Cancel = True
    End If
End If
Dim tbl As Table = Tables("销售明细表")
Dim r As Row = tbl.AddNew()
r("订单号") = Tables("订单修改1_Table2").Current("订单号")
r("客户名称") = Tables("订单修改1_Table2").Current("客户名称")
r("客户电话") = Tables("订单修改1_Table2").Current("客户电话")
r("产品型号") = e.Form.Controls("dropbox1").Text
r("产品类别") = e.Form.Controls("产品类别").Text
r("单价成本") = e.Form.Controls("单价成本").Text
r("销售单价") = e.Form.Controls("TextBox5").Text
r("数量") = e.Form.Controls("NumericComboBox2").Text
r("日期") = Date.Today
If tbl.Current IsNot Nothing Then
    tbl.Current.Save()
End If
Dim tb As Table = Tables("订单出库明细表")
If Tables("销售明细表").Current.Isnull("产品型号") = False AndAlso e.Form.Controls("NumericComboBox1").Value <> 0 Then
    Dim dr As Row = tb.AddNew()
    dr("提货日期") = Date.Today
    dr("订单号") = Tables("订单修改1_Table2").Current("订单号")
    dr("产品型号") = e.Form.Controls("dropbox1").Text
    dr("数量") = e.Form.Controls("NumericComboBox2").Text
    dr("已提数量") = e.Form.Controls("NumericComboBox1").Text
    If tb.Current IsNot Nothing Then
        tb.Current.Save()
    End If
End If
e.Form.Controls("DropBox1").Value = ""
e.Form.Controls("textbox5").Value = ""
e.Form.Controls("NumericComboBox2").Value = Nothing
e.Form.Controls("未提数量").Text = "未知"

1、在当前的窗口新增明细表中没有的产品型号,msgbox(1)弹出1,后面再无弹出,但明细表能新增行和产品相关信息;
2、紧接着再新增明细表中没有的产品型号,msgbox(1)弹出1,msgbox(2)弹出2,msgbox(fdr is nothing)弹出TRUE,明细表也能新增行和产品相关信息;
3、接着新增明细表中有的一个产品型号,msgbox(1)弹出1,msgbox(2)弹出2,msgbox(fdr is nothing)弹出flase,弹出"已经存在相同型号的行!"对话框后,程序停止工作:


 回到顶部
帅哥哟,离线,有人找我吗?
whx007
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:228 积分:2057 威望:0 精华:0 注册:2017/8/18 17:51:00
  发帖心情 Post By:2019/12/29 5:05:00 [只看该作者]

1、在当前的窗口新增明细表中没有的产品型号,msgbox(1)弹出1,后面再无弹出,但明细表能新增行和产品相关信息;
2、紧接着再新增明细表中没有的产品型号,msgbox(1)弹出1,msgbox(2)弹出2,msgbox(fdr is nothing)弹出TRUE,明细表也能新增行和产品相关信息;
3、接着新增明细表中有的一个产品型号,msgbox(1)弹出1,msgbox(2)弹出2,msgbox(fdr is nothing)弹出flase,弹出"已经存在相同型号的行!"对话框后,程序停止工作:
 
此主题相关图片如下:tim截图20191228213324.png
按此在新窗口浏览图片
4、如果没有步骤1,2,一开始就新增明细表中有的一个产品型号,msgbox(1)弹出1,后面再无弹出,程序停止工作和步骤3一样。



 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106680 积分:542589 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/12/29 21:06:00 [只看该作者]

窗口表如果是副本,看看http://www.foxtable.com/webhelp/topics/1906.htm

至于程序停止工作的问题请上传实例测试

 回到顶部
帅哥哟,离线,有人找我吗?
whx007
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:228 积分:2057 威望:0 精华:0 注册:2017/8/18 17:51:00
  发帖心情 Post By:2019/12/30 3:04:00 [只看该作者]

修改为副本表并将add product 所有代码重新组合后问题解决,谢谢蓝版。

 回到顶部