以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  姓名的验证  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=123643)

--  作者:susu312
--  发布时间:2018/8/20 11:25:00
--  姓名的验证


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

老师,对于个人信息中的姓名,

需求:

1、不能为空,且不能超过长度10

2、如果超过10则不允许输入了

 

validating:

Dim txt As String = e.Sender.Text
If  txt > "" Then
     If txt.Length > 10 Then 
         e.Sender.Error = "姓名长度不允许超过10"
         e.Cancel=True
     End If
Else
    e.Sender.Error = "姓名不允许为空"
    e.Cancel=True
End If

keydown:

If e.sender.text.length > 9 Then
        e.cancel = True
End If

 

代码是上面:

 


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

 

您看我输了10个数字后,我想回退,退不回去了,

 

老师,还有一个疑惑,对于个人信息里面的诸多字段,我是在确定事件里面验证还是在validating里面验证


--  作者:有点蓝
--  发布时间:2018/8/20 11:29:00
--  

keydown:

if e.KeyCode <> keys.Back

If e.sender.text.length > 9 Then
        e.cancel = True
End If

end if


--  作者:susu312
--  发布时间:2018/8/20 15:59:00
--  

With Tables("person")
    If .Current Is Nothing Then
        For Each dr As DataRow In Tables("person").Current.DataRow.GetChildRows("family")
                  dr.Delete
        Next
   Else
       .Current.Delete
   End If
End With
e.Form.Close

 

老师,上面代码中,

 

1、如果人员当前信息部为空,则把当人员信息表的当前行对应的家庭信息都删除

2、如何人员信息为空,啥都没有填写,就把这一行也删除了

我上面的代码貌似没有实现第二个功能,

我觉得可能判断无效,请老师指点一下


--  作者:有点蓝
--  发布时间:2018/8/20 16:22:00
--  
1、使用关同步删除功能:http://www.foxtable.com/webhelp/scr/2298.htm

2、到DataRowDeleting事件写代码删除,类似http://www.foxtable.com/webhelp/scr/0633.htm

--  作者:susu312
--  发布时间:2018/8/20 16:26:00
--  
以下是引用有点蓝在2018/8/20 16:22:00的发言:
1、使用关同步删除功能:http://www.foxtable.com/webhelp/scr/2298.htm

2、到DataRowDeleting事件写代码删除,类似http://www.foxtable.com/webhelp/scr/0633.htm

老师,我可能没有表达清楚

 


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

 

您看,这是两个页面,我第二个删除的目的不是同步更新同步删除

 

是因为,用户有时候点进去,基本信息啥也没写,然后到家庭信息页面 ,结果,他不想写了,他点家庭信息页面的取消, 如果判断到基本信息啥也没写,则把当前人员信息记录删除?


--  作者:有点蓝
--  发布时间:2018/8/20 16:38:00
--  
With Tables("person")
    For Each dr As DataRow In .Current.DataRow.GetChildRows("family")
        dr.Delete
    Next
    Dim nd As Boolean
    For Each c As Col In .cols
        If .Current.isnull(c.name) = False Then
            nd=True
            Exit
        End If
    Next
    If nd = false Then .Current.delete
End With

--  作者:susu312
--  发布时间:2018/8/20 19:15:00
--  
以下是引用有点蓝在2018/8/20 16:38:00的发言:
With Tables("person")
    For Each dr As DataRow In .Current.DataRow.GetChildRows("family")
        dr.Delete
    Next
    Dim nd As Boolean
    For Each c As Col In .cols
        If .Current.isnull(c.name) = False Then
            nd=True
            Exit  for
        End If
    Next
    If nd = false Then .Current.delete
End With

老师,这个代码它永远也不可能为false. 因为从来没可能赋值为false

 

 

 


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

 

老师,上图中,每次一打开,那个光标不知在这个控件就在那个控件,我把它们的tab值都设为999了,但是还是有,如何去掉这个光标,只有当真正定位到那里的时候才光标闪烁?


--  作者:有点蓝
--  发布时间:2018/8/20 20:57:00
--  
逻辑型变量默认就是false,不需要赋值

afterload写代码选中某一个按钮,输入框就不会出现光标了

--  作者:susu312
--  发布时间:2018/8/20 21:07:00
--  
以下是引用有点蓝在2018/8/20 20:57:00的发言:
逻辑型变量默认就是false,不需要赋值

afterload写代码选中某一个按钮,输入框就不会出现光标了

老师,我的afterlaod里面代码如下:

Tables("person").AddNew()
Tables("person").Current.Save()

没必要选择某个按钮,可以控制它不选中任何么?但鼠标真的点击的时候才选中?


--  作者:有点蓝
--  发布时间:2018/8/20 21:18:00
--  
窗口打开肯定要选中其中一个控件,选中一个标签呗

e.Form.Controls("Label1").Select