Office中国论坛/Access中国论坛

标题: 请高手指导,怎么样在窗体里锁定字段的问题。 [打印本页]

作者: fjchan    时间: 2008-12-8 19:03
标题: 请高手指导,怎么样在窗体里锁定字段的问题。
比如第(1)条记录里的某几个字段锁定,而(1)条记录里的别的字段却能编辑,但是第(2)条记录里被第(1)条锁定的字段又不受第(1)条已锁定的影响,可以编辑,想锁定时再锁定。第(3)也一样。应该怎么做啊!
作者: Henry D. Sy    时间: 2008-12-8 19:12
请参阅locked属性
作者: tmtony    时间: 2008-12-8 21:00
如果 是数据表窗体
可以 Enabled和Locked属性一起来用
作者: fjchan    时间: 2008-12-8 21:55
标题: 看不懂,我把这个附件上传下,麻烦高手们看看。
看不懂,我把这个附件上传下,麻烦高手们看看,要用什么方法。

[ 本帖最后由 fjchan 于 2008-12-8 22:13 编辑 ]
作者: Henry D. Sy    时间: 2008-12-8 22:13
把窗体的原代码删掉,把窗体的可编辑属性设为是
然后
  1. Private Sub 命令168_Click()
  2.     Dim ctl As Control
  3.     For Each ctl In Me.Controls
  4.         If ctl.ControlType = acTextBox Then
  5.             If Left(ctl.ControlSource, 2) = "08" Then
  6.                 ctl.Locked = True
  7.             End If
  8.         End If
  9.     Next
  10. End Sub
复制代码
另一个按钮,你照着这个方法自己做做看。

[ 本帖最后由 Henry D. Sy 于 2008-12-8 22:17 编辑 ]
作者: fjchan    时间: 2008-12-8 22:19
谢谢回答,可是这样的话如果一个选项卡里的数据编辑完了之后点了打印之后,同一个选项卡的下一条记录也不能编辑了。还有我退出来之后再进去,又能再编辑了,没锁住。能再指教下吗?

[ 本帖最后由 fjchan 于 2008-12-8 22:28 编辑 ]
作者: Henry D. Sy    时间: 2008-12-8 22:27
所以说你要考虑周全,帮你的人并不知道您的真正用途,只知道你要锁定。
  1. Dim ctl As Control
  2. Private Sub Form_Current()
  3.     For Each ctl In Me.Controls
  4.         If ctl.ControlType = acTextBox Then
  5.             If Left(ctl.ControlSource, 2) = "08" Then
  6.                 ctl.Locked = False
  7.             End If
  8.         End If
  9.     Next
  10. End Sub
  11. Private Sub 命令168_Click()
  12.     For Each ctl In Me.Controls
  13.         If ctl.ControlType = acTextBox Then
  14.             If Left(ctl.ControlSource, 2) = "08" Then
  15.                 ctl.Locked = True
  16.             End If
  17.         End If
  18.     Next
  19. End Sub
复制代码

作者: fjchan    时间: 2008-12-8 22:30
高手,Private Sub ÃüÁî168_Click() 是什么字符
作者: fjchan    时间: 2008-12-8 22:31
原来是乱码,要刷新下才行
作者: fjchan    时间: 2008-12-8 22:37
果然可以,真是谢谢了。
作者: Henry D. Sy    时间: 2008-12-8 22:46
帮你写成过程,使另一个按钮也可以调用
  1. Private Sub Form_Current()
  2.     LockCtl False
  3. End Sub

  4. Private Sub 命令168_Click()
  5.     LockCtl True, "08"
  6. End Sub

  7. Sub LockCtl(bln As Boolean, Optional str As String)
  8.     Dim ctl As Control
  9.     For Each ctl In Me.Controls
  10.         If ctl.ControlType = acTextBox Then
  11.             If Len(str) <> 0 Then
  12.                 If Left(ctl.ControlSource, 2) = str Then
  13.                     ctl.Locked = bln
  14.                 End If
  15.             Else
  16.                 ctl.Locked = bln
  17.             End If
  18.         End If
  19.     Next
  20. End Sub
复制代码

[ 本帖最后由 Henry D. Sy 于 2008-12-8 23:03 编辑 ]
作者: tmtony    时间: 2008-12-9 01:47
好人做到底
作者: fjchan    时间: 2008-12-9 21:28
太谢谢了
作者: friendship    时间: 2008-12-9 22:34
高水平!




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3