2017-03-07 87 views
0

隐藏列我有我的主要形式上的两个按钮。其中一个是用户记录反馈,另一个是让我进入并为该反馈添加注释/状态更新。这两个按钮在拆分窗体视图中打开相同的窗体。我想隐藏特定的列,当用户点击他们的按钮与我点击管理按钮。我曾尝试:这两个按钮打开相同的形式,形式开设了一个公众Sub但是之前被称为该布尔变量为true(用于用户按钮)或假(为我的按钮)。然后,当加载过程触发时,它会检查变量值,并尝试隐藏列或不尝试。下面是该代码:在拆分表格的MS Access

Option Compare Database 

Public booFeedback    As Boolean 

Public Sub FeedBackBoolean1() 
booFeedback = False 
End Sub 


Public Sub FeedBackBoolean2() 
booFeedback = True 
End Sub 

然后当窗体本身加载运行这段代码:

Private Sub Form_Load() 

Call cmdRemoveFilter_Click 
If booFeedback = False Then 
    Me.colPriority.ColumnHidden = True 
    Me.colWorkEffort.ColumnHidden = True 
    Me.colStatus.ColumnHidden = True 
    Me.colDeliveryDate.ColumnHidden = True 
    Me.colStatusComments.ColumnHidden = True 
Else 
    Me.colPriority.ColumnHidden = False 
    Me.colWorkEffort.ColumnHidden = False 
    Me.colStatus.ColumnHidden = False 
    Me.colDeliveryDate.ColumnHidden = False 
    Me.colStatusComments.ColumnHidden = False 

End If 
End Sub 

代码运行正常不过的结果不显示(即我寻找隐藏的列没有正确隐藏)。我发现,如果我进入设计模式,然后关闭并保存,下次运行代码时,代码将正常工作。但是,如果我点击其他按钮,那么结果与上次运行结果相同。另外,我在管理员按钮上放置了伪密码,以便没有人可以点击进入它。到目前为止,不担心安全问题,将会走上正轨。

回答

0

对于起动器,可以简化代码,不需要如果那么否则:

Me.colPriority.ColumnHidden = Not booFeedback 
Me.colWorkEffort.ColumnHidden = Not booFeedback 
Me.colStatus.ColumnHidden = Not booFeedback 
Me.colDeliveryDate.ColumnHidden = Not booFeedback 
Me.colStatusComments.ColumnHidden = Not booFeedback 

现在调试,设置断点,什么是执行过程中booFeedback的价值?如果不符合预期,请查看代码逻辑。马上,如果booFeedback和这两个潜艇是在一个通用模块中,我没有看到失败的原因。

我会简单地打开形式和代码形式背后一个按钮(可以消除公众的变量和潜艇),这将决定用户是否管理员授权和显示/隐藏字段作适当。可以有一个存储Windows用户ID和权限级别的用户表。然后代码可以从系统中检索用户Windows ID并匹配记录在表中。或者可以硬编码管理员用户ID。通过以下方式检索Windows用户标识:Environ(“USERNAME”) - 是的,输入与此完全相同。

booFeedback = ENVIRON( “USERNAME”)= “adminWindowsUsername”

这是拆分数据库设计?导航窗格是隐藏的吗?功能键是否被禁用,用户无法展开窗格?右键单击快捷菜单是否被禁用?你是否(也许是用户)知道在打开数据库时覆盖这些项目设置的Shift键绕过?

+0

HI月, 谢谢您的回复!我确实设定了一个断点,并且每次都正确评估booFeedback。代码尽可能运行,但窗体仍然显示不正确。此外,我知道Shift旁路等,但在这一点上,我们不太关心安全性。截至目前,它正在分发给一个小组。它也将以ACCDE形式分发。希望将这个项目从Access中解放出来,然后最终迁移到一个Web应用程序(至今我还没有什么知识)。对于现在的打法是让应用程序相当简单 – Chuck0185

+0

我做了你的建议的编辑,绝对缩短了代码,但还是同样的问题。当我打的用户按钮,它的块中的字段,但后来当我回去打管理员按钮等领域仍形式加载时受阻。然后,如果我进入设计模式,然后保存并关闭,然后点击管理按钮,字段不再被阻止。然后我关闭窗体返回并点击用户按钮,这些字段仍然没有被阻止。看起来它与设计模式有关? – Chuck0185

+0

我在拆分和数据表视图中做了一些表单实验。该代码与数据表形式很好地工作,但拆分形式将不合作。我认为分裂形式的本质是不可能的,其他讨论的研究支持这一结论。这里是一个https://access-programmers.co.uk/forums/showthread.php?t=200972 – June7