アプリ版:「スタンプのみでお礼する」機能のリリースについて

フォーム内にあるサブフォームに入力しているレコードをクリアしたいのですが
その方法について教えてください。

サブフォームのデザインビューからクリアボタンを配置してもなぜか表示されずできません・・・
何かいい方法があれば教えてください。

質問者からの補足コメント

  • うーん・・・

    説明足らずで申し訳ありません。

    今は、フォーム内にあるサブフォームに請求書ナンバーを入力し、印刷ボタンを押すとクエリからその請求書ナンバーのデータを印刷してくる仕組みになっています。

    私がしたいのは印刷されたあとサブフォームに入力した請求書ナンバーをクリアしてまた一から入力できるようにしたいです。
    (または印刷されたら自動的にクリアできると最高です・・・)
    一つずつ消していくと面倒なので、クリアボタンがあればなぁと思い質問しました。
    説明不足で申し訳ありませんが宜しくお願い致します。

    No.1の回答に寄せられた補足コメントです。 補足日時:2020/07/10 11:20
  • つらい・・・

    ご回答ありがとうございます。

    もともと印刷ボタンは埋め込みマクロだったのでそれをVBAに変換し提示して頂いた式を入力しましたが作動しませんでした・・・。

    あと、もうひとつ問題が・・・
    サブフォームを空白にすると「バリリアント型ではない変数にNull値を代入しました」みたいなメッセージを出るのですがどこを変えたらそれが消えるのかいまいちわからないです、、

    No.3の回答に寄せられた補足コメントです。 補足日時:2020/07/10 13:42
  • どう思う?

    帳票フォームに変えるとボタンが現れました!
    ありがとうございます。

    しかし、クリアボタンを押すと「バリリアント型ではない変数にNull値を代入しました」というようなメッセージが出てきてしまいます・・・

    No.2の回答に寄せられた補足コメントです。 補足日時:2020/07/10 13:43
  • うーん・・・

    詳しい説明ありがとうございます(´;ω;`)

    埋め込みマクロをVBAにするからダメなんですかね?
    押しても反応しないです・・・

    No.4の回答に寄せられた補足コメントです。 補足日時:2020/07/10 15:09
  • つらい・・・

    Function マクロ1()
    On Error GoTo マクロ1_Err

    DoCmd.OpenReport ChrW(-30159) & ChrW(21487) & ChrW(-30148) & ChrW(30330) & ChrW(-30644) & ChrW(73) & ChrW(68) & ChrW(32) & ChrW(12463) & ChrW(12456) & ChrW(12522), acViewReport, "", "", acNormal

    マクロ1_Exit:
    Exit Function

    マクロ1_Err:
    MsgBox Error$
    Resume マクロ1_Exit

    End Function

    コードが長くて記入できなかったので、 acNormalのあとに教えて頂いた式を入れましたが作動せずです・・・

      補足日時:2020/07/10 15:10
  • つらい・・・

    次こそ行けると思ったのに次はコンパイルエラーが・・・
    メソッドまたはメンバーが見つかりませんと出ます・・・

    コードはコピーして入れたので間違いはないと思うのですが・・・
    デバックすると青い線でひかれている箇所は(Me「.サブフォーム名」.Requery)このかぎかっこの部分です。
    何か関係はありますか・・・?

    No.5の回答に寄せられた補足コメントです。 補足日時:2020/07/10 16:05

A 回答 (7件)

すみません、追記です。


No.5の自分の書き込みを見返していたら、1行コピーし忘れていたところがありました。


Private Sub ボタン名_Click()
On Error GoTo ボタン名_Click_Err

DoCmd.OpenReport "レポート名", acViewReport, "", "", acNormal

DoCmd.SetWarnings False '削除確認メッセージを表示しないようにします。削除前に確認して欲しい場合はこれは消してください。

DoCmd.RunSQL "DELETE FROM テーブル名"
Me.サブフォーム名.Requery

DoCmd.SetWarnings True '削除確認メッセージを表示するように戻します。

ボタン名_Click_Exit:
Exit Function

ボタン名_Click_Err:
MsgBox Error$
Resume ボタン名_Click_Exit

End Sub


「DoCmd.SetWarnings False」の行です。
無いと、「○件削除します」みたいな確認メッセージが表示されます。(他のところでエラーメッセージを消すよ、って処理をしていると、この行を削除しても、メッセージが出ないことがあります。)
コメントに書いてあるとおり、これはお好みでOKです。
「DoCmd.SetWarnings False」を消した場合は、最後の方の、対応する「DoCmd.SetWarnings True」も消しておいてください。
    • good
    • 0

サブフォーム名が間違っているのだと思います。


そうですね・・・では、コピーするのではなくて、
me.
まで手入力してみてください。「.」(点)までです。
そうすると、次に入力できる選択肢が出てくると思います。
その中に、サブフォームのオブジェクトの名前があるはずですので、探してみてください。
ABC順ですので、日本語でつけてあるなら、かなり後ろ(下)の方にあると思います。
あったらそれを選択して、で、その後ろにまた「.」(点)を手入力します。
そうするとまた選択肢が出ますので、その中から「Requery」を探してください。
    • good
    • 0

> 埋め込みマクロをVBAにするからダメなんですかね?


> 押しても反応しないです・・・

VBAに変換した後、ボタンの処理に割り付けられてない、とかでしょうかね・・・。

メインフォームのデザインビューで印刷ボタンを選択して、プロパティの「クリック時」イベントを見てください。
ここは「イベント プロシージャ」となっていますか?
もしなっていなかったら、「イベント プロシージャ」を選択してください。
で、右側に「…」というボタンがあると思いますので、それを押します。
そうすると、


Private Sub ボタン名_Click()


End Sub


みたいな感じの画面が出てくると思います。
そこに


Private Sub ボタン名_Click()
On Error GoTo ボタン名_Click_Err

DoCmd.OpenReport "レポート名", acViewReport, "", "", acNormal

DoCmd.RunSQL "DELETE FROM テーブル名"
Me.サブフォーム名.Requery

DoCmd.SetWarnings True '削除確認メッセージを表示するように戻します。

ボタン名_Click_Exit:
Exit Function

ボタン名_Click_Err:
MsgBox Error$
Resume ボタン名_Click_Exit

End Sub


と書き込んでみてください。
この回答への補足あり
    • good
    • 0

> しかし、クリアボタンを押すと「バリリアント型ではない変数にNull値を代入しました」というようなメッセージが出てきてしまいます・・・



うーん、実際のソースやテーブル構造を見てみないとなんとも言えないですね。

No.1さんへの補足からすると、印刷ボタンがメインフォームにあるんですよね?
で、本当は、印刷ボタンを押して印刷が実行されたら、その流れでそのまま、サブフォームのデータを削除したい、ということでよろしいでしょうか?
そうであれば、印刷ボタンVBAの印刷処理(DoCmd.OpenReport)の次に、以下を記入してみてください。


DoCmd.SetWarnings False '削除確認メッセージを表示しないようにします。削除前に確認して欲しい場合はこれは消してください。

DoCmd.RunSQL "DELETE FROM テーブル名"
Me.サブフォーム名.Requery

DoCmd.SetWarnings True '削除確認メッセージを表示するように戻します。


「テーブル名」「サブフォーム名」のところは、ご自身のプログラムに合わせて変更してください。
「テーブル名」は、サブフォームの元になっているテーブルのことです。
サブフォームのプロパティで「レコードソース」に書いてあるテーブルです。
「サブフォーム名」は、サブフォーム自体のフォーム名じゃなくて、メインフォームのデザインビューで、サブフォームのオブジェクトについている名前のことです。

これで、印刷処理が終わったら、そのまま自動でデータが削除されます。
試す前に必ずバックアップを取っておいてください。(間違って他のテーブルのデータを削除してしまった!なんて時のため。)
サブフォームにはクリアボタンは必要なくなりますので、データシートビューに戻してもOKです。
この回答への補足あり
    • good
    • 0

印刷ボタンの命令に



Me.テキストボックス名.Value = Null

を追加すればいいと思いますが。
この回答が全く意味不明だとするとちょっと説明が難しいかも。
(自分のAccessのバージョンが古いので、ここをこうして・・・という説明がたぶんできない。^^;)
この回答への補足あり
    • good
    • 0

サブフォームの表示方法をデータシートビューにしていませんか?サブフォームのプロパティで「既定のビュー」を確認してください。


データシートビューの場合は、ボタンは表示されません。
その場合は、帳票フォームなどに変更しましょう。
この回答への補足あり
    • good
    • 0

状況が分からないのですが、クリアしたいとはレコードの削除のことでしょうか?


行ったのはコマンドボタンの配置ですか?
コマンドボタンのウィザードでレコードの削除を選択して配置する操作をしたけど、ボタンが配置(表示)されないということでしょうか?
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています