• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:[至急]accessクエリ結果を入力フォームに出力)

[至急]accessクエリ結果を入力フォームに出力

このQ&Aのポイント
  • access初心者の為、クエリ結果を入力フォームに出力させる方法を教えてください。保険料見積りの画面のような感じで、掛けたい保険額を入力すると、その1か月の保険料を隣に出力する方法が知りたいです。
  • また、クエリ結果をテキストボックスに返すことはできないのでしょうか?さらに、保険料の合計もフォーム上で行いたいです。
  • 顧客_qをベースに作成したフォームに金額を入力し、試算ボタンでクエリ(試算_q)を実行すると、各保険料と合計額をフォームに出力したいです。お手数ですが、教えていただけますか?

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

  • ベストアンサー
  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.4

> ただ足しただけでは、+が&のような働きをしてしまい、羅列になってしまいました。 各項目は DLookUp で取得し 合計は = [テキスト1] + [テキスト2] + [テキスト3] のような式で求めているということですね。 おそらく、クエリで Nz関数 や DLookUp関数などを使用して 結果が左詰めで表示されている状態(文字列とみなされる)だと思われます。 CLng関数などで数値に変換するのが本筋ですが フォームで簡単に解決する方法をご紹介します。 合計の式を = 0 + [テキスト1] + [テキスト2] + [テキスト3] のように 先頭に明らかな数値の項をおくことで、 Access に、文字列ではなく、数値であることを分からせてあげます。

maumama2525
質問者

お礼

できました!!!!! 本当に、本当にありがとうございました☆ とっても助かりました。 こういう方法もあるのですね・・・。 本当に勉強になりました。

maumama2525
質問者

補足

頼り切りになってしまい申し訳ないのですが… フォームの印刷を選択し、印刷ボタンを作成したのですが、 いざ実行してみると、「不正な文字」とエラーメッセージが出力され印刷ができないのですが、なにが不都合なのでしょうか? たびたび申し訳ありません。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • chayamati
  • ベストアンサー率41% (256/612)
回答No.3

>ただ足しただけでは、+が&のような働きをしてしまい、羅列になってしまいました。 この現象は、項目がテキスト型になっているからだと思います。 テーブルを右クリックからデザインモードで開いて ・数値型に変更して下さい ・規定値を0にしてください ※エクセルと違ってアクセスでは、 演算項目に一つでも空白が あると式は無効になります。

maumama2525
質問者

お礼

どうもありがとうございます。 上記補足にも書かせていただきましたが、うまくいきませんでした。 テーブル作成の部分から何か違うことをしてしまっているのかもしれませんが。 いろいろ勉強不足で申し訳ありません。 是非、またご教授賜りたいと思います。 よろしくお願いいたします。

maumama2525
質問者

補足

1つのクエリ(顧客_q)を基にして作成したクエリ(試算_q)のため、テキスト型を数値に変更できません・・・。 もちろん元のテーブルは全部数値型なのですが。 そして、クエリのプロパティを開いて書式変更しようとしたところ、プルダウンには何もメニューがでてきませんでした。 ちなみに、試算_qの最後に合計【月払】・合計【年払】の各合計を作成し、フォームのヘッダーに合計欄を設け、=sum([合計【月払】])としたのですが、エラーになってしまいます。 もう、お手上げ状態になってしまいました・・・。

全文を見る
すると、全ての回答が全文表示されます。
  • chayamati
  • ベストアンサー率41% (256/612)
回答No.2

試算_qでどのような計算をしていますか? クエリ内で計算した項目をフォーム上に配置するとOKです クエリー内ではレコード内の横の計算は出来ますが レコード間の計算はフォームまたはレポート上でやります。 例えば、試算_q内に入院保障金額、施術特約金額、死亡保障金額 があってこれらの合計は 合計:入院保障金額+施術特約金額+死亡保障金額 レコード間の合計はフォームフッターにボックスを配置し ボックスのデータタブのコントロールソースに =Sum([死亡保障金額]) とします。

