• ベストアンサー

アクセスで演算のみのフォームをについて。

アクセスで数値を入力して、1クリックで計算結果が出せるようなフォームを作成中なのですが、リセットボタンでクリアするにはどのようにしたらよいでしょうか。その都度データを残さない(保存しない)方向でしたいのですが、「新規レコード追加」にするとデータが保存されてしまいます。「レコードの削除」にすると毎回「1件のレコードを削除してもよいですか?」のコメントがでてきます。リセットボタンを1クリックでデータを空白にしたいと考えています。どなたかよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.4

補足への回答がないようですので、横レスさせていただきます。 > 「ctl=""」にエラーがつきます。 そのフォームのテキストボックスには、演算コントロールが含まれているのでは ないでしょうか。 だとすると、演算コントロールには値の代入はできないので、エラーになります。 (「このオブジェクトに値を代入することはできません」という実行時エラー) そうであれば、「Ctl=""」の代入に更に条件をつけるか、面倒でも全ての非連結 コントロールを列挙して代入するか、のいづれかを採る必要があります。 上記の「演算コントロールあり」の仮定が当たっているなら、以下のようにすれば、 エラーは回避できると思います: <現状>   ctl = "" <修正後>   '演算コントロールのコントロールソースは常に「=」で始まることを利用して、   '演算コントロールかそれ以外(連結/非連結)かを判断します   If Left(ctl.ControlSource, 1) <> "=" Then ctl = ""

ayanohina
質問者

お礼

丁寧なご回答ありがとうございました。おかげさまでようやく解決しました。今後もよろしくお願いいたします。

その他の回答 (3)

noname#140971
noname#140971
回答No.3

