• ベストアンサー

ACCESSで計算結果を格納する方法

こんにちわ。いつもお世話になっております。 うまく説明できないのですが、フォームに入力した金額などを、Sum計算式で合計や粗利などをだせるようにテキストボックスにつくりました。 この数値をテーブルに格納したいのですが、そういう方法はあるのでしょうか。 「演算結果をテーブルに格納」というタイトルで質問されていらっしゃる方の回答を参考にしてみたのですが、うまくいきません。 いろいろ触っているうちに 「イベントプロパティに指定した式クリック時でエラーが発生しました。名前が適切ではありません:レコードの保存_Click」というエラ 「"LinkMasterGields/リンク親フィールド"プロパティの設定でエラー'名前が適切ではありません:レコードの保存_Click'が発生しました。」というエラーが出始めました。出る前に記述したところをなおしたつもりですがそれでもでてきます。 上司は「エラーが出てくるようになったら進んでいる証拠だから」とのんきなのですが、猶予をいただいてずいぶんたつのでそろそろ形にしていかなくてはと恥をしのんでいろいろ質問させていただこうと決意しました。どうぞよろしくお願いいたします。

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.6

ANo.3&5です。 平日は夜しかアクセスできませんので、あしからず。 >これは新しい質問を立て直した方がよいのでしょうか…? 新しいご質問では、ぜひ具体的にお書き下さい。 Accessの達人が大勢いらっしゃいますので。

redmoon13
質問者

お礼

ご回答ありがとうございます。 わざわざお返事をいただいているだけでもありがたいとおもっております。どうもありがとうございます。 新しい質問をたてさせていただきます。 ありがとうございました。

その他の回答 (5)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.5

ANo.3です。 メインのテーブルの構造は、請け負った仕事のID、同案件名、作業項目... サブのテーブルは、請け負った仕事のID、個別案件名、希望金額、締め切り日... メインテーブルの単票フォーム内のサブフォームに、サブテーブルを帳票形式で表示して、個別案件を入力する。サブフォーム内のレコードの各案件の希望金額の合計や支払金額、粗利などを計算して、サブフォーム内のテキストボックスに表示させている、サブフォーム内のコマンドボタンを押すと、計算結果をメインフォームのフィールドに転送したい。 下記の様なコードを書いたが、どこで、どんなエラーが出てNG というように具体的に書いていただかないと、凡人には分かりません。抽象的なご質問には、抽象的な回答しか返せないと思います。

redmoon13
質問者

お礼

ご回答ありがとうございます。 いま自分がどの段階でつまづいているのかよくわかっていなくて抽象的な質問になってしまって申し訳ありませんでした。 今の説明で、なんか確かにそんな感じだなと思いました。まとめていただいてありがとうございます。だからうまく説明できないという感じでしたが、これですっきりしました。そうなんです、計算結果をメインフォームのフィールドに送りたいのですが、どうにかしてできる方法はないでしょうか?お礼に質問をつけるのは大変失礼だとおもいますが…これは新しい質問を立て直した方がよいのでしょうか…? いたらなくて本当にもうしわけありませんでした。

  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.4

> イベントでフィールドへ値を入れるというのはどういうことでしょう。 非表示の連結コントロールへイベントで値を書き込んだり、レコードソースにつかってるフィールドへ直接書き込んだりと言う話ね Accessを使うなら、テーブルとクエリの話で7割方片付くよ フォームとレポートは、使い勝手の話が主になって、データの話は、こちらでは殆どしないから・・・ DAO、ADOとかの話が出てくると、また話が変わってくるけど・・・ 大体、テーブル構造の失敗的な話が、私の場合多いかな? 大半出来上がった後で、気が付いて収拾付かなくて、DAOorADOで追っ付け仕事にするパターン

redmoon13
質問者

お礼

ご回答ありがとうございます。 やはりクエリで計算させるか、テーブルの構造を根本的に変えてしまうしかないのですね…

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.3

どういうフォームなのでしょうか。テーブルやクエリを元にした単票のフォームなら、計算結果を対応するフィールドに入れてやるだけで済むと思うのですが...それとも、テーブルやクエリとは全く独立したフォームで、テーブルに格納する部分を全て記述しなければならないのでしょうか。 #1さんのご指摘の通り、テーブルには入力した金額だけを保存し、計算はクエリで実行させるのが普通だと思うのですが、何か特殊な事をしたいのでしょうか。 状況の説明が不足していると思います。

redmoon13
質問者

補足

回答ありがとうございます。 どういうフォーム…請け負った仕事の案件名や作業項目がを入力するテーブルの中に、その案件の中の各々の名前や希望金額、締め切り日などが入れられる様になったテーブルを入れ込んだフォームです。出した計算はその中に入った案件の合計や支払金額、粗利などを計算式で表示させています。 クエリはいっさい使用していません。 格納して何がしたいのか…うーんと、データとして残したい? あえていうと、この後、これを元に一覧表ができるようにしたいのです。 受注先/作業項目/受注名/受注日/完了日とここまでメインでテーブルがあってこの先に、計算結果の見積金額/外注支払い/請求金額/入金金額/粗利が横にならんだクエリかレポートを作って一目でみられるようにしたいのです。

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.2

