• ベストアンサー

クエリの計算結果をテーブルに格納するには?

Windows NTでAccess2000を使っています。 クエリで関数の計算をさせてフォームで必要な数字を打ち込むと 計算結果が表示されるところまでは確認できましたが その値をテーブルに収めることはできないのでしょうか? 計算させたクエリからテーブルを作るというやり方もありますが それはもうひと手間ということになるので出来れば避けたいのです。 よろしくお願いします。

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

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.7

>同じフォームを何個か作って中身だけ替えたいのですが・・ >クエリで場合分けをしているので・・ 場合分けの条件に合う各テーブルを基にクエリを各々作成してそのフォームに設定すれば良いんです。 フィールド名が同じなら同じフォームをコピーしてフォーム自体のプロパティの レコードソースに作ったクエリを設定すれば出来ます。

Sheep17
質問者

お礼

プロパティのコントロールソースのビルダで=[クエリ名][フィールド名]で大丈夫なのでしょうか? フィールド数×フォーム数が多いのでちょっと大変そうですがともかくやってみます。 ありがとうございましたm(_ _)mm(_ _)mm(_ _)m

その他の回答 (6)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.6

>現在表示されているレコードの伝票番号に飛んでしまいました 前の記述はレコードを保存するだけの記述です。保存後フォーカスを移動する だけです。次のレコードに移る場合は下記の記述になります。 Private Sub コマンド1_Click() On Error GoTo Err_コマンド1_Click   Me![納品書金額] = Me![txt_納品書金額]   Me![納品書1本単価] = Me![TXT_納品書1本単価] DoCmd.GoToRecord , , acNext Exit_コマンド1_Click: Exit Sub Err_コマンド1_Click: MsgBox Err.Description Resume Exit_コマンド1_Click End Sub 新規レコードの入力はまた別になります。 >でもMe![納品書1本単価]=Me![Txt_納品書1本単価]の部分を削除して・・ やはりTxt_納品書1本単価か納品書1本単価のフィールドに問題がありますね。 テーブルかフォームかどちらかを調べないとダメですね。 フォームのTxt_納品書1本単価フィールドが単に演算した結果のみ表示するフィ ールドであり他になにか設定が無い限りテーブル側に問題があるのではないかと 考えられるのですが。

Sheep17
質問者

お礼

できましたぁ~(^O^)/(+感涙!) 本当にうれしいです。ありがとうございました。 そしてもうちょっとお世話になってもいいですか? これと同じフォームを何個か作って中身だけ替えたいのですが (クエリで場合分けをしているので項目は同じだけどデータ元が違う場合) プロパティのコントロールソースをひとつひとつ変えていくしか方法はないのでしょうか? 項目名は同じなので「こっちではなくあっちのクエリから取ってきて」という 命令を一括でできると作業がはかどるのですが…。 迷惑かけついでに聞いちゃいます。よろしくお願いしますm(_ _)m

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.5

試しに簡単にDBを作って動かしましたがエラーは出ません。 下記の記述でテーブルに納品書金額も納品書1本単価もレコードは保存されます。 Private Sub 保存ボタン_Click() On Error GoTo Err_保存ボタン_Click Me![納品書金額] = Me![txt_納品書金額] Me![納品書1本単価] = Me![TXT_納品書1本単価] DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 伝票No.SetFocus Exit_保存ボタン_Click: Exit Sub Err_保存ボタン_Click: MsgBox Err.Description Resume Exit_保存ボタン_Click End Sub 記述に間違えとくにMe![納品書1本単価]=Me![Txt_納品書1本単価]のところ。 後はテーブルの納品書1本単価のデータ型など確認してください。

Sheep17
質問者

補足

ご迷惑おかけします。 色々と原因を探ってはいるのですが未だ脱出できません。 でもMe![納品書1本単価]=Me![Txt_納品書1本単価]の部分を削除して 試してみるとなんとか保存はクリアできたのですが 次のタブが次のレコードの伝票番号にではなく、 現在表示されているレコードの伝票番号に飛んでしまいました。 あとMe![納品書1本単価]=Me![Txt_納品書1本単価]の部分の 「1」を半角にしたり色々書式をあわせてみたのですが カーソルを別の行に移すと自動的に大文字に戻ってしまいます。 もうかなり八方塞がり状態で精神的にまいっております(*_*) なにかお気づきの点がありましたら返信よろしくお願いします。

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.4

Me![伝票No].SetFocus ではなく 伝票No.SetFocus でExit_保存ボタン_Click:の行の前に記述してみて下さい。

Sheep17
質問者

補足

訂正したものの、まだエラーが出ます。 かなり泣き入っておりますが諦めませんよ(: _ ;) なにか気がついたことがあったら教えてください。 よろしくお願いします。

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.3

