Private Sub 選択_Click()
If NewRecord Then
MsgBox "編集できません。選択しなおしてください。"
Me.Undo
End If
End Sub
上記の命令が効いていないようです。メッセージも出ません。
Private Sub 編集_Click()
Dim strFil As String
strFil = "[選択]=" & True
DoCmd.OpenForm "編集F", , , strFil
'DoCmd.Close acForm, "スタート画面F"
'選択.Value = Null
End Sub
上記のスタート画面は消したくないので’を付けてあります。
選択.Value=Null でコンパイルエラーが発生していますので’を付けています。
Private Sub 検証_Click()
Dim strFil As String
If IsNull(Me.ステータスリスト) And IsNull(Me.申請リスト) Then
MsgBox ("コンボボックスの選択がされていません")
Exit Sub
End If
If Not IsNull(Me.ステータスリスト) And IsNull(Me.申請リスト) Then
strFil = "[ステータス] ='" & Me![ステータスリスト] & "'"
End If
If IsNull(Me.ステータスリスト) And Not IsNull(Me.申請リスト) Then
strFil = "[申請内容] = '" & Me.申請リスト & "'"
End If
If Not IsNull(Me.ステータスリスト) And Not IsNull(Me.申請リスト) Then
If MsgBox("二つの条件でAND検索をしますか", vbYesNo) = vbYes Then
MsgBox ("二つの条件でAND検索をします")
strFil = "[ステータス] = '" & Me.ステータスリスト & "'and " & "[申請内容]='" & Me.申請リスト & "'"
Else
MsgBox ("二つの条件でOR検索をします")
strFil = "[ステータス] = '" & Me.ステータスリスト & "' Or " & "[申請内容]='" & Me.申請リスト & "'"
End If
End If
Me.Filter = strFil
Me.FilterOn = True
End Sub
上記はそのままです。
選択のチェックボックスにチェックを入れてもそのデータが編集画面に反映されない現象が発生してしまいました。どこが悪いのか教えて頂ければ幸いです。
>なお、同じボタンやチェックボックスに対する
>イベントは、一つにしないとエラーになります。
この説明のしかたが良くなかったかもしれません。
そのために、
>下記の様に1つのイベントにしようと試行錯誤していますが、
>エラー94がでてなかなか前に進めません。
このような、ことになったのかもしれません。一つのフォームの
コード表の中に、同じプロシージャ名が複数存在するとコンパイル
をすれば「名前が適切ではありません」というエラーが出ますし、
Accessから見ればどの命令を選択すればいの?ということで実行
を停止してしまいます。
補足の、
Private Sub 選択_Click()
If NewRecord Then
MsgBox "編集できません。選択しなおしてください。"
Me.Undo
Me.Refresh
End If
If Me!選択 Then
CurrentDb.Execute "UPDATE 申請履歴Q SET 選択 = False;"
Me.Refresh
End If
End Sub
において、
>If NewRecord Then
>MsgBox "編集できません。選択しなおしてください。"
>Me.Undo
>Me.Refresh
>End If
は、
Private Sub 選択_Click()
If NewRecord Then
MsgBox "編集できません。選択しなおしてください。"
Me.Undo
Me.Refresh
End If
End Sub
という、「選択」というチェックボックスをクリック
したときのイベントに登録し、
>If Me!選択 Then
>CurrentDb.Execute "UPDATE 申請履歴Q SET 選択 = False;"
>Me.Refresh
>End If
これは、単に「選択」というチェックボックスのチェックを
すべてはずすためですから、誤解の無いように
>If Me!選択 Then
と、
>End If
をはずして、「選択解除」というボタンのクリック時の
イベントととして、
Private Sub 選択解除_Click()
CurrentDb.Execute "UPDATE 申請履歴Q SET 選択 = False;"
Me.Refresh
End If
にして登録します。
ファイルの構築が進んでくると、あれもこれものてんこ盛り
にしたくなります。コードの流れ、システムの流れを見失いがちに
なりやすいことを点は十分に留意してください。
なお、コードを書いているときはかならずデバッグから
コンパイルを実行して変数の使い方、やプロシージャの名前、
などの不具合がないかなどを確認してください。
書き忘れましたが、
Private Sub 選択解除_Click()
は、「選択解除」というボタンのクリック時のイベントで、
Private Sub 選択_Click()
は、「選択」というチェックボタンのクリック時のイベントです。
なお、同じボタンやチェックボックスに対する
イベントは、一つにしないとエラーになります。
質問者
補足
下記の様に1つのイベントにしようと試行錯誤していますが、エラー94がでてなかなか
前に進めません。ご助言いただければ幸いです。
何卒、宜しくお願い致します。
Private Sub 選択_Click()
If NewRecord Then
MsgBox "編集できません。選択しなおしてください。"
Me.Undo
Me.Refresh
End If
If Me!選択 Then
CurrentDb.Execute "UPDATE 申請履歴Q SET 選択 = False;"
Me.Refresh
End If
End Sub
二番目の、
Private Sub 選択解除_Click()
If NewRecord Then
MsgBox "編集できません。選択しなおしてください。"
Me.Undo
End If
End Sub
これは、
Private Sub 選択_Click()
If NewRecord Then
MsgBox "編集できません。選択しなおしてください。"
Me.Undo
End If
End Sub
ではありませんか?このプロシージャはチェックボックスを
クリックしたときに新規レコードならばチェックを入れられませんよ、
というメッセージをだして、チェックを入れるのを阻止するための
ものです。
つまり、
Private Sub 選択解除_Click()
を
Private Sub 選択_Click()
に変更。
質問の最初の
Private Sub 選択解除_Click()
は、そのままにします。これはもじどうりチェックをすべて外す
為のプロシージャです。
もし、同じ
Private Sub 選択_Click()
If NewRecord Then
MsgBox "編集できません。選択しなおしてください。"
Me.Undo
End If
End Sub
があるならば、どちらかを削除します。
No1の続きで、もう一つ確認ですが、
>選択のチェックボックスにチェックを入れてもそのデータが
>編集画面に反映されない現象が発生してしまいました。
これは、チェックを入れたデータすべてが表示されないということですか、
それとも、一部のデータが表示されないということでしょうか。その場合は
どのようなデータが表示されないのでしょうか。
それから、
選択.Value = Null
では、エラーがでます。この場合は、
Private Sub 選択解除_Click()
If Me!選択 Then
CurrentDb.Execute "UPDATE テーブル名 SET 選択 = False;"
Me.Refresh
End If
End Sub
というボタンがあるならば、
選択.Value = Null
のかわりに、
Call 選択解除_Click
としてみてください。
ただし、「編集F」が正常に開かれない場合は、
このままコメントアウトしておいてください。
質問者
補足
Private Sub 選択解除_Click()
If Me!選択 Then
CurrentDb.Execute "UPDATE 申請履歴Q SET 選択 = False;"
Me.Refresh
End If
End Sub
Private Sub 選択解除_Click()
If NewRecord Then
MsgBox "編集できません。選択しなおしてください。"
Me.Undo
End If
End Sub
チェックボックスに2種類の同じコマンドがあることが判明、出来る訳ありませんよね。(TT)
如何したら良いか教えて頂けますか。
お礼
数々のご助言ありがとうございます。これから作っていくだろうプログラムではご意見を思い出して頑張っていきたいと思います。