> 名前が適切ではありません このエラーは、同じ名前のプロシージャが 複数存在する場合に発生します。

redmoon13
質問者

お礼

回答ありがとうございます。 なんとなくこころあたりがあります。テストで作っているので同じようなのをちょっとバージョンを代えて作ったのでそのせいかもしれません。

  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.1

普通、計算で、算出可能なものは、テーブルに保管しません ですので、そう言うのは、想定して無いのですが・・・ 通常、更新クエリ、追加クエリで、結果を保管しますので、イベントの話が、出てくると言うことは・・・ DoCmd.RunSQL "SQL文" CurrentDb.Execute ("SQL文") の、どちらかで、追加or更新クエリ動作と言う話でしょうね イベントで、フィールドへ値を入れると、言うのも出来なくは無いけど・・・1つづつ実行すると言うのも変でしょ?

redmoon13
質問者

お礼

ご回答ありがとうございます。 ごめんなさい。なんかいろいろアクセスとかのサイトの見過ぎで頭がパンクしちゃってクエリとかイベントとかいわれてもいまいちピンとこないのです。 計算で算出可能なものはテーブルに保管しないんですねぇ… イベントでフィールドへ値を入れるというのはどういうことでしょう。

関連するQ&A

  • 演算結果をテーブルに格納

    いつもお世話になっております。 Access2000で、演算した結果をテーブルに格納するにはどうしたらいいのでしょうか? 例えば、ある商品の合計金額をSum([金額])で計算させて、それを後々使いたいのでテーブルに格納しておく…というようなことをしたいのです。 フォームから入力したデータを演算させることまでしかわからないので^^; できればサルでも解かるくらい解かりやすく説明していただけるとありがたいです。 よろしくお願いします。

  • ACCESSで計算結果を格納する方法

    いつもおせわになっております。同じ案件名で質問したのですが、説明がつたなすぎたので質問しなおします。 メインのテーブルの構造は、受注先、作業項目、受注名(主キー)、担当者(これはなくそうと思っています)、受注名、注文日、完了日、(見積金額、請求金額、入金金額、外注支払い、粗利益)とあります。 サブのテーブルは、ひとつの案件の中に小分けの案件があるので、 ナンバー(オートナンバー/主キー)受注名、サブタイトル、ページ数、希望金額、取り掛かり日、作成終了日、提出日、締め切り日、支払先1、支払金額1(支払先1への支払い金額です)、支払先2、支払金額2、支払先3、支払い金額3、請求日、請求金額、入金日、入金日、見積もり、調査、報告書(最後の三つは、やったかどうかのチェック用のチェックボックスです) メインテーブルとサブテーブルはたしか受注名で繋がっています。 メインテーブルの単票フォーム内のサブフォームに、サブテーブルを帳票形式で表示して、個別案件を入力するようにしました。サブフォーム内のレコードの各案件の希望金額の合計や支払金額、粗利などを計算して(Sumや足し算引き算)、サブフォーム内のテキストボックスに表示させています。これが、メインテーブルの()の中身にあたります。 これをなんとかして(サブフォーム内のコマンドボタンを押すなど?して)計算結果をメインフォームのフィールドに転送したいのですが、方法はないでしょうか? できれば、いまアクセスのサイトや本を見過ぎていっぱいいっぱいなのでわかりやすく説明していただければ幸いです。 。

  • Access VBA Sub のパラメーター

    フォームに作ったボタンのイベントとして、 「イベント プロシージャ」→「クリック時」→ 「・・・」で サブルーチンを作ろうとしています。 「・・・」で Private Sub 名前_Click() が出ますが、パラメターを、例えば「名前_Click(p1)」と付けると 「イベントプロパティに指定した式 クリック時 でエラーが発生しました: ・・・」 が出ます。 (1)_Click()には、パラメターを設定できないのでしょうか? (2)もし、付けられるのでしたら、付ける方法を教えて下さい (3)もし、_Click()には、パラメターを設定できないのでしたら、代替え方法を教えて下さい よろしくお願いします。

  • accessについて教えてください

    データベースソフト【アクセス】のエラーメッセージについて教えてください 独学でアクセスを勉強しています。 アクセスのテキストを辿りながら売上管理のフォームを作成しました 3つのテーブルがありリレーションさせています (1)フォームで商品登録フォームをテーブルを元にオートフォームで作成しました フォームを閉じるボタンを設定し実行してみたところ。。。 【イベントプロパティに設定した式 クリック時 でエラーが発生しました:名前が適切でありません:終了_Click *マクロ名、ユーザー定義関数名、[イベントプロシージャ]以外の式が指定されています *関数、イベント、マクロの評価でエラーが発生しました】 以上のメッセージが表示されました テキストの解答とプロパティと設定は全て同じでした リレーションシップも参照整合性も設定は全て同じです (2)上記のエラーメッセージ以外に 上記と同じフォームから新しいデータを入力をしてみたらこちらもエラーメッセージが出ました 【リレーションシップを設定しているテーブルがあるためレコードを削除または更新ができません】 という内容です たまに出るメッセージなのですが これまではテーブルのフィールド名が違っていて、訂正すると新レコードの入力ができました 今回も色々確認してみましたが理由がわかりません アクセスを業務で使用したことがないためエラーの対処方法がわかりません ホームページや書店で色々探してみましたが理由がまったくわかしません 初心者な質問なのかもと思いますが お分かりのかたがいらっしゃればアドバイスお願いします

  • フォーム上のフィルタで抽出されたデータをテーブルに格納したい

    フォーム上のフィルタで抽出されたデータをテーブルに格納したい 度々お世話になります。 フォーム上で3つのキーワードを使って抽出したデータを テーブルに格納したいと思っています。 以下のコードを書いたところ、矢印の部分でエラーが起こります。 お知恵を拝借できませんでしょうか? よろしくお願いいたします。 Private Sub cmd04_Click() Dim db As DAO.Database Set db = CurrentDb() Dim mySQL As String mySQL = "INSERT INTO 04_パソコン機器管理台帳 select * FROM T05_使用者一覧抽出結果 WHERE " & Me.Filter & ";" If MsgBox("該当レコードを追加します。", vbYesNo) = vbYes Then ' SQLを実行します。 db.Execute mySQL   ←エラーが発生します。 MsgBox "該当レコードを追加しました。" End If End Sub

  • アクセス2003 テーブルの設計について

    工事管理システムを作成しています。 月ごとの担当者ごとの今月売上金額や今月粗利金額を手入力で テーブルに保存(格納)しておきたいのですが、テーブルの設計が分からず困っています。。 ■今月販売テーブル [フィールド名] 年月 担当者名 今月売上金額 今月粗利金額 年月には[2013/10][2013/11]・・・と年月を入力して準備しています。 複数の担当者がいるために担当者名を入力して準備すると [2013/10 田中][2013/10 山田]・・・・とひと月×担当者の人数が必要になります。 また、担当者が増えた場合に手間が発生してしまいます。 元々の考え方が間違っていると思いますので、アドバイスをいただけたらありがたいです。 「今月販売」フォームで入力したい年月と担当者名を選択して入力出来ないかと考えています。

  • Access 2003 VBA について

     始めまして Access 初心者です。  ある、フォームのテキストボックスに入力した内容を元に、 コマンドボタンクリック時に、Aテーブル内容を検索し、テキストボックスに 入力した内容と一致しない場合にAテーブルに格納し 一致するレコードが見つかった場合は、エラーを表示したいのですが、 どのように記述すればいいのでしょうか? 駄文失礼します。

  • 【Access2003】

    検索フォーム(帳票フォーム)にて各レコードにチェックボックスを設けています。 クエリにて抽出したレコードをボタンクリックで全チェックボックスを選択(Yesに)したいのですが、うまくいきません。 ボタンのプロパティの『クリック時』にどういうVBAを指定したら良いのでしょうか? ちなみに、その逆はできます。 Private Sub 選択全解除_Click() Dim CN As ADODB.Connection Dim mySQL As String Set CN = CurrentProject.Connection mySQL = "UPDATE T_データベース SET 選択=False;" CN.Execute (mySQL) Me.Requery CN.Close Set CN = Nothing End Sub 選択=True;にするとテーブルの全レコードがYesになってしまいます。 テーブル名の部分にクエリ名を指定してもうまくいきません。 宜しくお願い致します。

  • Accessでの VBのコーディングを教えて下さい。

    今回、初めてAccessで「顧客管理」を作成しています。 1対多のテーブルで、フォームを作成して、 サブフォームに表示されている多側のテーブルのレコードを、1レコードづつフォームで開きたいのですが、 今のコーディング(下記に表示)では、 既存のレコードしか開けません。 これに、新規のフォームを開いてレコードの追加も行いたいので、良かったらどなたかコーディングを教えて頂けませんでしょうか?宜しくお願いします。 Private Sub 売上メインボタン_Click() On Error GoTo Err_売上メインボタン_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "売上登録メインフォーム" stLinkCriteria = "[売上キー]=" & Me![売上キー] DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_売上メインボタン_Click: Exit Sub Err_売上メインボタン_Click: MsgBox Err.Description Resume Exit_売上メインボタン_Click End Sub

  • Accessでレコードの保存をVBAで

    Access2000です。 入力するとすぐに集計をしたいのですが、 フォームフッターの集計用テキストボックス (=sum([フィールド名])が設定されている) は、レコードを保存しないと、再計算されないようです。 そこで、入力して、フォーカスを喪失するときに DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 を実行して、レコードを保存しているのですが、 デバッグのとき、エラーが発生しますし、 (デバッグ中は、VBAエディタが表示されるため) また、メニューの実行のコマンドは物足りないので、 指定したフォームのレコードを保存する方法は、 他にないでしょうか? よろしくお願いいたします。

専門家に質問してみよう