Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


164 / 2272 ツリー ←次へ | 前へ→

【12733】フォームにレコードが表示されない まき 15/3/17(火) 14:29 質問[未読]
【12734】Re:フォームにレコードが表示されない hatena 15/3/17(火) 15:04 回答[未読]
【12735】Re:フォームにレコードが表示されない まき 15/3/17(火) 15:31 質問[未読]
【12737】Re:フォームにレコードが表示されない まき 15/3/17(火) 16:57 発言[未読]
【12738】Re:フォームにレコードが表示されない hatena 15/3/17(火) 18:15 回答[未読]
【12741】Re:フォームにレコードが表示されない まき 15/3/18(水) 11:10 発言[未読]
【12743】Re:フォームにレコードが表示されない まき 15/3/18(水) 14:04 発言[未読]

【12733】フォームにレコードが表示されない
質問  まき  - 15/3/17(火) 14:29 -

引用なし
パスワード
   こんにちは、また基本的なことを聞いてしまうかもしれませんがよろしくお願いします
下記のクエリをレコードソースに持つフォームがあります

SELECT Q_クエリ.ID, Q_クエリ.発注ID, Q_クエリ.日付, Q_クエリ.処理済
FROM Q_クエリ
WHERE (((Q_クエリ.処理済)=No))
ORDER BY Q_クエリ.発注ID, Q_クエリ.日付;

フォームの構造:、
発注ID:コンボボックス(値ソースが下記)

SELECT Q_クエリ.発注ID
FROM Q_クエリ
GROUP BY Q_クエリ.発注ID, Q_クエリ.処理済
HAVING (((Q_クエリ.処理済)=No))
ORDER BY Q_クエリ.発注ID;

日付発注ID:テキストボックス コントロールソースは[日付発注ID]
日付:テキストボックス コントロールソースは[日付]

やりたいこと:発注IDのコンボボックスより、発注IDを選ぶと、[日付発注ID][日付]に該当レコードの値が出るようにしたい

ところが、コントロールには何も表示されません

どこがおかしいのかご指示願えませんでしょうか?

【12734】Re:フォームにレコードが表示されない
回答  hatena  - 15/3/17(火) 15:04 -

引用なし
パスワード
   >やりたいこと:発注IDのコンボボックスより、発注IDを選ぶと、[日付発注ID][日付]に該当レコードの値が出るようにしたい
>
>ところが、コントロールには何も表示されません

まずはこのフォームの目的はなんでしょうか。
既存レコードの該当するデータを参照するものなのか、
既存レコードの該当するデータを参照して更新するものなのか、
新規データを入力することが目的なのか。

さらには下記の点についても詳細を説明してください。

コンボボックスの値集合ソースを見ると、Q_クエリ.発注ID でグループ化しているので、発注ID はユニークではなく、同一発注IDのレコードが複数存在するということですね。
このフォームが単票フォームなら、複数のレコードのどのデータを表示するのでしょうか。

また、日付発注ID はレコードソースのクエリにはありませんがどこから持ってくるのでしょうか。

後コンボボックスのコントロールソースは空白ですか。

【12735】Re:フォームにレコードが表示されない
質問  まき  - 15/3/17(火) 15:31 -

引用なし
パスワード
   ▼hatena さん:
レスありがとうございます

>まずはこのフォームの目的はなんでしょうか。
>既存レコードの該当するデータを参照するものなのか、
>既存レコードの該当するデータを参照して更新するものなのか、
>新規データを入力することが目的なのか。

既存レコードの該当するデータを参照して更新するものです

>コンボボックスの値集合ソースを見ると、Q_クエリ.発注ID でグループ化しているので、発注ID はユニークではなく、同一発注IDのレコードが複数存在するということですね。
>このフォームが単票フォームなら、複数のレコードのどのデータを表示するのでしょうか。

具体的に言うと、取引会社から請求書が来たときに、該当レコードを呼び出して
請求書番号を入力するのですが、
同一発注ID=一枚の請求書となっているので同一発注IDのレコードは全て同じ請求書番号を持つことになります
全てのレコードにどうやって入力?となるとアクションクエリとなりますが
どれでもいいから該当発注IDのレコードを一つ呼び出して請求書番号を入力すれば、その発注IDを持つすべてのレコードに同じ請求書番号が入力される、という風にしたいです