>次のレコードにタブが進みません。 通常タブ順に進んでボタンにフォーカスが移動した際にクリックやEnterキーを 押しても次に移動はしません。Tabキーでの移動になります。 EnterキーをクリックかEnterキー押下した際に行われるイベント内に移動する 記述を追加すればクリックかボタン押下で次のタブ順へと移動できます。 例えば  Me![テーブルのフィールド名] = Me![フォーム上の計算結果フィールド名] に続けて  Me![テーブルのフィールド名] = Me![フォーム上の計算結果フィールド名]  コマンド2.SetFocus とすればテーブルにフォーム上の計算結果を保存して次のコマンド2へ移動します。 Enterキーを押して保存したら次にどこのフィールドへ移動するか指定してくだ さい。フィールド名に.SetFocusでフォーム上の好きなフィールドへ移動できます。

Sheep17
質問者

補足

Private Sub 保存ボタン_Click() On Error GoTo Err_保存ボタン_Click Me![納品書金額] = Me![txt_納品書金額] Me![納品書1本単価] = Me![TXT_納品書1本単価] Me![伝票No].SetFocus DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 Exit_保存ボタン_Click: Exit Sub Err_保存ボタン_Click: MsgBox Err.Description Resume Exit_保存ボタン_Click こんな感じでやって見ましたが なぜか「フィールドを更新できません」というエラーが出てきてしまいます。 そしてMe![納品書1本単価] = Me![TXT_納品書1本単価]の部分は 値が入らないままなのです。 一体何が…(>_<)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

>この計算保存は1つのレコードに3つある場合「Me!…」を3回続けて書けば・・ 計算して保存したいフィールドが3つあれば  Me![テーブルのフィールド名A] = Me![フォーム上の計算結果フィールド名1]  Me![テーブルのフィールド名B] = Me![フォーム上の計算結果フィールド名2]  Me![テーブルのフィールド名C] = Me![フォーム上の計算結果フィールド名3] のように必要分追加して記述すてください。 >保存ボタンを用意した場合にEnterキーで保存・・ 保存ボタンのイベントに上記の記述を追加しタブ順に進めてEnterキーで保存でき ます。 Private Sub コマンド1_Click() On Error GoTo Err_コマンド1_Click  Me![テーブルのフィールド名] = Me![フォーム上の計算結果フィールド名] DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, acMenuVer70 Exit_コマンド1_Click: Exit Sub Err_コマンド1_Click: MsgBox Err.Description Resume Exit_コマンド1_Click End Sub こんな感じに追加して記述すればOKです。

Sheep17
質問者

補足

丁寧な回答、ありがとうございます。 なかなかいい感じに仕上がってきました。 ただここに来て1つ問題が発生しました。 計算をさせて保存ボタンを押した後に 次のレコードにタブが進みません。 これはどういうことなのでしょうか?? お手数ですが返信よろしくお願いしますm(_ _)m

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.1

