报销教程中,新增窗体的制作中,有自动检测姓名是否存在的语句。但在实际操作过程中,还缺少自动检测文本框内字符长度的语句。教程(2010版)中的【4.3 新增窗体的制作】的最后部分也提到,截图如下:
为了处理这个errhandle,我们可以用以下语句检测文本框内字符长度
If Len(Me.ygxm) > 10 Then
MsgBox "您输入的字符过长,请重新输入!", vbCritical, "请不要超过20个字符"
Me.ygxm.SetFocus
Exit Sub
End If
但是如果我们调整了表格中字段的长度,比如把tblcodeyg中字段ygxm的长度由原来的10缩短到4,就需要修改上面的判断语句
因此。我写了个取得表格中字段长度的函数——intFieldsLens,这样可以自动判断字段长度,上面的语句就可以这样写
If Len(Me.ygxm) > IntFieldLen("tblcodeyg", "ygxm") Then '取得某表某字段的长度
MsgBox "您输入的字符过长,请重新输入!", vbCritical, "请不要超过20个字符"
Me.ygxm.SetFocus
Exit Sub
End If
函数intFieldsLens的代码如下:
Public Function IntFieldLen(ByVal sTableName As String, ByVal sFieldName As String) As Integer
'检测表中字段长度
'使用示例: IsExistField("订单表","订单日期") 测订单表字段长度
Dim fld As Field
Dim rs As DAO.Recordset
IntFieldLen = 0
Set rs = CurrentDb.OpenRecordset(sTableName)
For Each fld In rs.Fields
If fld.Name = sFieldName Then
IntFieldLen = fld.Size
Exit For
End If
Next
rs.Close
Set rs = Nothing
Set fld = Nothing
ExitHere:
Set rs = Nothing
Set fld = Nothing
Exit Function
ErrorHandler:
MsgBox Err.Description, vbInformation, "提示"
Resume ExitHere
End Function
附上我们的新增窗口窗体文件,里面有全部代码
点击下载此附件