アプリ版:「スタンプのみでお礼する」機能のリリースについて

先日も同様の質問をさせて頂いたのですが、
結局うまくいかなかったので、どうかまた知恵を授けて下さい。。。

アクセスで検査結果のデータベースを作ろうと考えています。
アクセスでデータベースを作製するのはこれが初めてです。

1製品毎に製造番号をつけ、各テーブルの主キーにしています。
テーブルは検査のタイミング毎に分け、それぞれの検査項目をフィールドに設定しています。

理想としては、「検査品目登録」のテーブルに製造番号や製品名などの
詳細を入力すると、他のテーブルの製造番号にも自動で反映させたいのです。

思いついたのは追加クエリだったので作ってみたのですが、
「型変換エラー」になります。どうも過去に入力したデータの
件数だけエラーになるみたいです。
どうすれば回避できるのでしょうか?

また、そもそもの設計がまずいのでしたらご指摘頂きたいです。

大変お手数ですが、ご教示頂けると幸いです。
よろしくお願いします。

A 回答 (5件)

こんにちは。


なんとなく分かりました。
こちらでサンプルで作ってみました。
製品明細(テーブル) 製造番号(主キー・長整数型)
           生産日 日付型 
           詳細  テキスト型
工程検査(テーブル) 製造番号(主キー・長整数型)
           工程検査 テキスト型/適当に
           検査結果 YES/NO型
製品検査(テーブル) 製造番号(主キー・長整数型)
           製品検査 テキスト型/適当に
           検査結果 YES/NO型

リレーション設定
  製品明細・製造番号->工程検査・製造番号
           参照整合性 フィールド連鎖更新 連鎖削除にチェック (結合種類 製品明細データ全てに対し工程検査データ同じもの
  製品明細・製造番号->製品検査・製造番号
           参照整合性 フィールド連鎖更新 連鎖削除にチェック (結合種類 製品明細データ全てに対し製品検査データ同じもの
(見えづらいけど下図参照)

これらでクエリ作成
 テーブル全て表示させて(この時自動で工程検査と製品検査にリレーションが表示される場合、その線をクリックして削除してください。)
 製造番号/製品明細テーブル・製造日/製品明細テーブル・詳細/製品明細テーブル・工程検査/工程検査テーブル・
 検査結果/工程検査テーブル・製品検査/製品検査テーブル・検査結果/製品検査テーブル
これを検査結果入力クエリとでもつけて保存してください。

このクエリに最初製造番号と日付・詳細を入力すると製品明細テーブル
にだけデータが入るのでテーブル開いて確認してください。(工程検査・製品検査には何もありません)
その後もう一度クエリを開いて、工程検査や製品検査になんらかのデータを入れて閉じてください。
こうすると工程検査テーブルと製品検査テーブルに製造番号・検査・結果フィールドにデータが入ったはずです。

正直文字型でくくる理由は私には分かりませんが、長整数型でも
問題はありません(文字型は入力時間違って空白を入れても1文字となり、運用時にトラブルが出てくるので私は使ってません)

あとは、このクエリを基に全てOKフラグの付いたもので、日付指定した
ものとでもすれば御希望のデータでレポート作成できるかと・・

又、念のためですが、アクセスは基本的に5クライアント以内での
同時アクセスが制限としてありますので、クエリ作成には考慮が
必要です。又、製造番号呼び出しをフォーム作成時にどうするか等
色々出てくるかもしれません。。
 
「アクセス2003の追加クエリでのエラーに」の回答画像3

この回答への補足

こんにちわ。
色々とやってみました。
フォームの方でやりくりすれば、
なんとかうまくいきそうです。

>工程検査を入力せずに閉じると閉じられるのですが、
>もう一度クエリを開くと前に入力したデータは
>なくなっており、検査結果が入力できません。

↑の現象ですが、一つだけ1対多のテーブルがあり、
そのテーブルと製品明細(テーブル)のリレーションを
切ると解決しました。

実は製品によっては原料や仕掛品を検査するものがあり、
それを製造番号と仕掛品番号の連結キーにして、
製造番号でリレーションさせて、
製品毎にぶら下げようと考えていたのです。

これをうまく実現する方法はないでしょうか・・??

補足日時:2009/10/06 10:05
    • good
    • 0
この回答へのお礼

有り難うございます!!こんなに丁寧に詳しく教えて頂いて!

早速既存のファイルでちょっとやってみたところ、
うまくいきそうなのですが、
クエリに製造明細を入力して一旦閉じずに
工程検査結果などを入力すると、
「インデックスまたは主キーには、Null値を利用できません」
と出て、閉じられなくなります。

工程検査を入力せずに閉じると閉じられるのですが、
もう一度クエリを開くと前に入力したデータは
なくなっており、検査結果が入力できません。

でもどうかするとうまくいきそうな予感がしています。
ちょっとじっくりやってみます!
また経過をこちらで報告したいと思います。

お礼日時:2009/10/02 18:15

すみません!!こちらでお聞きしてしまいながらなのですが、


本来の御質問が製造番号や詳細を他のテーブルに自動に反映という
観点であった事を忘れておりました。
この点で言うと現在の御質問はリレーションでは不可能です。
(一対多の為)
現在の内容は、当初のQと切り離して考える内容のようです。
(もっと複雑になっているようなので)
よって、もっと広く回答を募る意味でも別スレを立てた方が
良さそうです。(すみません)

尚、自分であれば、前述した原料検査テーブル、仕掛品検査テーブル
を作成し、現品に登録番号を表示しておき、製品製造時に
使用した仕掛品・原料の番号を入力するテーブル
「製造番号・区分(原料・仕掛・etc)・管理番号」を作成
これに随時登録する。
製品明細テーブルと関連検査テーブル(前述した原料・仕掛の番号を
登録したテーブル)でクエリ作成。
製品明細テーブル・製造番号と関連検査テーブル・製造番号をつなぐ。
結合プロパティは製品明細テーブル・製造番号全レコードと該当する
関連検査テーブルだけを含める。
こうすると製造番号に対してどの仕掛品・原料を使ったかが表され、
この先に仕掛・原料の検査データを関連付け、製造番号で
関連するデータを引っ張る事が可能です。
但し、どちらかにデータを入れるとどちらかに自動に入る、というな
形にはなりませんが。。。
 もっと簡略でやり易い方法もあるかと思いますので、
 是非別スレをたてて、より良いものを完成させてください。
    • good
    • 0
この回答へのお礼

重ね重ね有り難うございます!

やはり一対多ではダメなのですね。
ご提案頂いた方法で行きたいと思います。
でも運用時ちょっと面倒かもしれないので、
もう少しだけ検討してみます。

実は最終的に管理図などまで自動で
算出できるようなものを考えているのですが、
ながーい道のりになりそうですね。。。
挫折しないよう頑張ります。

この度は本当にありがとうございました。
私も誰かの質問に答えるようにしたいと思いました!

お礼日時:2009/10/07 10:28

一歩進んだようで良かったですね。


>一つだけ1対多のテーブルがあり、そのテーブルと製品明細(テーブ
 ル)のリレーションを切ると解決しました。

 確かに参照整合性/連鎖更新・連鎖削除は一対一の場合のみですので
 その現象がでたものと思います。


>実は製品によっては原料や仕掛品を検査するものがあり、
それを製造番号と仕掛品番号の連結キーにして、
製造番号でリレーションさせて、
製品毎にぶら下げようと考えていたのです。

 これについて、少し質問です。
 製造番号(つまり1製品)に対し仕掛品も一対一ですか?
 それとも仕掛品複数(前在庫品+不足に伴う追加製造)ですか?
 (一対多)?
 原料についてはどうでしょうか?

 仕掛品・原料の検査のタイミングはどのようになりますか?
 製造番号が付与される前に独自に検査されるものとは推察しますが、
 であれば、原料管理番号・仕掛管理番号が先に発生し、既に
 検査されるのではないでしょうか?だとすれば製造番号と仕掛番号
 を合わせる事は不可能では?

 私が助言できるレベルかはわかりませんが、宜しければ教えて下さい。
    • good
    • 0
この回答へのお礼

いつも有り難うございます。

1製品に対し、仕掛品や原料は複数あります。
ですので一対多です。

製造の予定はかなり先の方まで立っているので、
それを見て製造番号は早めに付与できます。
後々トレースできるようにするために、
製造番号に仕掛品や原料を関連づけておきたいと考えています。

難しいでしょうか?

お礼日時:2009/10/06 15:39

こんばんわ。


前回の質問も見直したのですが、ひとつの製品に複数の検査項目があり
その検査項目毎にテーブルを作成した。こんな感じでしょうか。
その為統合するとフィールドが50にもなるということですね。
実際の運用手順はどうなるのでしょうか?
1)製品発生時の詳細登録。製造番号や製品内容などの詳細で数フィールド登録。
2)この製造番号に一か所或いは複数個所での検査実施?
3)検査結果の登録方法は製造番号、検査結果を登録?それとも
  検査番号を呼び出し、詳細を画面で確認しつつ結果入力?