maumama2525
質問者

お礼

お返事遅くなって申し訳ありません。 ご回答、どうもありがとうございました! さて、試算_qでは、1つのテーブルと結合させながら、 10数個のフィールドの【月払】【年払】の計算をしています。 私もこのクエリの最後に【月払】【年払】の合計を出し、フォームで出力させようと考えたのですが、sum関数が使えず、悩んでいました。 また、ただ足しただけでは、+が&のような働きをしてしまい、羅列になってしまいました。 フォームでsum関数を使うのですね!!! 早速、やってみようと思います。 おそらく大変低レベルな質問であるにも関わらず、丁寧に教えてくださりありがとうございました! 本当に助かります。

全文を見る
すると、全ての回答が全文表示されます。
  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.1

>>そもそも実行したクエリ結果をテキストボックスに返すことはできないのでしょうか? それができないと、検索結果を表示するプログラムが書けません。当然、可能です。 >>また、併せて、その保険料の合計もフォーム上で行いたいのですが、できますでしょうか? 当然、可能ですし、そういうプログラムは沢山あると思います。 書店に行けば、そんな処理を行うサンプルプログラムの掲載されている書籍があると思います。 探して購入して勉強すればいいと思います。 一冊の書籍になるくらいですので、ここで教えるようなものではありません。

maumama2525
質問者

お礼

回答ありがとうございます。 勉強不足で大変申し訳ありません。 急を要するものだったため、つい質問してしまいました。 さっそく書籍を購入し、きちんと勉強したいと思います。

maumama2525
質問者

補足