>また、日付発注ID はレコードソースのクエリにはありませんがどこから持ってくるのでしょうか。

作ってから、いらないと思って消したのですが、消し切れてませんでした
今はそのコントロールは存在しません
失礼いたしました

>後コンボボックスのコントロールソースは空白ですか。

空白です

よろしくお願いします

【12737】Re:フォームにレコードが表示されない
発言  まき  - 15/3/17(火) 16:57 -

引用なし
パスワード
   すみません
必要かどうかわかりませんが補足します

どうして日付を表示したいかというと、ちゃんと正しいレコードが選ばれているか
確認したいためだけで日付フィールドの値を変更をすることはありません

【12738】Re:フォームにレコードが表示されない
回答  hatena  - 15/3/17(火) 18:15 -

引用なし
パスワード
   ▼まき さん:
>既存レコードの該当するデータを参照して更新するものです
>
>>コンボボックスの値集合ソースを見ると、Q_クエリ.発注ID でグループ化しているので、発注ID はユニークではなく、同一発注IDのレコードが複数存在するということですね。
>>このフォームが単票フォームなら、複数のレコードのどのデータを表示するのでしょうか。
>
>具体的に言うと、取引会社から請求書が来たときに、該当レコードを呼び出して
>請求書番号を入力するのですが、
>同一発注ID=一枚の請求書となっているので同一発注IDのレコードは全て同じ請求書番号を持つことになります
>全てのレコードにどうやって入力?となるとアクションクエリとなりますが
>どれでもいいから該当発注IDのレコードを一つ呼び出して請求書番号を入力すれば、その発注IDを持つすべてのレコードに同じ請求書番号が入力される、という風にしたいです

この説明から、テーブルの設計が正規化されていないということが推測されます。
正規化されていたら、複数のレコードの請求書番号を更新するというような処理は発生しません。

とりあえず現状のクエリに含まれるテーブルの名前とフィールド構成を提示してもらえますか。

一般的なテーブル設計例

発注テーブル
 発注ID 主キー
 請求書番号
 取引会社CD
 発注日

発注明細
 発注明細ID 主キー
 発注ID 発注テーブルの主キーとリンク
 商品CD
 数量

このような設計になっていれば、発注テーブルの請求書番号を更新すればいいだけです。

【12741】Re:フォームにレコードが表示されない
発言  まき  - 15/3/18(水) 11:10 -

引用なし
パスワード
   ▼hatena さん:
レスありがとうございます
正規化ですか。なんかいろいろ根本的にわかってない気がしてきました

クエリ及びテーブルの構造は以下の通りです
よろしくお願いします

発注テーブルの構造

[ID]主キー
[発注ID]
[日付]

発注明細テーブルの構造
[発注明細ID]主キー
[ID]発注テーブルの主キーとリンク
[発注ID]
[製品コード]
[数量]
[取引先コード]
[処理済]
[請求書番号]

Q_クエリの構造

SELECT 発注明細テーブル.ID, 発注テーブル.発注ID, 発注テーブル.日付, 発注明細テーブル.製品コード, 製品マスタ.品名, 発注明細テーブル.数量, 発注明細テーブル.取引先コード, 発注明細テーブル.処理済, 発注明細テーブル.請求書番号
FROM 発注テーブル INNER JOIN (発注明細テーブル INNER JOIN 製品マスタ ON 発注明細テーブル.製品コード = 製品マスタ.製品コード) ON 発注テーブル.ID = 発注明細テーブル.ID;

【12743】Re:フォームにレコードが表示されない
発言  まき  - 15/3/18(水) 14:04 -

引用なし
パスワード
   もう一度hatenaさんの最後のレスを読み返してみると

[取引先コード]
[請求書番号]

を主テーブル(発注テーブル)に入れられていますね
なぜ私はサブテーブルに入れているんだろう???
もしかしてこれが原因でしょうか・・・・?

164 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078188
(SS)C-BOARD v3.8 is Free