フォーム上で計算した結果をテーブルに保存することはできます。 Private Sub コマンド1_Click()  Me![テーブルのフィールド名] = Me![フォーム上の計算結果フィールド名] End Sub これはボタンをクリックしたイベントにテーブルに保存する記述です。 フォーム上の計算させている名前はテーブルのフィールド名とは別のものにして 下さい。例えばテーブルが[計算結果]というフィールドであればフォームのフィ ールド名は[計算結果1]の様に。 Me![テーブルのフィールド・・ の行の記述をフォームの閉じるボタンやレコード の保存などのボタンのイベントに書き加えても使えます。

Sheep17
質問者

補足

ありがとうございますm(_ _)m 早速挑戦してみます。 質問なのですが、この計算保存は1つのレコードに3つある場合 「Me!…」を3回続けて書けばよいのでしょうか? そして、保存ボタンを用意した場合にEnterキーで保存できれば最高なのですが。 お手数ですが返信よろしくお願いします。

関連するQ&A

  • フォームの計算結果をテーブルへ

    フォームの計算結果をテーブルに移行したいのですが、クエリーとマクロを使ったらその都度全計算してしまい時間がかかってしまします。又値の代入をしたら、少数点以下が切り捨てられてしまいした。何か良い方法はないでしょうか?

  • エクセルのマクロでアクセスのクエリ結果をコピーしたい

    アクセスのクエリ結果をエクセルで編集しているのですが、エクセル側から マクロを登録したボタンをクリックすると、クエリ結果がエクセルにコピー されるようにしたいのです。 アクセスは中身を変更してはいけないということなので、エクセルから自動で コピーできる方法があれば、と思い質問しました。 アクセスは、最初に検索用のフォームに条件を入力して、結果を違うフォームに 表示させています。 現在は結果が出たところでデータベースウィンドウを表示させ、該当するクエリ を開いてそれをエクセルにコピー&ペーストしています。クエリ結果を表示させた フォームをコピー&ペーストすると、セルに色がついてしまうし、データの並びが 違うのでひと手間多くしています。 また、検索に使うクエリは条件によって変わるようで、2種類あります。 (アクセスはよく判らないので、あやふやな説明しかできないのですが、すみません) 今後はこの作業を、パソコンに詳しくない他の人がするというので、 できるだけ作業を簡単にしたいのです。 使っているアプリケーションは、エクセル97とアクセス97です。 ご存知のかた、よろしくお願いします。

  • テーブルに表示されているものがクエリに表示されない

    Windows NTでAccess2000を使っています。(ACCESSは初心者です) あるテーブルに入っている伝票番号をクエリでひっぱってみたのですが テーブルにはある番号ががクエリでは出てこないものがあります。 昇順に並び替えているぐらいで特に抽出条件を設けているわけでもないのに 何がおかしいのでしょうか?? 教えてください。よろしくお願いします。

  • Accessの集計クエリで計算

    Microsoft Access2016において、クロス集計クエリに表示される数値を使って計算をするには、どこにどんな数式を入力すれば良いですか。テーブルに表示される数値ではなく、クロス集計クエリで計算された合計の値を使 います

  • アクセスでフォームのデータ(計算結果)がテーブルに反映されない

    アクセス初心者です、教えて下さい。 うまく説明できないのですが、エクセルで作成した売上表をアクセスで作り直そうと試みているのですが…。 簡単に説明すると、フィールドA,B,Cと3つあって、フォーム上でCはAとBの合計(C=[A]+[B])としました。フォーム上ではA,Bに値を入力するだけでCに結果が表示されるのですが、それがテーブルのCに反映されません。テーブルに計算結果を表示させるにはどうしたらいいのでしょうか?

  • Access2007 フォームでの計算結果をテーブルに反映させるには?

    ビスタでAccess2007を使っています あるテーブルにA~Dまでのフィールドが設定されています。 フォームでフィールドA.Bは手入力して C.Dには計算式を設定して計算結果を表示させていますがテーブルに反映されません。 (フォームにはきちんど式通りの答えが表示されますがテーブルのフィールドC.Dは空っぽです。) 例 A・・・10,000 B・・・0.1 C・・・1,000(計算式 A*B) D・・・9,000(計算式 A-C) フォーム上で行った計算結果をテーブルに入力反映させるにはどうすればよいでしょうか? テーブルやフォームの作り方が悪いのか? 計算式の設定が悪いのか? なぜテーブルに反映しないのか理由がわかりません。 そもそもフォーム上での計算はテーブルには反映しないのか? だとすれば反映させるにはどうすればよいのでしょうか? テーブルのフィールドに計算式を設定することは出来るのでしょうか? 出来るとすればその方法は? 疑問だらけでどうすれば求める結果が得られるのかさっぱり解りません。 当方Access2007は初心者も同然ですのでわかりやすく解説して戴ければ幸いです。 よろしくご教授ください。

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

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

  • ACCESSで計算をさせたい。

    お世話になっています。 早速ですが、ACCESS2003でテーブルに入力した数字がエクセルのように結果を出し残すことはできるのでしょうか? テーブルでは計算ができないのでクエリでやるとしたらどのようにしたらいいでしょうか? 数量(A1)×単価(B1)=金額(C1)というC1の計算結果もレコードに保存できるものでしょうか? フォームではもちろん入力した数字を計算させることはできるのですが、その結果をレコードに残して行きたいと思っています。 どうかよろしくお願い申し上げます。

  • ユニオンクエリの結果をテーブルに書き出したい

    お世話になります。 Access2000で作成しています。 テーブル作成クエリと同じような形で、 ユニオンクエリの結果をテーブルに書き出したいのですが、 どのようにすればできるでしょうか? SQLの形を直接いじるような方法でも結構ですので 宜しくお願い致します。

  • アクセス2003 計算結果を反映させたい

    当方:XPのoffice2003 です。 アクセスでデータを作っています。 商品名テーブルを作成し、クエリを介して フォームから入力できるようにしています。 たとえば、100g2000円の商品があったとして、 これをgごとに単価を出したいのですが、 (例でいうと、20 という答えを出したい) 本を読んで、フォーム上で自動計算させることは できるのですが、このフォームの数字を そのままテーブルに反映させることはできますか? 集計表を出すときに、クエリで集計表を出して印刷し、 資料にしています。 この集計表に、計算させた単価を表示させたいのですが・・・ 私のやりかたが間違ってるのか、 または違う方法でできるものがあるのか、 教えて頂きたいと思います。 説明不足の部分がありましたら、ご指摘下さい。 よろしくお願いします。

専門家に質問してみよう