• ベストアンサー

アクセスに移行したいのですが

はじめまして エクセルで納品書発行プログラムを自作しています。 入力は日付、時間、販売先、商品名、数量、配送先、等 単価表シートと組み合わせ金額を表示していますが 月次繰越処理をしないとエクセルでは重たくなり (1日60件位の入力で年間20,000件程度) アクセスで年度処理だけで済まそうと思いアクセスを 勉強中です。 参考書には1物1価の価格表でのクエリーは見当たるのですが、 当方では販売先ごとに商品単価が違います エクセルだとindex関数等で解決しているのですが アクセスではどの様に考えればよいのでしょうか? (関数でもあればお教え下さい) 質問が漠然としていて伝わりにくいかも知れませんが 考え方だけでもお願いします。

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

  • ベストアンサー
  • PCFREAK
  • ベストアンサー率51% (417/805)
回答No.2

>入力マスタ(日付、時間、販売先コード、販売先、商品コード、商品名、数量、配送先) 正しく正規化するならば 入力マスタ(日付、時間、販売先コード、商品コード、数量、配送先) です。(販売先名、商品名は不要) >(1) 商品マスタ(商品コード)→入力マスタ(商品コード) >(2) 販売先マスタ(販売先コード)→入力マスタ(販売コード) >(3) 販売単価マスタ(商品コード)→入力マスタ(商品コード) >(4) 販売単価マスタ(販売先コード)→入力マスタ(販売コード)で良いでしょうか? (2)(4)は重複してますので、片方だけで良いです。 また矢印は便宜上右向きに表記されたのだと思いますが、基本的に等結合だと思うので問題ないです。 >フィールド:販売先、  商品名、  数量、   販売単価、   明細金額 >テーブル :入力マスタ、入力マスタ、入力マスタ、販売単価マスタ フィールド:販売先、  商品名、  数量、   販売単価、   明細金額 テーブル :販売先マスタ、商品マスタ、入力マスタ、販売単価マスタ 上記の正規化を意識して、が正解でしょう。

acenoh
質問者

補足

ご説明ありがとうございます アクセスでの作成中で補足説明の応答が遅くなりまして失礼いたしました ご回答の通り組んでみましたが、うまく目的のデータが抽出されません ただ、テーブルはエクセルデータをインポートしたものですが、なにか不都合がありますでしょうか?(自動的にIDフィールドが作られ主キーが設定されてます) 明細金額の式ビルダは下記で良いのですよね?   明細金額: [入力マスタ]![数量]*[販売単価マスタ]![単価] よろしくお願いいたします。

その他の回答 (4)

  • PCFREAK
  • ベストアンサー率51% (417/805)
回答No.5

>ところで、クエリーの所での結合とリレーションシップとはどんな違いがあるのですか、今回の場合リレーションシップを解除しても変化ありませんでしたが? SQLの基礎的なもので「等結合」と「外部結合」の違いです。 下記のURLが参考になると思います。

参考URL:
http://orakumiko.hp.infoseek.co.jp/yougo/q_louter.html
acenoh
質問者

お礼

PCFREAKさんありがとうございます。 紹介いただいたHPは大変参考になりました。 エクセルのHPは沢山見つかりますが、アクセスについては余り見つかりませんでしたから 今後、アクセスについて勉強していきたいと思いますのでよろしくおねがいします。

  • PCFREAK
  • ベストアンサー率51% (417/805)
回答No.4

>ご回答の通り組んでみましたが、うまく目的のデータが抽出されません どのようにおかしいのでしょうか? 具体的に分かれば回答が付けやすいのですが。 >ただ、テーブルはエクセルデータをインポートしたものですが、なにか不都合がありますでしょうか?(自動的にIDフィールドが作られ主キーが設定されてます) 入力マスタについてはキーがありませんので、自動的に作られた主キーで問題ありません。 しかし、商品マスタ、販売先マスタ、販売単価マスタについては自動で作られた主キーではダメです。 商品マスタは商品コード、販売先マスタは販売先コード、販売単価マスタは商品コード、販売先コードの2つが主キーとなります。 恐らくこのキー付けがおかしくて正しいデータ抽出が出来てないのでしょう。 >明細金額の式ビルダは下記で良いのですよね? >明細金額: [入力マスタ]![数量]*[販売単価マスタ]![単価] これは問題ありません。

