2017-03-07 32 views
0

メインフォームには2つのボタンがあります。そのうちの1つは、ユーザーがフィードバックを記録するためのもので、もう1つは私が入り、そのフィードバックのメモ/ステータス更新を追加することです。両方のボタンは、分割フォームビューで同じフォームを開きます。ユーザーがボタンをクリックしたときに特定の列を非表示にしたい場合は、管理ボタンをクリックしてください。私が試したこと:どちらのボタンも同じフォームを開きますが、フォームが開かれる前に、真の(ユーザボタンの場合)かブール変数の場合(私のボタンのための)いずれかにpublic subが呼び出されます。次に、ロード時のプロシージャが起動すると、変数の値がチェックされ、列を非表示にするかどうかが判断されます。ここではそのコードは次のとおりです。分割フォームの列を非表示にする

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 

結果は(私は非表示にするには探していた列がある表示されませんが、コードが正しく実行されます正しく隠されていない)。デザインモードにして閉じて保存すると、次回実行時にコードが正常に動作することがわかりました。しかし、他のボタンをクリックすると、前回の実行時と同じ結果になります。また、私は誰もそれをクリックすることができないように管理ボタンに疑似パスワードを入れました。今のところセキュリティについてはあまり心配していません。実行中booFeedbackの値が何であるか、

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 

デバッグ、設定されたブレークポイント:スタータ用

答えて

0

は、コードを簡略化することができ、そして、そうでない場合には必要ありませんか?期待通りでない場合は、コードロジックを確認してください。まあ、booFeedbackとその2つのサブシステムが一般的なモジュールにある場合、私は失敗の理由は見ません。

ユーザーが管理者権限を持っているかどうかを判断し、適切なフィールドを表示/非表示にするかどうかを判断する、フォームとフォームの背後にあるコードを単純に開くボタンがあります。 WindowsユーザIDと権限レベルを格納するusersテーブルを持つことができます。その後、コードはシステムからユーザーのWindows IDを取得し、テーブルに記録することができます。管理者ユーザーIDをハードコードすることもできます。 WindowsユーザーIDをEnviron( "USERNAME")で取得します - それに正確に入力してください。

booFeedback = ENVIRON( "USERNAME")= "adminWindowsUsername"

これは、分割されたデータベース設計ですか?ナビゲーションペインは隠されていますか?ファンクションキーが無効になっているため、ユーザーはペインを展開できませんか?右クリックのショートカットメニューが無効になっていますか? dbを開いたときにこれらのプロジェクト設定を無効にするシフトキーバイパスについて、あなた(そして多分ユーザー)は気付いていますか?

+0

HI June、 ありがとうございました!私はブレークポイントを設定し、booFeedbackは毎回正しく評価されます。コードは実行する必要がありますが、フォームは依然として正しく表示されません。また私はシフトバイパスなどを認識していますが、この時点ではセキュリティに関してあまり心配していません。現在、小グループに配布されています。また、ACCDE形式で配布されます。このプロジェクトをAccessの地面から取り除き、最終的にWebアプリケーションに移行したいと考えています(そのうちの私は今のところほとんど知識がありません)。今のところは、アプリケーションをかなりシンプルにすることです。 – Chuck0185

+0

私があなたが提案した編集を行いました。コードを間違いなく短縮しましたが、同じ問題です。ユーザーボタンを押すとフィールドがブロックされますが、私が戻って管理ボタンを押すと、フォームがロードされてもフィールドはブロックされます。その後、私が設計モードに入り、保存して閉じると、管理ボタンを押すと、フィールドはもはやブロックされなくなります。その後、フォームを閉じてユーザーボタンを押すと、フィールドはまだブロックされません。それはデザインモードと関係があるようですね? – Chuck0185

+0

分割とデータシートビューでフォームを試してみました。このコードはデータシートのフォームには効果的ですが、分割フォームは協力しません。スプリットフォームの性質はそうではないようなもので、他のディスカッションの研究はこの結論を支持していると思います。ここに1つhttps://access-programmers.co.uk/forums/showthread.php?t=200972 – June7

関連する問題