例えば、フォームに非連結の[生年月日]と[計算日」を配置します。 で、[コマンド_年齢計算]で計算した年齢を[年齢]に表示するには・・・。 Private Sub コマンド_年齢計算_Click()   If Len(Me.生年月日 & "") * Len(Me.計算日 & "") Then     Me.年齢 = GetAge(Me.生年月日, Me.計算日)   Else     If Not Len(Me.生年月日 & "") Then       MsgBox "先に、[生年月日]を入力してください!"     Else       MsgBox "先に、[計算日]を入力してください!"     End If   End If End Sub で、[コマンド_初期化]でテキストボックスを初期化するには・・・。 Private Sub コマンド_初期化_Click()   Dim ctl As Control        For Each ctl In Me.Controls     If ctl.ControlType = acTextBox Then       ctl = ""     End If   Next End Sub なお、次のGetAge関数の信頼性は薄いと思って下さい。 あくまでも検証テストのために補足しているに過ぎません。 Public Function GetAge(ByVal Birthday As Date, ByVal Hiduke As Date) As Long   GetAge = DateDiff("yyyy", Birthday, Hiduke) + _        (Format(Birthday - 1, "mm/dd") > Format(Hiduke, "mm/dd")) End Function

ayanohina
質問者

補足

早々のご回答ありがとうございました。非連結フォームを作成しなおし、下記の初期化コマンドを試しましたがうまくいきません。 どこがおかしいのでしょうか。「ctl=""」にエラーがつきます。 Private Sub コマンド_初期化_Click()   Dim ctl As Control        For Each ctl In Me.Controls     If ctl.ControlType = acTextBox Then       ctl = ""     End If   Next End Sub

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

テーブルに残したくない(残す必要のない)計算式は 非連結のテキストボックスに書くか フォームのソースをクエリにすればいいだけです と言うかそうするのが当たり前

noname#140971
noname#140971
回答No.1

フォーム!レコードソース=空白 テキストボックス!コントロールソース=空白 単なる演算だけですと、このような非連結フォームにする筈。 で、なぜ、連結フォームにしているのでしょうか?

ayanohina
質問者

補足

生年月日を入力して年齢を出しています。その年齢も演算の中に組み込むので連結フォームにしているのですが、非連結フォームでもかのうですか?よろしければ教えてください。お願いいたします。

関連するQ&A

  • アクセスのフォームで

    アクセスのフォームで、ボタンを作成し、新規データ入力に際にそのボタンをクリックすると入力したデータが確定となり、次のレコード(新規データ)の入力になる様にするにはどうしたいいですか? 逆に言えば、そのボタンをクリックしない限り、次の新規レコード入力へ行けない様にしたいです。又、ボタンをクリックしても空白の項目があれば次へ行けない様にしたいです。 教えて下さい。よろしくお願いします。

  • Accessでレコードの保存をせずにフォームを閉じたい

    Accessでデータベースのレコード追加を行うフォームを作成しています。 コマンドボタン(1)をクリック→新しいレコードの追加 コマンドボタン(2)をクリック→フォームを閉じる としています。(ウィザードを使用して、埋め込みマクロ?を設定しています。) コマンドボタン(1)でレコードが追加されるのは問題ないのですが、 コマンドボタン(2)をクリックした場合も、レコードが追加されていることに気がつきました。 一般的に入力する人は、 データを追加しようと思って入力していたけれど、 途中でやめてフォームを閉じることってありますよね? そういう場合にレコードが追加されてしまったら問題だと思ったのです。 ですが、どうしたらレコードの追加をせずにフォームを閉じられるかがわかりません。 それって可能でしょうか? Access初心者です。難しいVBAとかはまだよくわかりません。 何か方法、アドバイス等ありましたら よろしくお願いします。

  • Accessのフォームから削除したレコードをテーブルに保存したい

    Accessを利用してフォームからデータを入力しているのですが、クエリを使わずフォーム画面から不必要なレコードをコマンドボタンで削除しています。削除したレコードをテーブルに保存したいのですが、追加クエリで条件を決めずにフォームの画面から判断したレコードだけを削除し、かつ削除したレコードを削除専用のテーブルに追加する方法を教えてください。よろしくお願いします。

  • アクセス フォームのマクロに関して

    アクセスでマクロにてフォームを閉じるを選択しているのですが 新規レコードが必ず追加されてしまいます。 そのフォームはデータ入力用のフォームなのですがデータ入力終了時 テキスト欄をすべて空白でマクロの閉じるを実行させると 必ずテーブルに空白の新規レコードが入力されてしまいます。 なにかいい方法ありますでしょうか?

  • Accessのフォームでデータ入力時に保存するタイミング

    Accessでフォームを使ってデータを追加しているときに、データを入力した時点でレコードに追加されてしまいますよね? それを、保存ボタンなどで実行してからレコードに追加されるようにするにはどうしたらいいでしょうか? どなたかご存知でしたらおねがいします。

  • ACCESS2000のフォームについて

    フォーム(←単票形式の)のデザインビューで、ツールボックスから、コマンドボタンウィザードを使い、コマンドボタンを作りましたが、ウィザードの最後のボタン名を指定するところで、漢字変換ができず、困っています。 いつもひらがなにしか入力が出来ないのですが、ここで直接漢字入力にするにはどういう処置をすればいいですか。 それから、追加の質問ですが、 作ったコマンドボタン(←レコード削除用)で、レコードを削除しようとしたところ、「リレーションシップが設定されたレコードが、テーブルにあるため、レコードの削除や変更を行えません。」と、エラーメッセージが表示されます。 レコードをフォームから削除するにはどうすればいいですか。 (※無理にしたいわけではないが、そういう命令も勉強の一環でして見たいのです。) 宜しくお願いします。

  • accessの入力フォームでの入力規制

    amuro-kamuiと申します。過日はレスのつかない質問をしてしまい反省しています。 実は職場で使うなんちゃってDBを作っているのですがどうも不満足なので解決策をご教授いただきたいと思い質問させていただきます データ入力フォームを作りいくつかの項目(37個)を入力しているのですが、途中で誤った操作をしてもそのレコードが追加されてしまい困っています。 フォームの中に保存ボタンをつくりました。 このボタンをクリックするまではデータが保存されないようにするにはどうしたらいいのでしょうか? 本当に初歩的な質問ですがよろしくお願いします

  • Accessで新規レコード専用フォーム

    こんばんわ。 Accessで、新規レコード追加専用フォームを作りたいと思います。 まず最初に、フォームAに「新規登録」と「確認」の2つのコマンドボタンを配置し、 前者をクリックしたときに空白状態の「登録フォーム」が表示出来るようにしたいのですが どのようにしたらいいかわからず困っています。 新規登録専用のフォームを作ることは可能でしょうか? どなたかご存知の方がいらっしゃいましたらご指導を宜しくお願い致します。

  • access フォーム上で複数行のレコードを追加したい。

    宜しくお願いします。 仕様環境:WinXP access2002 フォーム上にコマンドボタンで空白のレコードを 追加したいのですが、一行だけなら「値の代入」マクロで 追加できるのですが、複数行だとやり方がわかりません。 「追加クエリ」を作ってコマンドボタンにマクロで乗せてみたのですが、 テーブル上では複数の空白レコードが追加されてますが、 フォーム上には反映してくれません。 「値の代入」マクロを使って、複数行のレコードをフォーム上に追加するか、 「追加クエリ」を使って、複数行のレコードをフォーム上に反映させるか したいのですが教えてください。 ※ ちなみにこのフォームはサブフォームです。   また5行追加しようとしています。   この方法では無理でしたらご指導お願いします。 宜しくお願いします。

  • Accessのフォームについて

    データ1、データ2というテーブルがあり データ2の中身を データ1に追加するという 「追加クエリ」を作りました。 それで、この「追加クエリ」を フォームのボタンをクリックしたときに実行させるようにしたいのですが どのようにすればいいのでしょうか。 (ボタンクリックで作成した「追加クエリ」自体を実行させることができるのか、 それとも追加クエリと同じ動作をさせるコードを記述して更新するようにしないとダメなのか) Accessを始めたばかりであまり詳しくないので 申し訳ないのですが ボタンクリックで作成した「追加クエリ」を実行出きるというのであれば(前者) コードとその説明を簡単でいいので 教えていただけないでしょうか。 よろしくお願いいたします。

専門家に質問してみよう