acenoh
質問者

補足

ご回答ありがとうございます 明細クエリーの結合が間違っていたようです。 わからぬままに以下のようにしましたら目的データが得られました (1)販売単価マスタ(販売先コード)→販売先マスタ(販売先コード) (2)販売単価マスタ(商品先コード)→商品マスタ(商品先コード) (3)商品マスタ(商品先コード)→入力マスタ(商品先コード) (4)販売先マスタ(販売先コード)→入力マスタ(販売先コード) ところで、クエリーの所での結合とリレーションシップとはどんな違いがあるのですか、今回の場合リレーションシップを解除しても変化ありませんでしたが? 初歩的な質問ですみません

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

エクセルではVBAを除くと、関数で処理をせざるを得ない場合(それしかない)が多い。 しかしMSアクセスでは、関数は主役たりえず、変わってSQLが陰に陽に出番を 持つようになります。 SQLのSELECT文でWHEREの条件が販売先と商品名(それぞれコードで扱う場合が多いと思いますが)で価格表を検索すれば済むことです。3段の検索 たとえば販売先+商品+他の状態(購入数量や信用状態や購入実績や配送距離コードなど?) に増えても、同じ延長線で処理できます。 ここがアクセスを使う(エクセルから切り替える)大きな動機でしょう。 プロが組むアクセスVBAやSQLサーバー関係のコードなどを見ると、SQL文の長さ(条件の数やJoinなどで増える)は驚くほど長いものを見かけます。しかし正しく作成すれば1発で結果が出るのは、やはり驚きです。

acenoh
質問者

補足

ありがとう御座います 表題にありますようにアクセスに移行中で クエリーを手動で操作する程度で満足しているアクセス初心者です。 早くSQLを駆使しアプリケーションを自動実行させるまでになりたいと思っておりますので、宜しくご指導下さい。

  • PCFREAK
  • ベストアンサー率51% (417/805)
回答No.1

マスタを3つに分ける必要があります。 商品マスタ(商品コード、商品名) 販売先マスタ(販売先コード、販売先名) 販売単価マスタ(商品コード、販売先コード、販売単価) その上で販売単価マスタを参照するクエリで販売単価を取得すれば良いでしょう。

acenoh
質問者

補足

早速ありがとうございます 入力する日付、時間、販売先、商品名、数量、配送先、等を入力マスタテーブルとしますと お教えいただいた、下記マスタのリレーションは 入力マスタ(日付、時間、販売先コード、販売先、商品コード、商品名、数量、配送先)、 商品マスタ(商品コード、商品名) 販売先マスタ(販売先コード、販売先名) 販売単価マスタ(商品コード、販売先コード、販売単価) (1) 商品マスタ(商品コード)→入力マスタ(商品コード) (2) 販売先マスタ(販売先コード)→入力マスタ(販売コード) (3) 販売単価マスタ(商品コード)→入力マスタ(商品コード) (4) 販売単価マスタ(販売先コード)→入力マスタ(販売コード)で良いでしょうか? また、選択クエリでは 明細クエリとして フィールド:販売先、  商品名、  数量、   販売単価、   明細金額 テーブル :入力マスタ、入力マスタ、入力マスタ、販売単価マスタ 明細金額の式ビルダでは 明細金額 販売単価マスター!販売単価*入力マスタ!数量 であっていますか? うまく動作しましたら補足投稿いたします。