dlookupを使用して出力したいクエリの結果はでたのですが、 そこから合計を導くことができません。 単純に値を足したいだけなのですが・・・ ご教授いただけましたら幸いです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • フォームで入力された文字をクエリのフィールド名として反映させたい 【Microsoft Access】

    Microsoft Accessに関する質問です。バージョンは2003です。 フォーム"Fo1"に、テキストボックス"Te1"とクエリの実行を行うためのコマンドボタン"CB1"があるとします。コマンドボタン"CB1"を押すことでクエリ"Q1"が実行されるよう、イベント プロシージャに記載しています。クエリ"Q1"にはテーブル"Ta1"が表示されており、テーブル"Ta1"は複数のフィールド("Fi1","Fi2","Fi3",…)を有するものとします。 このような状況において、テキストボックス"Te1"に複数のフィールド("Fi1","Fi2","Fi3",…)のうちのどれかを記述し、コマンドボタン"CB1"を押したときに、テキストボックス"Te1"に記載されたフィールド名のデータを実行結果として出力したいと考えています。 そこで、クエリ"Q1"の「フィールド:」の部分に [Forms]![Fo1]![Te1] と記入し、「テーブル:」の部分に"Ta1"を指定した後、クエリを保存して(このときにはフィールド名の記入した部分は「式1: [Ta1].Forms![Fo1]![Te1]」と表示されています)閉じた後に、フォーム"Fo1"を開き、テキストボックス"Te1"に出力させたいフィールド名を記載しコマンドボタン"CB1"を押してみました。 すると、「パラメータの入力」というダイアログが立ち上がり、ダイアログ内には「Ta1.Forms!F01!Te1」という記述とテキストボックスが出力されました。テキストボックスに無記入で"OK"ボタンを押したところ、出力結果に「式1」という列が現れ全てのセルが空白となってしまいました。 フォームや、クエリに記入する表記が間違っているのか、そもそも出力させるフィールド名をフォームから指定するという方法が根本的に違うのかわかりません。 申し訳ありませんが、当方Accessに関しては初心者ですので、極力専門用語は少なくご教授いただければと思います。よろしくお願いします。

  • ACCESSでデーフル作成入力フォームで入力しながら、クエリのデータを参照したい

    ACCESSで売上明細テーブルを作成し、入力用のフォームを作成しました。他に顧客マスタテーブルがあります。売上明細には顧客CDフィールドがありますが、顧客名等はマスターに存在するため設けてません。しかし売上明細入力時に顧客CDを入力した時点で顧客名の確認がしたいのです。そこで入力フォームの顧客CDの隣に非連結でテキストボックスを作り、そこに顧客名を表示したいのです。売上明細には顧客名のフィールドは追加したくありません。ただ参照したいだけです。顧客マスタと売上明細で顧客CDをキーにクエリを作成し、明細に対応する顧客情報は顧客情報検索というクエリで作成済みです。入力フォーム画面の非連結のフィールドのプロパティのコントロールソースに =DLookup("[顧客名]","顧客情報検索","[顧客CD] =" _ & Forms![売上明細入力Form]![顧客CD]) と表記しましたがエラーになります。 最初はコントロールソースに直接顧客情報検索クエリの顧客名フィールドを表記し、フォーカス取得時にクエリを開くマクロを実行していました。でもやはり表示されませんでした。 顧客名の設定をどのように設定すればいいのですか? コントロールソースでの設定だけでは無理なのでしょうか? よろしくお願いします。

  • Access:検索フォーム

    Access:検索フォーム クエリを基に作成したフォームで「日付2」が変動する検索フォームを作りたいのですが上手く動作しません。 不足などを教えてください; Access2007/WinXP クエリ名 q_出席一覧絞込 1)フィールド名 日付1  クエリ条件 >#2010/01/01#       (2010/1/1以降) 2)フィールド名 日付2  クエリ条件 ([Forms]![出席者絞込]![検索日]に入力した日付以降の日付) フォーム名:出席者絞込 帳票フォーム 1)テキストボックス名:検索日   定型入力: 0000/00/00;0;*   非連結 2)ボタン名:検索ボタン1   クリック時イベントプロシージャ:   Private Sub 検索ボタン1_Click() Me.Requery   End Sub また、フォーム上で元テーブル「出席一覧」のフィールド「単価」の修正機能を加えたい状態です。 (クエリにも「単価」は呼び込んであります) クエリ元のフォーム上で修正>ボタンクリック時にRequeryを記入、という考えでいいのでしょうか? 参考になるサイトなどあればご紹介ください。

  • クエリの検索条件をフォームから入力したい

    フォーム2つの変数を入力して、クエリにレコードを検索させたいと考えています。 具体的には、 コンボボックスから店舗名を選び、 テキストボックスに抽出する期間を入力して、 それをクエリに反映させて期間内の対象店舗における来店者数を調べたいのですが、うまくいきません。 詳細は、以下のような形です。 テーブル: ・顧客情報(氏名・来店日・来店した店舗番号) ・店舗(店舗番号・店舗名) 「店舗」テーブルは、顧客情報でルックアップできるようにしています。 フォーム: ・フォーム名:来店履歴 ・コンボボックス(名前:店舗選択)で店舗を選択し、 ・テキストボックス2つ(名前:日付1・日付2)に日付を入力する クエリ: ・店舗テーブル、店舗番号 [Forms]![来店履歴]![店舗選択] ・顧客情報、来店日 Between [Forms]![来店履歴]![日付1] And [Forms]![来店履歴]![日付2] 思い当たるフシとしては、 ・コンボボックスへの設定の仕方があっているかどうかが分からない。 現在は、来店履歴フォームのコンボボックスへのプロパティを、 値集合ソース:店舗テーブル 列数:2 連結数:1 にしています。 顧客情報テーブルで設定しないといけないのでしょうか?? ・クエリの集計欄がグループ化のままで良いのかどうかが分からない。 where関数でやるみたいなことを聞きましたが、やってみてもうまくいきませんでした。 現在は、フォームで入力は出来るものの入力しても無反応で何も表示されないという状況です。(最初から何も表示されていません) もうワケが分からなくて大変困っております。 どうぞよろしくお願いいたします。

  • クエリの抽出条件をフォームで入力したものにしたい

    こんにちは。すみませんうまくいかないのでどなたか助言していただきたくお願いいたします。 クエリの抽出条件をフォームで入力した値にしたいと思っており、クエリの抽出条件欄に >=[集計フォーム]![開始日入力] と入力しました。「フォームの名前」!「テキスト名」です。 そしてフォームに値を入力してクエリ実行ボタンをクリックするとパラメータクエリのようになってしまいます。 フォーム内で何か設定をしないといけないのでしょうか? すみませんがよろしくお願いいたします。

  • AccessのフォームをExcelに出力

    いつもお世話になっております。 現在、Access2003でDBを作成中です。 "テーブル1"をパラメータクエリで抽出します。"クエリ1"。 そのクエリを基にフォームを作成しています。"フォーム1"。これは抽出して印刷したり、Excelに出力するために作成しました。レポートではなく、フォームにした理由は、コマンドボタン等を配置できることからです。 Excelに出力する際のVBAでつまづいてしまいました。 DoCmd.OutputTo acOutputForm, "フォーム1", acSpreadsheetTypeExcel9 これで問題なく出力できています。が、、、 Access2007の一部のPCでこれを実行するとエラーが出ます。 原因は"OutputTo"が含まれているとエラーになるようです。 ちなみにエラーは「現在出力しようとしているオブジェクトの形式は無効です。」 「2007 Office スイート Service Pack 2」こちらをインストールすると良いそうなのですが、だめでした。 WindowsXP、Office2007はこのVBAだとエラーになります。 WindowsVista、Office2007は正常に使えました。 PCの何か設定?と考えたりもしたのですが、はっきりとした原因がわからないのでは、他の人にDBを使っていただけないので、エラーにならないVBAでいきたいです。 もうひとつ、 mFileName = InputBox("ファイル名を入力してください。") DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "フォーム1", mFileName こちらのVBAはクエリの出力だとうまくいくのですが、フォームだとだめでした。 クエリから抽出して保存すれば良いのですが、理想はこの形です。 1.フォーム1を開くと「担当者を入力」とパラメータクエリが働き、抽出結果をフォーム1に表示される。 2.[出力]ボタンを押すと、ダイアログボックスが開いてファイル名を指定して保存する。または、ダイアログボックスが開かなくても名前を指定できれば良いです。最悪、指定できなくても良いですが、原因となる、"OutputTo"を避けたVBAでいきたい。 3.mFileName = InputBox("ファイル名を入力してください。") DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "クエリ1", mFileName これだと、1.でパラメータクエリで抽出結果をフォームに表示させて、2.で[出力]ボタンを押すと、また、パラメータクエリで抽出しなければならなくなるのでできれば避けたいです。 こちらの条件でご教授お願い致します。 また、WindowsXP、Office2007でエラーが出ましたので、これを解決する方法でも良いです。 よろしくお願い致します。

  • Access2003 テキストボックスの値によるクエリの抽出条件

    コマンドボタンによるクエリの実行と、直接クエリを実行する(マウスでクリック) するのとで、動作が変わってしまいます。 F_メインメニュー(フォーム)内の非連結のテキストボックスtext1に文字列を入力し、 その隣に配置した検索ボタンを押すことで、テキストボックスの値を含む住所を 抽出するよう、Q_顧客を作成したのですが、F_メインメニュー内にある テキストボックスに文字列を入れ、F_メインメニューを開いたまま 直接、Q_顧客をマウスクリックにより実行すると、 確かに該当する値を含む住所をもつレコードのみがヒットします。 しかし、テキストボックスの横に配置した、コマンドボタンによる クエリの実行をすると、条件抽出されず、全件ヒットしてしまいます。 直接、Q_顧客をマウスによってクリック実行するとできるのに、 なぜコマンドボタンにコマンドボタンがクリックされたらQ_顧客を実行するよう ウィザードで作ると同じ動作にならないんでしょうか? コマンドボタンにはクリックされたらQ_顧客を実行するようにウィザードで 作成しています。 ご教授よろしくお願いします。 **以下作成状況** 「フォーム名」: F_メインメニュー ※このF_メインメニュー内に非連結のテキストボックスtext1を作成。 テキストボックスの横に検索ボタン(コマンドボタン)を作成し、 検索ボタンをクリックしたら、以下のQ_顧客を実行するよう、 コマンドボタンをウィザードで作成。 「テーブル名」: T_顧客 ※フィールドに「住所」あり。 「クエリ名」: Q_顧客 ※ ウィザードでT_顧客からクエリを作成(この時点では抽出条件設定なし) クエリの抽出条件で フィールド:住所 の抽出条件に以下を設定 Like "*" & [Forms]![F_メインメニュー]![text1].[Text] & "*"

  • フォームの値をクエリーに反映したい

    ども。usiushiです。 アクセスのフォームに日付を入れる非連結のテキストボックスを作り、 その日付をクエリーに反映させようとしているのですが、表示が「・・・・」としかでません。 反映させるやり方をご存知の方、ぜひ教えてください。よろしくお願い致します。 現在やっていること F_hidukeの中に「日付」というテキストボックスを作り、西暦を入力しています。 (例) 2010/12/28 Q_itiran というクエリーの中に 日付:[Forms]![F_itiran]![日付] を入力していますが、反映しない状態です。

  • 選択クエリで実行結果を非表示にできますか?

    自分がやろうとしていること自体が間違っているかもしれないのですが・・ Access2000で販売管理を作っています。請求書を発行する開始日付と終了日付を入力させる日付入力フォームがあります。この日付を元に売上TBから日付範囲内を抽出する選択クエリを作っています。(クエリの抽出条件にBetweenを使っています)。 そして請求書フォームでデータ表示させようと作っています。 これらを、日付入力フォームにあるコマンドボタンのクリックイベントで Docmd.OpenQuery "Q売上" ’日付範囲内の売上データ抽出クエリ Docmd.OpenForm "請求書" とすると請求書フォームにはデータが表示されるのですが、背面にQ売上の実行結果が表示されています。 この実行結果を表示させないようにはできないのでしょうか?(選択クエリとはOpen=実行でしょうか) ちなみに請求書フォームのレコードソースにQ売上を書こうとしましたが、抽出条件の日付が日付入力フォームなので記述方法がわかりません。 ややこしい質問で申し訳ございませんが宜しくお願い致します。

  • クエリーから入力フォームの作成

    access2000を使って簡単な注文用のフォームを作っています。VBAは初心しゃです。 テーブルとしては、納品伝票(伝票番号、顧客コード)、顧客管理(顧客コード)を作り( )ないのものでリレーション組んでます。 クエリーでリレーションを組み、それを元にフォームを作りました。 希望としては(1)伝票番号の重複がないようにする。 (2)顧客コードから住所を表示させる、顧客コードが登録されていないときにはメッセージを出し、正しい顧客コード(顧客コードのみ)を入力させる。 (1)はクエリーでテキストのデータを条件にし、フォームのVBAで Private Sub 伝票番号_AfterUpdate() If DCount("伝票番号", "Q_納品伝票") >= 1 Then MsgBox "すでに登録されています" Me.Undo DoCmd.GoToControl "顧客名" DoCmd.GoToControl "伝票番号" End If End Sub で上手くできましたが、同じクエリーで(2)も(1)と同様なVBAを組んだところ(顧客デーブルの顧客コードに重複があるときをチェックさせる)、(1)の重複をチェックしなくなってしましまいました。 うまく説明できたが心配ですが、根本的に何か違っていますでしょうか?

専門家に質問してみよう