![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
いつもお世話になっています。わかりにくい内容かと思いますがよろしくお願いします。
(1)入庫した情報を設備から適時まとまった形でcsvファイルをACCESSのテーブルにするため取り込んでいます。
日付,箱番号,製品名
20110303,A001,PPP
20110303,A001,PPP
20110303,A001,QQQ
20110303,A001,GGG
20110303,A002,PPP
20110304,A001,PPP のようなcsvです
条件として箱は1日1回しか使わない事いません。箱の中に色々な製品が入っていると思ってください。
(2)出庫するときは、箱番号と出庫日しか情報がない場合
出庫した実績をテーブルに反映させ
日付,箱番号,製品名,出荷日
20110303,A001,PPP,20110304
の様な感じにしてデータベースとしたいのですが、日付も箱番号も重複するためうまく考えられません
わかりにくい質問とは思いますがよろしくお願いします。
No.1ベストアンサー
- 回答日時:
> 条件として箱は1日1回しか使わない事いません。
日本語になってませんが、「箱は1日1回しか使わない」つまり
「日付(入庫日)と箱番号の組み合わせでは重複することはない」
ということでいいですか。
Accessで用意するテーブルは、
T_入庫
入庫ID オートナンバー型 主キー
日付
箱番号
製品名
T_出庫
日付 主キー
箱番号 主キー
出庫日
T_入庫には、csvからデータを取り込みます。
その後、下記の追加クエリを実行して、T_出荷に 重複のない 入庫日、箱番号 データを追加します。
INSERT INTO T_出庫 ( 日付, 箱番号 )
SELECT DISTINCT 日付, 箱番号 FROM T_入庫;
既に T_出庫 にデータがある場合、追加できないデータがあるとのメッセージが出ますが、OKを押して実行します。VBAで自動実行する場合は、CurrentDB.Execute で実行するとメッセージを出さずに実行できます。
> (2)出庫するときは、箱番号と出庫日しか情報がない場合
出庫時の入力用フォームは帳票フォームとして、レコードソースを
SELECT 日付, 箱番号, 出庫日 FROM T_出庫 WHERE 出庫日 Is Null;
とします。
これでまだ出庫されていない箱の一覧が表示されます。
追加の許可、削除の許可は いいえ にしておきます。
フォームヘッダーに非連結のテキストボックスを2つ配置します。
名前は、txt箱番号、txt出庫日、cmd入力, txt出庫日の既定値は、
=Format(Date(),"yyyymmdd")
としておきます。
txt箱番号の更新後処理で、
With Me.Recordset
.FindFirst "箱番号='" & Me.txt箱番号 & "'"
If .NoMatch Then
MsgBox "該当する箱番号は有りません。"
Else
.Edit
!出庫日 = Me.txt出庫日
.Update
End If
End With
txt箱番号 に箱番号を入力してEnterキーで該当する箱番号レコードに出庫日が入力されます。
> 出庫した実績をテーブルに反映させ
> 日付,箱番号,製品名,出荷日
> 20110303,A001,PPP,20110304
この結果が欲しい場合は、下記のクエリで得られます。
SELECT T_入庫.*, T_出庫.出庫日
FROM T_入庫 LEFT JOIN T_出庫
ON T_入庫.日付 = T_出庫.日付 AND T_入庫.箱番号 = T_出庫.箱番号
これは一例です。例えば、フォームのRecordsetを使って更新してますが、更新クエリで更新してもいいし、帳票フォームにしてますが、非連結メインフォームとサブフォームの組み合わせにしてもいいです。お好みで使いやすいように工夫してください。
この回答への補足
hatena1989さん ありがとうございます。
日本語間違いですみません。
>> 条件として箱は1日1回しか使わない事いません。
>日本語になってませんが、「箱は1日1回しか使わない」つまり
>「日付(入庫日)と箱番号の組み合わせでは重複することはない」
>ということでいいですか。
では、なく 例で書いて見ましたように
箱は1日1回ですが、取り出したCSVには同一日付と箱が重複して出てきますので
一意ではありません。
すみませんがよろしくお願いします。
No.6
- 回答日時:
> あと、可能でしたら出庫入力のフォームを書き換え出来ないように出来れば
> ありがたいのですが・
各テキストボックスの「編集ロック」を「はい」にすればどうでしょうか。
No.5
- 回答日時:
下記のような業務の流れだと解釈しましたが、あってますか。
箱とは、バーコードのついたコンテナ、パレットのようなもので、入庫したときは、
この箱に複数の商品が積み込まれている。
出庫時は、箱単位でトラックなどに移し替えられて、出荷される。
空いた箱は、入庫側に戻されて、再び、そこに入庫された新たな商品が積み込まれる。
そのデータが、CSVで送られてくる。
この解釈のもとの回答ですので、もし違っている部分があったら、ご指摘ください。
この回答への補足
hatena1989さん ありがとうございます。
おっしゃる通りです。希望通りに答えにたどり着くことが、やっと出来ました。
フォームで躓いて、初めに作成したフォームでは、なぜか入力が反映されず
再度同じやり方で行ってみると入力が受け付けられてデータ反映されました。
あと、可能でしたら出庫入力のフォームを書き換え出来ないように出来れば
ありがたいのですが・・スナップにすると入力が出来ないので
サブフォームにして対応すれば、よいのでしょうか?
よろしくお願いします。
No.4
- 回答日時:
> 箱は1日1回ですが、取り出したCSVには同一日付と箱が重複して出てきますので
> 一意ではありません。
箱を一日に複数回利用することはないのですね。
ならば、CSV(T_入庫)では重複しますが、出庫側からみた場合(T_出庫)、日付と箱番号の組み合わせで箱を一意に特定できますね。
ですので、ANo.1 のテーブル設計で問題ないと思いますが、どの辺りで躓いてますでしょうか。
提示されている情報からのみ判断したテーブル設計を提案してますが、実運用ではいろいな例外処理(返品とか積み替えとか・・・)が入るのでこのような単純なものでは対応しきれない場合もあるでしょうが、基本としてはこんな感じになるはずです。
No.3
- 回答日時:
>日付も箱番号も重複するためうまく考えられません
同じ箱が一日に何ども出たり入ったりする と云うことですかね。
良く見受けるパターンとして
1 商品テーブル(在庫?)
2 出荷先テーブル(取引先?)
3 出荷記録テーブル
を準備してリレーションを使って在庫管理する方法があります。
この場合 出荷の数量は 必ず 1 である
戻し(返品)の記録もデータに入れる
この2つのアドバイスで以下かでしょうか?
入出荷記録テーブル
入出荷日 入出荷時刻 箱番号 出荷数
20110304 12:30:00 A001 1
20110304 14:50:00 A001 ー1
・・・・
と
記録をデータ化してみては如何でしょうか?
箱が出入りするたびにデータが入る運用が不可欠ですのでバーコードリーダーなど
準備すると良いと思います。
その際に 出荷の際は 出荷数量が 1 戻しの場合は -1と入る様なフォームの
画面を準備します。
出荷可能な箱番号と出荷済みの箱番号を取り出す必要があると思いますが
出荷済みの箱番号は 出荷数の合計が 必ず 1
入荷済み 或いは 戻し後の箱番号は 出荷数の合計が 必ず 0
になりますので
ピボットテーブルを使うと一度に集計が出来るはずです。
CSVデータを取り込み後、箱番号で不一致クエリを実行させて入荷のデータにあって
入出荷記録のテーブルにない箱番号を抽出して追加クエリで
入出荷記録のテーブルにデータが追加されるマクロを準備しておくと
一度のボタン操作で作業がすむでしょう。
その他
出荷先テーブル 入出荷区分テーブル など準備して
それぞれをリレーションでつなぎ合わせたクエリで表示すると
入出荷日 入出荷時刻 入出荷先 箱番号 製品名 出荷数 区分
20110304 10:30:00 A001 PPP 0 新規
20110304 12:30:00 Aさん A001 PPP 1 出荷
20110304 14:50:00 Bさん A001 PPP ー1 返品
・・・
となる様にすればもっと便利になると思います。
テーブル、クエリの準備は経験や実際の実務に対する知識が必要ですので十分に検討して
実験を繰り返して最終決定を行うと良いです。
No.2
- 回答日時:
”箱”をメインテーブルとして
箱ID(自動)
箱コード番号
箱の”入荷日”と”出荷日”・・・? 箱単位で 出荷するのですか?
箱の中身の”製品名”での 対応は・・・?
>日付も箱番号も重複するためうまく考えられません
入荷日 と 出荷日は 別のフィールドを持つべきです。
・・・・・ Exell 的な 表を 思い浮かべてられると 躓きます。
追加で・・・ 製品テーブルはもちろん造らないとなりません。
製品こちらの 管理は? 等々でテーブルを考えないと・・・・
この回答への補足
007MUKADEさん
ありがとうございます。
箱単位で出荷します。
>入荷日 と 出荷日は 別のフィールドを持つべきです。
別フィールドということは別のテーブルってことでしょうか?
製品テーブルのことは、特に考えていません。
入荷日のデータは設備からやってくる
その中には一意のデータが存在しない
出荷は 箱 単位で出している
箱には多数の製品が混入されている
どうぞよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Oracle sqlで質問です。 Aテーブルの情報をBテーブルに更新かけたいです。 やりたいことは、Bテーブルの受 1 2023/05/17 11:17
- Excel(エクセル) Excelで在庫表(クエリ、ピボット) 2 2022/04/11 17:11
- 料理教室 公園の休憩テーブルの上に 住所入りの段ボールの粗大ゴミが!? 3 2022/05/04 12:51
- 統計学 統計量および正規分布と分散の加法性の演習問題です。 5 2023/07/29 10:46
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- 経済 【中国の不動産バブル崩壊は問題ないのでは?】 日本は物流倉庫の物流センター 5 2023/08/18 00:15
- その他(買い物・ショッピング) BOOKOFFの返品についての質問です。 BOOKOFFにて先日購入したPSPが改造されていました。 1 2022/04/10 20:39
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSで在庫管理 備考欄の組...
-
Accessで“0”ゼロ表示をする
-
Accessで、在庫表を作りたいの...
-
在庫管理と賞味期限管理
-
ダイソー×ガールズトレンド研究...
-
Access エラー 指定されたフィ...
-
差込印刷での全角表示について...
-
日付型のフィールドに空白を入...
-
SQL文で パラメータが少なすぎ...
-
アクセスのエラー「クエリには...
-
ACCESSのクエリで抽出条件「ま...
-
ACCESS クエリの抽出条件に他の...
-
2つのテーブルに共通するレコ...
-
「年」と「月」だけの日付の表...
-
Accessで、1つの項目に複数の...
-
Accessのテーブルのフィールド...
-
最新日のデータのみ抽出するク...
-
アクセスで追加した項目に全て...
-
フィールドの更新がない
-
アクセス・クエリの抽出条件(...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessで“0”ゼロ表示をする
-
楽天証券→SBI証券へ投資信託は...
-
Accessで在庫管理する時の在庫...
-
Access エラー 指定されたフィ...
-
アクセスのクエリで引き算をし...
-
ACCESSで在庫の入出庫履歴を作...
-
在庫管理と賞味期限管理
-
アクセスが・・・
-
ACCESSで在庫管理 備考欄の組...
-
Accessで、在庫表を作りたいの...
-
Accessのレポートで日々の在庫...
-
Accessで在庫管理をしたいです。
-
ACCESSで困っています。
-
アクセスでの在庫管理(在庫期...
-
ACCESSのテーブル設計
-
Access:テーブルの情報を参照...
-
エクセルVBAとアクセスでの在庫...
-
ACCESSで在庫管理を作成するよ...
-
ダイソー×ガールズトレンド研究...
-
兵庫県明石にある明石海峡大橋...
おすすめ情報