関連するQ&A

  • アクセスで単価を判断させるには

     お尋ねいたします。 手書き納品書を整理しアクセスで請求書を 作成中なのですが、単価のテーブル、クエリを どのように、考えて作成すればよいかアドバイスを お願いします。  商品は100種類位有り、定価(積算単価)は 決めていますが、販売先によりバラバラです 販売先に掛け率を決めて販売単価を決めるのではなく その時々で決めています。  エクセルのように行頭に商品名、 列頭に販売先名を入れてVLOOKUP関数で 販売先別単価を決めるような方法有りますか?  アクセスは勉強中でエクセルのワークシートに 当たるのはクロス集計のようなのですが どの様に使用したらよいのか要領を得ません よろしくお願いいたします。

  • アクセス テーブル 列を行にしたいのですが・・・・

    アクセス初心者ですが、ご教授頂けませんでしょうか?<abab123> ・2つのテーブルがあります。 ・入力者の都合上、どうしても行入力にできず、列入力になってしまった為、 テーブルを作り直す必要があります。 < 数量 テーブル > 機器| 商品1|商品2|・・ |商品100 ----------------------------------- 1 | 10 | 20 |・・| 30 2 | 40 | 50 |・・| 60 ・ ・ 10000| 70 | 80 |・・| 90 < 単価 テーブル > 機器 |商品1 |商品 2|・・|商品100 -------------------------------------- 1 |1,000 | 2,000 |・・| 3,000 2 | 4,000 | 5,000 |・・| 6,000 ・ ・ 10000| 7,000| 8,000 |・・| 9,000 ・こんなテーブルにしたいのですが。 < 結合 テーブル > 機器 |  商品 | 数量 | 単価 ---------------------------------------- 1 | 1 | 10 | 1,000 1 | 2 | 20 | 2,000 1 | ・ | ・ |  ・ 1 | 100 | 30 | 3,000 ・ | ・ | ・ | ・ ・ | ・ | ・ | ・ 10000 | 100 | 90 | 9,000 □ EXCELで、行列を入れ替えようと思ったのですが 機器(10,000) X 商品(100)= 1,000,000 行となり、 65,536行 の EXCEL2003では、断念しました。 VBAも考えましたが、16回(=1,000,000/65,536)、 EXCEL を ACCESSテーブルに貼り付けるのも??? Webで、アクセスSQL・・ユニオン・・・などがヒットするのですが、 良く解らなくて。。。です。 結合テーブルを効率的に作成する方法を、ご教授頂けませんでしょか?   宜しくお願い申し上げます。 □ アクセスはデーター処理で毎日使用しておりますが、 難しい処理をする訳ではなく、 テーブル作成、クロス集計等から、EXCELへ書き出し、 EXCELの資料を作成したりしています。

  • 条件に合うデータを別のブックに書き出したい

    お世話になります。 エクセル2003で、数量を入力した「行」だけを別のブックに書き出したいのですが、機能や関数を教えてください。 (表1)    A     B     C    D 1 商品名  単価  数量  合計 2  い    100   4    400 3  ろ    500   2    1,000 4  は    200 5  に    150 6  ほ    330 7  へ    230   5    1,150     ・     ・    ・    ・     ・     ・    ・    ・ 17  た    180   2    360 と、17行、4列の表があります。この「数量」が入力された行だけ、 (表2)   A    B    C   D 1 数量 単価 合計 商品名 2  4   100  400   い 3  2   500  1,000  ろ 4  5   230  1,150  へ 5  2   180  360   た (表2)のように書き出したいのです。 (表1)から抽出される行数は、必ず4行以下です。 (表1)に数量を入力すると、(表2)が自動的に変わるのが好ましいです。 マクロやVBAは苦手なのでエクセルの機能や関数で教えていただければ幸いに存じます。 情報が足りなければ補足します。 宜しくお願いします。

  • オフコンで出力した納品書のデータをエクセル修正したいのですが。

    T社のオフコンで売上計上処理し、そのあとレーザプリンタで出力するA4版「納品書」という帳表があります。特定の得意先用で、その日売り上げた商品や数量、単価、金額などが載っています。これをOCRソフトかなんかで読み込んで、MS-Excel2000に変換し、単価を一律80円UPに手で修正し、金額欄も再計算して客に送りたいのですが、具体的にどんなツールを使用すべきでしょうか?あるいはよい方法がありますか?オフコンのデータは素人には到底扱うことができませんし、「日次更新をかける」とやらをやるとそのデータもどこだかわからないエリアに消えてしまいます。従って作業者の手元には出力された「納品書」の表があるのみです。エクセルでそっくりに作成した「納品書」フォームにオフコン帳票の内容を1件1件手打ち入力したほうが作業は早いでしょうか。

  • アクセス2002

    アクセス初心者です。 テーブルが、 【申込日】【入金日】【納品日】【納品件数】 というデータがあります。 ※入金日は、前払い・後払い等さまざまです。 クエリで、 月次の 【申込月ごとの納品件数】 【入金月ごとの納品件数】 【納品月ごとの納品件数】 は集計できましたが、 たとえば、 【10月に申込のあった納品件数】と、 【10月に申込があって、10月に納品した件数】を、 一枚の表(レポート)に表現するには、 どのように考えたらよいでしょうか? エクセルであれば、SUMIF関数で一発なのですが、 アクセスでは似たような作業はどのように考えたらよいでしょうか。

  • アクセス サブレポートの改行について

    アクセス2000使用です。 納品書に明細(商品・数量・単価・金額)を入力後、明細をサブレポートにもってきたいのですが、10行で次ページにいきたいのに改行?改ページ?されません。 レポートのスタイルは、A4縦を2つに分割し、上が納品書、下が納品書(控)です。 教えてください。

  • Accessで商品管理をしています

    商品は2種類でそれぞれサイズが10ずつあります。 販売先は6件ほどしかありませんが、販売先ごとに販売単価が違うので販売単価テーブルが膨大になりコンボボックスの便利さがあまり感じられません。なにかよい方法はありますか?私は超初心者ですので伝わりにくいかもわかりませんがよろしくおねがいします。 Access2000 XP  

  • access2003初心者です。30程の商品の在庫管理をしたいと考えています。

    access2003初心者です。 30程の商品の在庫管理をしたいと考えています。 以下のテーブルがあります。 <商品テーブル>商品コード、商品名 <商品生産テーブル>生産日、商品名、生産数量 <商品出荷テーブル>出荷日、商品名、出荷数量 <繰越テーブル>繰越日、商品名、繰越数量 *作成したいクエリ*  まず、日付を入力するパラメータ入力ダイアログボックスを表示  その日付のデータを抽出して計算をさせたい  表示させたいフィールドは以下のとおりです。 <商品名>:すべての商品を表示(繰越・生産・出荷数量がすべて0でも表示) <繰越数量>:前月末の数量を表示(月末が日曜日の場合はその前日)        パラメータで入力した日付が2008/04/01でも2008/04/05でも繰越数量は前月末の数量を表示 <生産数量>:パラメータで入力した日付の生産数量 <生産数量累計>:パラメータで入力した日付の月の1日から入力した日付までの生産数量の合計 <出荷数量>:パラメータで入力した日付の出荷数量 <出荷数量累計>:パラメータで入力した日付の月の1日から入力した日付までの出荷数量の合計 <残高>:<繰越数量>+<生産数量累計>-<出荷数量累計> これを元にレポートを作成したいと考えています。 よろしくお願いします。

  • アクセス初心者です

    納品書を元に仕入帳を作ってみたいと思うのですが テーブルとフォームは何となくわかったのですがクエリーでつまずいてしまいました 例 納品書 月日 A商店 伝票ナンバー 商品コード 品名 金額  入数 単価 数量 金額 売値  これを元に仕入帳を作りたいと思います 仕入帳 A商店、B商店、C商店に分けて 品名 金額 数量 単価 金額が出るように 又納品書は商品コードを入れただけで品名、金額、入数、単価が出るようにしたいのですが 納品書はテーブル、フォームは作りました 商品マスタも作りました 

  • アクセス マクロのつくりかたを教えてください。

    アクセスのフォームで、納品書フォームを作っています。”数量”x”単価”で”合計金額”コントロールをつくっているのですが、もしこの”合計金額”の金額が\1,000,000をこえた場合は”注意”というメッセージボックスをだし、そして、OKボタンを押せばそのまま処理でき、超えない場合は、そのまま入力できるように、マクロでのつくりかたの方法、もしくは解説のあるHP等を教えてください。お願いします。

専門家に質問してみよう