- ベストアンサー
アクセスで演算のみのフォームをについて。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
補足への回答がないようですので、横レスさせていただきます。 > 「ctl=""」にエラーがつきます。 そのフォームのテキストボックスには、演算コントロールが含まれているのでは ないでしょうか。 だとすると、演算コントロールには値の代入はできないので、エラーになります。 (「このオブジェクトに値を代入することはできません」という実行時エラー) そうであれば、「Ctl=""」の代入に更に条件をつけるか、面倒でも全ての非連結 コントロールを列挙して代入するか、のいづれかを採る必要があります。 上記の「演算コントロールあり」の仮定が当たっているなら、以下のようにすれば、 エラーは回避できると思います: <現状> ctl = "" <修正後> '演算コントロールのコントロールソースは常に「=」で始まることを利用して、 '演算コントロールかそれ以外(連結/非連結)かを判断します If Left(ctl.ControlSource, 1) <> "=" Then ctl = ""
その他の回答 (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
補足
早々のご回答ありがとうございました。非連結フォームを作成しなおし、下記の初期化コマンドを試しましたがうまくいきません。 どこがおかしいのでしょうか。「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)
テーブルに残したくない(残す必要のない)計算式は 非連結のテキストボックスに書くか フォームのソースをクエリにすればいいだけです と言うかそうするのが当たり前
フォーム!レコードソース=空白 テキストボックス!コントロールソース=空白 単なる演算だけですと、このような非連結フォームにする筈。 で、なぜ、連結フォームにしているのでしょうか?
補足
生年月日を入力して年齢を出しています。その年齢も演算の中に組み込むので連結フォームにしているのですが、非連結フォームでもかのうですか?よろしければ教えてください。お願いいたします。
関連する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を始めたばかりであまり詳しくないので 申し訳ないのですが ボタンクリックで作成した「追加クエリ」を実行出きるというのであれば(前者) コードとその説明を簡単でいいので 教えていただけないでしょうか。 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
お礼
丁寧なご回答ありがとうございました。おかげさまでようやく解決しました。今後もよろしくお願いいたします。