4)これらのデータの活用方法(特に画面表示イメージは?)?
  詳細フィールドは製造番号でくくればいつでもひっぱってこれますので
  1テーブルにあればよいかと推察します。
    • good
    • 0
この回答へのお礼

ご回答有り難うございます。

前回の質問での回答の通りにやってみた所、
1つのテーブルは製造番号が反映されたのですが、
複数のテーブルではうまくいきませんでした。

最終的に実現したいことは、
検査結果をロット毎に集約し、
全項目合格した製品についての出荷許可書みたいな物を
自動で出せるソフト?です。

運用手順としてはtag1701さんのほとんど仰るとおりで、
1.製造予定を見て、製造番号・製造日・詳細など登録
2.工程検査→工程検査結果をそのテーブルに入力
3.製品検査→工程検査結果をそのテーブルに入力
(製造番号に複数箇所での実施です)
(結果の入力方法は、製造日で製品の詳細と検査項目を抽出して、
 表を埋めていく様な感じでやりたいと思います)
4.データの活用方法は、製造日を入力するとその日に作った
 製品と検査結果の一覧を出し、合否判定をして、
 プリントアウトして提出といった感じです。

>詳細フィールドは製造番号でくくればいつでもひっぱってこれますので
  1テーブルにあればよいかと推察します。

製造番号でくくりたいのですが、それがうまく行きません。
データ型はテキストで揃えてますし、何が問題なのか・・・。

お礼日時:2009/10/02 09:59

> 理想としては、「検査品目登録」のテーブルに製造番号や製品名などの


> 詳細を入力すると、他のテーブルの製造番号にも自動で反映させたいのです

すみません、なぜ同じデータを2つのテーブルに保存しようとするのでしょうか
必要なときに「検査品目登録」のテーブルから取り出せばいいのではないでしょうか。
    • good
    • 0
この回答へのお礼

早速の回答有り難うございます。

説明不足ですみません。。。
同じデータではありません。
1つの製品につき検査項目が複数あるため、
また同じ項目でも複数回違うタイミングで実施するため、
テーブルを分けた方がいいかなと思ったんです。
全項目を同じテーブルにしてしまえば良いと言えば
良いのですが、、、フィールドがかなり増えますので
どうしたものかと。

ですので、各テーブルに製品ロット固有の番号を付けて、
紐付けしようと考えました。

伝わりますでしょうか・・・?

お礼日時:2009/10/02 09:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!