Foxtable(狐表)用户栏目专家坐堂 → [求助]关于“必填”的约束,搜索过论坛了,但还是要请教老师们


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

主题:[求助]关于“必填”的约束,搜索过论坛了,但还是要请教老师们

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


加好友 发短信
等级:幼狐 帖子:56 积分:570 威望:0 精华:0 注册:2020/2/7 16:19:00
[求助]关于“必填”的约束,搜索过论坛了,但还是要请教老师们  发帖心情 Post By:2020/3/3 18:22:00 [只看该作者]

表的某字段必填,在《使用指南》层面我确实没找到方法。
论坛搜索了下,也有分歧,是在保存时校验?还是在selchange 事件发生时校验...

请老师指点,我觉得有两点需要实现:
1,编辑某行,能不能“换行”事件发生时检验“必填”?  有“输入焦点换行” 事件吗?
2,不管在编辑时是否校验“必填”,保存表格时都应该校验,有类似的代码吗?请老师帮帮忙。
3,比如我想约束“往来单位表”的 税号 字段,必填且长度等于18位。

另外,我现在的项目是“外部数据源”在局域网内使用的,我怎么“发项目”到论坛附件来?
直接发项目备份文件上来吗?没有数据源老师能看到“项目内容”吗?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:businessdatamanagement_202003031125.zip


[此贴子已经被作者于2020/3/3 18:38:17编辑过]

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


加好友 发短信
等级:超级版主 帖子:111390 积分:567014 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/3 20:28:00 [只看该作者]


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


加好友 发短信
等级:幼狐 帖子:56 积分:570 威望:0 精华:0 注册:2020/2/7 16:19:00
  发帖心情 Post By:2020/3/3 22:23:00 [只看该作者]

非常谢谢老师!
请老师多看一眼,教教我理解一个问题:
If e.OldRange.RowSel <> e.NewRange.RowSel '如果选择的是不同的行
    If e.OldRange.RowSel >= 0 AndAlso e.OldRange.Rowsel < e.Table.Rows.Count Then '而且原来选择的是一个有效的数据行
        Dim r As Row = e.Table.Rows(e.OldRange.Rowsel) '获得原来选择的行
        If r.IsNull("SerialNo") Or r("SerialNo").Length <> 18 Then  '如果编号为空
            r.DataRow.SetError("SerialNo","必填项且长度为18位")
            MessageBox.Show("输入错误!","提示!")
        Else
            r.DataRow.SetError("SerialNo","")
        End If
    End If
End If

对这段代码,r("SerialNo").Length <> 18  这部分,写成 r.DataRow("SerialNo").Length <> 18  也是一样的。
而 r.DataRow.SetError("SerialNo","必填项且长度为18位") 这部分不能写成 r.SetError("SerialNo","必填项且长度为18位")

我请教老师的疑问:
1,为什么有的方法(如SetError)不继承给 Row 呢?
2,在《使用指南》的认知层面,使用一些“事件代码”的时候,如何选择使用 DataTable 和 Table ?(如上面代码中的 DataRow 和 Row ,如何选择?
3,在《使用指南》的认知层面,怎么理解 DataTable 是“不可见的表” ? Table 是“可见的表” ?
[此贴子已经被作者于2020/3/3 22:27:18编辑过]

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


加好友 发短信
等级:超级版主 帖子:111390 积分:567014 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/3 22:53:00 [只看该作者]

1、没有为什么。就好像单车,汽车,马车都是车,有共性的东西,也有自己的特性,就如问为什么单车不像汽车一样有方向盘一样的道理。如果所有属性都一样也就没有必要分DataTable 和 Table了。
2、每个事件的参数都是固定的,用 DataTable 还是 Table,按照帮助说明使用即可
3、DataTable 可以理解为本地的临时数据库,类似商场的收货仓库,把物理数据库的数据加载到内存里临时使用。table是用来显示临时数据库数据的界面,类似商场的陈列柜。

 回到顶部